Exécuter les types de stockage dans les HealthOmics flux de travail - AWS HealthOmics

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécuter les types de stockage dans les HealthOmics flux de travail

Lorsque vous démarrez une exécution, HealthOmics alloue un espace de stockage temporaire au moteur de flux de travail à utiliser pendant l'exécution. HealthOmicsfournit le stockage d'exécution temporaire sous forme de système de fichiers.

Pour un flux de travail ou une exécution de flux de travail donné, vous pouvez choisir le stockage des exécutions dynamiques ou statiques. Par défaut, HealthOmics fournit un stockage d'exécution statique.

Note

L'utilisation de l'espace de stockage entraîne des frais sur votre compte. Pour obtenir des informations sur les tarifs relatifs au stockage statique et dynamique, consultez la section HealthOmicsTarification.

Les sections suivantes fournissent des informations à prendre en compte lors du choix du type de stockage d'exécution à utiliser.

Stockage dynamique

Nous recommandons d'utiliser le stockage dynamique pour la plupart des exécutions, y compris les exécutions qui nécessitent des temps de démarrage plus rapides, les exécutions pour lesquelles vous ne connaissez pas à l'avance les besoins de stockage et pour les cycles de test de développement itératifs.

Il n'est pas nécessaire d'estimer le stockage ou le débit requis pour l'exécution. HealthOmics augmente ou diminue dynamiquement la taille du stockage, en fonction de l'utilisation du système de fichiers pendant l'exécution. HealthOmics adapte également le débit de manière dynamique en fonction des besoins du flux de travail. Une exécution n'échoue jamais en raison d'une erreur de stockage insuffisant pour le système de fichiers.

Le stockage à exécution dynamique permet de réduire le provisioning/deprovisioning temps de stockage par exécution par rapport au stockage à exécution statique. Une configuration plus rapide est un avantage pour la plupart des flux de travail, mais également pendant development/test les cycles.

Une fois l'exécution terminée (chemin de réussite ou chemin d'échec), l'opération d'API GetRun renvoie le stockage maximal utilisé par l'exécution dans le champ StorageCapacity. Vous pouvez également trouver ces informations dans les journaux du manifeste d'exécution situés dans le groupe de omics journaux. Pour une exécution de stockage dynamique qui se termine dans les 2 heures, la valeur de stockage maximale peut ne pas être disponible.

Pour le stockage dynamique, l'exécution approvisionne un système de fichiers utilisant le protocole NFS. NFS considère les opérations CREATE, DELETE et RENAME comme non idempotentes, ce qui peut parfois créer des conditions de concurrence pour ces opérations que votre code doit gérer correctement. Par exemple, votre code ne doit pas échouer s'il tente de supprimer un fichier qui n'existe pas. Avant d'adopter le stockage à exécution dynamique, nous vous recommandons d'ajuster le code de votre flux de travail pour le rendre résilient aux opérations de fichiers non idempotentes. Consultez Exemples de code pour une gestion sûre des opérations non idempotentes.

Exemples de code pour une gestion sûre des opérations non idempotentes

L'exemple python suivant montre comment supprimer un fichier sans échec s'il n'existe pas.

import os import errno def remove_file(file_path): try: os.remove(file_path) except OSError as e: # If the error is "No such file or directory", ignore it (or log it) if e.errno != errno.ENOENT: # Otherwise, raise the error raise # Example usage remove_file("myfile")

Les exemples suivants utilisent le shell Bash. Pour supprimer un fichier en toute sécurité même s'il n'existe pas, utilisez :

rm -f my_file

Pour déplacer (renommer) un fichier en toute sécurité, exécutez la commande move uniquement si le fichier old_name existe dans le répertoire actuel.

[ -f old_name ] && mv old_name new_name

Pour créer un répertoire, utilisez la commande suivante :

mkdir -p mydir/subdir/

Stockage statique

Pour le stockage statique, l'exécution approvisionne un système de fichiers utilisant le protocole Lustre. Ce protocole est résilient aux opérations de fichiers non idempotentes par défaut. Il n'est pas nécessaire d'ajuster le code de votre flux de travail pour gérer les opérations de fichiers non idempotentes.

HealthOmics alloue une quantité fixe de stockage d'exécution. Vous spécifiez cette valeur lorsque vous démarrez l'exécution. Le stockage d'exécution par défaut est de 1200 GiB, si vous ne spécifiez aucune valeur. Lorsque vous spécifiez une valeur pour la taille de stockage dans la demande d' StartRun API, le système arrondit la valeur au multiple le plus proche de 1 200 GiB. Si cette taille de stockage n'est pas disponible, elle est arrondie au multiple le plus proche de 2 400 GiB.

Pour le stockage statique, HealthOmics provisionne les valeurs de débit suivantes :

  • Débit de référence de 200 MB/s par TiB de capacité de stockage provisionnée.

  • Débit en rafale jusqu'à 1 300 MB/s par TiB de capacité de stockage provisionnée.

Si la taille de stockage spécifiée est trop faible, l'exécution échoue avec un message d'erreur « Stockage insuffisant pour le système de fichiers ». Le stockage statique convient parfaitement aux flux de travail prévisibles dont les exigences de stockage sont connues.

Le stockage statique convient aux charges de travail volumineuses et surchargées avec une grande simultanéité des tâches (par exemple, un grand volume d' RNASeq échantillons traités en parallèle). Il fournit un débit de système de fichiers supérieur par GiB et un coût par GiB inférieur à celui du stockage à exécution dynamique.

Calcul de l'espace de stockage statique requis

Un flux de travail nécessite une capacité supplémentaire lorsqu'il utilise un stockage d'exécution statique (par rapport au stockage d'exécution dynamique), car l'installation du système de fichiers de base utilise 7 % de la capacité du système de fichiers statique.

Si vous exécutez un flux de travail de stockage dynamique pour mesurer le stockage maximal utilisé par l'exécution, utilisez le calcul suivant pour déterminer la quantité minimale de stockage statique requise :

static storage required = maximum storage in GiB used by the dynamic run storage + (total static file system size in GiB * 0.07)

Par exemple :

Maximum storage measured from a dynamic run storage workflow run: 500GiB File system size: 1200GiB 7% of the file system size: 84GiB 500 + 84 = 584GiB of static run storage required for this run.

Par conséquent, 1 200 Go (capacité minimale pour le stockage statique) sont suffisants pour cette exécution.