

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
<a name="workflows-run-types"></a>

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 DINÂMICA. 

**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](https://aws.amazon.com/healthomics/pricing/).*

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
<a name="workflows-run-type-dynamic"></a>

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](#idempotent-code-examples).

## Exemplos de código para manuseio seguro de operações não idempotentes
<a name="idempotent-code-examples"></a>

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
<a name="workflows-run-type-static"></a>

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
<a name="workflows-run-types-calc"></a>

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. 