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
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
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. 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.
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 desbalanceado ativado OSTs 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 desbalanceado ativado OSTs
O Amazon FSx for Lustre distribui as novas faixas de arquivos uniformemente. OSTs No entanto, seu sistema de arquivos ainda pode ficar desbalanceado devido aos padrões de E/S 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 comandolfs 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 executarlfs 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 comandolfs migrate
conclua a migração, o comandolfs 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
-
Execute uma instância de cliente relativamente grande (como o tipo de EC2
c5n.4xlarge
instância Amazon) para montar no sistema de arquivos. 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'
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 EC2c5n.4xlarge
instância Amazon tem 16 vCPUs, então você pode usar16
(ou um valor < 16) paranproc
.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 kill -9
e reduzir o número de threads (valornproc
) 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
, verifiqueMinimum
. Se seu script descobrir OSTs que estão mais de 85% cheios, quando a métrica estiver próxima de 15%, usectrl-c
ou interrompakill -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.