As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Execute tipos de armazenamento em HealthOmics fluxos de trabalho
Quando você inicia uma execução, HealthOmics aloca armazenamento de execução temporário para o mecanismo de fluxo de trabalho usar durante a execução. HealthOmicsfornece o armazenamento temporário de execução como um sistema de arquivos.
Para um determinado fluxo de trabalho ou execução de fluxo de trabalho, você pode escolher o armazenamento de execução dinâmico ou estático. Por padrão, HealthOmics fornece armazenamento de execução estática.
nota
O uso do armazenamento em execução gera cobranças em sua conta. Para obter informações sobre preços sobre armazenamento de execução estática e dinâmica, consulte HealthOmicspreços
As seções a seguir fornecem informações a serem consideradas ao decidir qual tipo de armazenamento de execução usar.
Armazenamento de execução dinâmica
Recomendamos usar o armazenamento de execução dinâmica para a maioria das execuções, incluindo execuções que exigem tempos de início mais rápidos, execuções nas quais você não conhece as necessidades de armazenamento com antecedência e para ciclos de testes de desenvolvimento iterativos.
Você não precisa estimar o armazenamento ou a taxa de transferência necessários para a execução. HealthOmics aumenta ou diminui dinamicamente o tamanho do armazenamento, com base na utilização do sistema de arquivos durante a execução. HealthOmics também dimensiona dinamicamente a produtividade com base nas necessidades do fluxo de trabalho. Uma execução nunca falha devido a um erro de falta de armazenamento no sistema de arquivos.
O armazenamento de execução dinâmica fornece um provisioning/deprovisioning tempo mais rápido do que o armazenamento de execução estática. A configuração mais rápida é uma vantagem para a maioria dos fluxos de trabalho e também durante development/test os ciclos.
Após a conclusão da execução (caminho de sucesso ou caminho de falha), a operação da API GetRun retorna o armazenamento máximo usado pela execução no campo StorageCapacity. Você também pode encontrar essas informações nos registros do manifesto de execução localizados no grupo de omics registros. Para uma execução de armazenamento dinâmico concluída em 2 horas, o valor máximo de armazenamento pode não estar disponível.
Para armazenamento dinâmico de execução, a execução provisiona um sistema de arquivos que usa o protocolo NFS. O NFS trata as operações CREATE, DELETE e RENAME de arquivos como não idempotentes, o que pode ocasionalmente levar a condições de corrida para essas operações que seu código precisa manipular normalmente. Por exemplo, seu código não deve falhar se tentar excluir um arquivo que não existe. Antes de adotar o armazenamento dinâmico de execução, recomendamos ajustar o código do fluxo de trabalho para torná-lo resiliente a operações de arquivo não idempotentes. Consulte Exemplos de código para manuseio seguro de operações não idempotentes.
Exemplos de código para manuseio seguro de operações não idempotentes
O exemplo de python a seguir mostra como excluir um arquivo sem falhar se o arquivo não existir.
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")
Os exemplos a seguir usam o shell Bash. Para remover um arquivo com segurança, mesmo que ele não exista, use:
rm -f my_file
Para mover (renomear) um arquivo com segurança, execute o comando move somente se o arquivo old_name
existir no diretório atual.
[ -f old_name ] && mv old_name new_name
Para criar um diretório, use o seguinte comando:
mkdir -p mydir/subdir/
Armazenamento de execução estática
Para armazenamento estático de execução, a execução provisiona um sistema de arquivos que usa o protocolo Lustre. Por padrão, esse protocolo é resiliente a operações de arquivos não idempotentes. Você não precisa ajustar o código do fluxo de trabalho para lidar com operações de arquivo não idempotentes.
HealthOmics aloca uma quantidade fixa de armazenamento em execução. Você especifica esse valor ao iniciar a execução. O armazenamento de execução padrão é 1200 GiB, se você não especificar um valor. Quando você especifica um valor para o tamanho do armazenamento na solicitação da StartRun API, o sistema arredonda o valor para o múltiplo mais próximo de 1200 GiB. Se esse tamanho de armazenamento não estiver disponível, ele será arredondado para o múltiplo mais próximo de 2400 GiB.
Para armazenamento de execução estática, HealthOmics provisiona os seguintes valores de taxa de transferência:
-
Taxa de transferência básica de 200 por MB/s TiB de capacidade de armazenamento provisionada.
-
Taxa de transferência máxima de até 1300 por MB/s TiB de capacidade de armazenamento provisionada.
Se o tamanho de armazenamento especificado for muito baixo, a execução falhará com um erro de Falta de armazenamento para o sistema de arquivos. O armazenamento de execução estática é uma boa opção para fluxos de trabalho previsíveis com requisitos de armazenamento conhecidos.
O armazenamento de execução estática é adequado para cargas de trabalho grandes e intermitentes com alta simultaneidade de tarefas (por exemplo, um grande volume de RNASeq amostras processadas paralelamente). Ele fornece maior taxa de transferência do sistema de arquivos por GiB e menor custo por GiB do que o armazenamento de execução dinâmica.
Calculando o armazenamento de execução estática necessário
Um fluxo de trabalho exige capacidade adicional quando usa armazenamento de execução estática (em comparação com o armazenamento de execução dinâmica) porque a instalação básica do sistema de arquivos usa 7% da capacidade estática do sistema de arquivos.
Se você executar um fluxo de trabalho dinâmico de armazenamento de execução para medir o armazenamento máximo usado pela execução, use o cálculo a seguir para determinar a quantidade mínima de armazenamento estático necessária:
static storage required = maximum storage in GiB used by the dynamic run storage + (total static file system size in GiB * 0.07)
Por exemplo:
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.
Portanto, 1200 GiB (a capacidade mínima para armazenamento de execução estática) é suficiente para essa execução.