

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á.

# Solução de problemas de armazenamento
<a name="lfs-migrate-ts"></a>

Em alguns casos, você pode ter problemas de armazenamento com seu sistema de arquivos. Você pode solucionar esses problemas usando comandos `lfs`, como o comando `lfs migrate`.

## Erro de gravação devido à falta de espaço no destino de armazenamento
<a name="lfs-migrate-no-storage"></a>

Você pode verificar o uso de armazenamento do seu sistema de arquivos usando o comando `lfs df -h`, conforme descrito em [Layout de armazenamento do sistema de arquivos](performance.md#storage-layout). O campo `filesystem_summary` relata o uso total do armazenamento do sistema de arquivos.

Se o uso do disco do sistema de arquivos estiver em 100%, considere aumentar a capacidade de armazenamento do sistema de arquivos. Para obter mais informações, consulte [Como gerenciar a capacidade de armazenamento](managing-storage-capacity.md).

Se o uso do armazenamento do sistema de arquivos não estiver em 100% e você ainda receber erros de gravação, o arquivo no qual você está gravando pode estar distribuído em um OST cheio.

**Medida a ser tomada**
+ Se muitos deles OSTs estiverem cheios, aumente a capacidade de armazenamento do seu sistema de arquivos. Verifique se há armazenamento OSTs desbalanceado seguindo as ações da [Armazenamento desequilibrado ativado OSTs](#lfs-migrate-unbalanced-storage) seção.
+ Se você não OSTs estiver cheio, ajuste o tamanho do buffer da página suja do cliente aplicando o seguinte ajuste a todas as instâncias do seu cliente:

  ```
  sudo lctl set_param osc.*.max_dirty_mb=64
  ```

## Armazenamento desequilibrado ativado OSTs
<a name="lfs-migrate-unbalanced-storage"></a>

O Amazon FSx for Lustre distribui as novas faixas de arquivos uniformemente. OSTs No entanto, seu sistema de arquivos ainda pode ficar desbalanceado devido a I/O padrões ou ao layout de armazenamento de arquivos. Como resultado, alguns destinos de armazenamento podem ficar cheios, enquanto outros permanecem relativamente vazios.

Você usa o `lfs migrate` comando para mover arquivos ou diretórios de mais cheios para menos cheios. OSTs Você pode usar o comando `lfs migrate` no modo de bloqueio ou sem bloqueio.
+ O **modo de bloqueio** é o modo padrão para o comando `lfs migrate`. Quando executado no modo de bloqueio, o comando `lfs migrate` primeiro adquire um bloqueio de grupo nos arquivos e diretórios antes da migração de dados para evitar modificações nos arquivos e, em seguida, libera o bloqueio quando a migração é concluída. Ao impedir que outros processos modifiquem os arquivos, o modo de bloqueio impede que esses processos interrompam a migração. A desvantagem é que impedir que uma aplicação modifique um arquivo pode resultar em atrasos ou erros na aplicação.
+ O **modo sem bloqueio** é habilitado para o comando `lfs migrate` com a opção `-n`. Ao executar `lfs migrate` no modo sem bloqueio, outros processos ainda podem modificar os arquivos que estão sendo migrados. Se um processo modificar um arquivo antes que o comando `lfs migrate` conclua a migração, o comando `lfs migrate` falhará na migração desse arquivo, deixando o arquivo com seu layout de faixa original.

Recomendamos que você use o modo sem bloqueio, pois é menos provável que ele interfira na sua aplicação.

**Medida a ser tomada**

1. Execute uma instância de cliente relativamente grande (como o tipo de instância `c5n.4xlarge` do Amazon EC2) para montagem no sistema de arquivos.

1. Antes de executar o script do modo sem bloqueio ou o script do modo de bloqueio, primeiro execute os seguintes comandos em cada instância do cliente para acelerar o processo:

   ```
   sudo lctl set_param 'mdc.*.max_rpcs_in_flight=60'
   sudo lctl set_param 'mdc.*.max_mod_rpcs_in_flight=59'
   ```

1. Inicie uma sessão de tela e execute o script do modo sem bloqueio ou do modo de bloqueio. Certifique-se de alterar as variáveis apropriadas nos scripts:
   + Script de modo sem bloqueio:

     ```
     #!/bin/bash
     
     # UNCOMMENT THE FOLLOWING LINES:
     #
     # TRY_COUNT=0
     # MAX_MIGRATE_ATTEMPTS=100
     # OSTS="fsname-OST0000_UUID"
     # DIR_OR_FILE_MIGRATED="/mnt/subdir/"
     # BATCH_SIZE=10
     # PARALLEL_JOBS=16 # up to max-procs processes, set to 16 if client is c5n.4xlarge with 16 vcpu
     # LUSTRE_STRIPING_CONFIG="-E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32" # should be consistent with the existing striping setup
     #
     
     if [ -z "$TRY_COUNT" -o -z "$MAX_MIGRATE_ATTEMPTS" -o -z "$OSTS" -o -z "$DIR_OR_FILE_MIGRATED" -o -z "$BATCH_SIZE" -o -z "$PARALLEL_JOBS" -o -z "$LUSTRE_STRIPING_CONFIG" ]; then
         echo "Some variables are not set."
         exit 1
     fi
     
     echo "lfs migrate starts"
     while true; do
         output=$(sudo lfs find ! -L released --ost $OSTS --print0 $DIR_OR_FILE_MIGRATED | shuf -z | /bin/xargs -0 -P $PARALLEL_JOBS -n $BATCH_SIZE sudo lfs migrate -n $LUSTRE_STRIPING_CONFIG 2>&1)
         if [[ $? -eq 0 ]]; then
             echo "lfs migrate succeeds for $DIR_OR_FILE_MIGRATED at the $TRY_COUNT attempt, exiting."
             exit 0
         elif [[ $? -eq 123 ]]; then 
             echo "WARN: Target data objects are not located on these OSTs. Skipping lfs migrate"
             exit 1
         else
             echo "lfs migrate fails for $DIR_OR_FILE_MIGRATED at the $TRY_COUNT attempt, retrying..."
             if (( ++TRY_COUNT >= MAX_MIGRATE_ATTEMPTS )); then
                 echo "WARN: Exceeds max retry attempt. Skipping lfs migrate for $DIR_OR_FILE_MIGRATED. Failed with the following error"
                 echo $output
                 exit 1
             fi
         fi
     done
     ```
   + Script de modo de bloqueio:
     + Substitua os valores em `OSTS` pelos valores do seu OSTs.
     + Forneça um valor inteiro para `nproc` a fim de definir o número de processos max-procs a serem executados em paralelo. Por exemplo, o tipo de `c5n.4xlarge` instância do Amazon EC2 tem 16 vCPUs, então você pode usar `16` (ou um valor < 16) para. `nproc`
     + Forneça o caminho do diretório de montagem em `mnt_dir_path`.

     ```
     # find all OSTs with usage above a certain threshold; for example, greater than or equal to 85% full 
     for OST in $(lfs df -h |egrep '( 8[5-9]| 9[0-9]|100)%'|cut -d' ' -f1); do echo ${OST};done|tr '\012' ','
     
     # customer can also just pass OST values directly to OSTS variable
     OSTS='dzfevbmv-OST0000_UUID,dzfevbmv-OST0002_UUID,dzfevbmv-OST0004_UUID,dzfevbmv-OST0005_UUID,dzfevbmv-OST0006_UUID,dzfevbmv-OST0008_UUID'
     
     nproc=<Run up to max-procs processes if client is c5n.4xlarge with 16 vcpu, this value can be set to 16>
     
     mnt_dir_path=<mount dir, e.g. '/my_mnt'>
     
     lfs find ${mnt_dir_path} --ost ${OSTS}| xargs -P ${nproc} -n2 lfs migrate -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32
     ```

**Observações**
+ Se você perceber que há um impacto na performance das leituras do sistema de arquivos, será possível interromper as migrações a qualquer momento usando `ctrl-c` ou k`ill -9` e reduzir o número de threads (valor `nproc`) de volta para um número menor (como 8) e continuar a migração dos arquivos.
+ O comando `lfs migrate` falhará em um arquivo que também é aberto pela workload do cliente. Isso vai gerar um erro e mover para o próximo arquivo; portanto, é possível que, se houver muitos arquivos sendo acessados, o script não consiga migrar nenhum arquivo e isso será refletido como progresso muito lento da migração.
+ Você pode monitorar o uso do OST usando qualquer um dos métodos a seguir
  + Na montagem do cliente, execute o seguinte comando para monitorar o uso do OST e encontrar o OST com uso maior que 85%:

    ```
    lfs df -h |egrep '( 8[5-9]| 9[1-9]|100)%'
    ```
  + Verifique a CloudWatch métrica da Amazon`OST FreeDataStorageCapacity`, verifique`Minimum`. Se seu script descobrir OSTs que estão mais de 85% cheios, quando a métrica estiver próxima de 15%, use `ctrl-c` ou interrompa `kill -9` a migração.
+ Você também pode considerar alterar a configuração de distribuição do seu sistema de arquivos ou de um diretório para que os novos arquivos sejam distribuídos em vários destinos de armazenamento. Para obter mais informações, consulte em [Distribuição de dados no sistema de arquivos](performance.md#striping-data). 