Risoluzione dei problemi di storage - FSxper Lustre

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di storage

In alcuni casi, potrebbero verificarsi problemi di archiviazione con il file system. È possibile risolvere questi problemi utilizzando lfs comandi, come il lfs migrate comando.

Errore di scrittura dovuto alla mancanza di spazio sulla destinazione di archiviazione

È possibile verificare l'utilizzo dello storage del file system utilizzando il lfs df -h comando, come descritto inLayout di archiviazione del file system. Il filesystem_summary campo riporta l'utilizzo totale dello storage del file system.

Se l'utilizzo del disco del file system è del 100%, valuta la possibilità di aumentare la capacità di archiviazione del file system. Per ulteriori informazioni, consulta Gestione della capacità di archiviazione.

Se l'utilizzo dello storage del file system non è al 100% e si verificano comunque errori di scrittura, è possibile che il file su cui si sta scrivendo sia stato copiato su un OST foglio pieno.

Operazione da eseguire

  • Se molti file OSTs sono pieni, aumenta la capacità di archiviazione del file system. Verificate la presenza di uno storage non bilanciato attivo OSTs seguendo le azioni della Archiviazione sbilanciata su OSTs sezione.

  • Se non OSTs sei pieno, ottimizza la dimensione del buffer della pagina sporca del client applicando la seguente regolazione a tutte le istanze del client:

    sudo lctl set_param osc.*.max_dirty_mb=64

Archiviazione sbilanciata su OSTs

Amazon FSx for Lustre distribuisce nuove strisce di file in modo uniforme su tutto il territorio. OSTs Tuttavia, il file system potrebbe ancora diventare sbilanciato a causa dei modelli di I/O o del layout di archiviazione dei file. Di conseguenza, alcune destinazioni di storage possono diventare piene mentre altre rimangono relativamente vuote.

È possibile utilizzare il lfs migrate comando per spostare file o cartelle da una cartella più piena a una meno piena. OSTs È possibile utilizzare il lfs migrate comando in modalità a blocchi o non a blocchi.

  • La modalità a blocchi è la modalità predefinita per il lfs migrate comando. Quando viene eseguito in modalità a blocchi, acquisisce lfs migrate innanzitutto un blocco di gruppo su file e directory prima della migrazione dei dati per impedire modifiche ai file, quindi rilascia il blocco al termine della migrazione. Impedendo ad altri processi di modificare i file, la modalità a blocchi impedisce a questi processi di interrompere la migrazione. Lo svantaggio è che impedire a un'applicazione di modificare un file può causare ritardi o errori nell'applicazione.

  • La modalità non a blocchi è abilitata per il lfs migrate comando con l'opzione. -n Quando vengono eseguiti lfs migrate in modalità non a blocchi, altri processi possono comunque modificare i file che vengono migrati. Se un processo modifica un file prima del lfs migrate completamento della migrazione, non lfs migrate riuscirà a migrare quel file, lasciando il file con il suo layout originale a strisce.

Ti consigliamo di utilizzare la modalità non a blocchi, poiché è meno probabile che interferisca con l'applicazione.

Operazione da eseguire

  1. Avvia un'istanza client relativamente grande (come il tipo di EC2 c5n.4xlarge istanza Amazon) da montare sul file system.

  2. Prima di eseguire lo script in modalità non blocco o lo script in modalità blocco, esegui i seguenti comandi su ogni istanza del client per accelerare il processo:

    sudo lctl set_param 'mdc.*.max_rpcs_in_flight=60' sudo lctl set_param 'mdc.*.max_mod_rpcs_in_flight=59'
  3. Avvia una sessione sullo schermo ed esegui lo script in modalità non blocco o lo script in modalità blocco. Assicurati di modificare le variabili appropriate negli script:

    • Script in modalità non a blocchi:

      #!/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 in modalità blocco:

      • Sostituisci i valori OSTS con i valori del tuoOSTs.

      • Fornisci un valore intero nproc per impostare il numero di processi max-procs da eseguire in parallelo. Ad esempio, il tipo di EC2 c5n.4xlarge istanza Amazon ne ha 16vCPUs, quindi puoi usare 16 (o un valore < 16) pernproc.

      • Fornisci il percorso della directory di montaggio inmnt_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

Note

  • Se notate che c'è un impatto sulle prestazioni delle letture del file system, potete interrompere le migrazioni in qualsiasi momento utilizzando ctrl-c o k ill -9 e ridurre il numero di thread (nprocvalore) a un numero inferiore (ad esempio 8) e riprendere la migrazione dei file.

  • Il lfs migrate comando avrà esito negativo su un file aperto anche dal carico di lavoro del client. Genererà un errore e passerà al file successivo; pertanto, se si accede a molti file, lo script non sarà in grado di migrare alcun file e ciò si rifletterà man mano che la migrazione procede molto lentamente.

  • È possibile monitorare OST l'utilizzo utilizzando uno dei seguenti metodi

    • Al momento del montaggio sul client, esegui il comando seguente per monitorare l'OSTOSTutilizzo e individuare un utilizzo superiore all'85%:

      lfs df -h |egrep '( 8[5-9]| 9[1-9]|100)%'
    • Controlla la CloudWatch metrica di AmazonOST FreeDataStorageCapacity, verificaMinimum. Se lo script rileva OSTs che è pieno per oltre l'85%, quando la metrica è vicina al 15%, usa ctrl-c o kill -9 per interrompere la migrazione.

  • Potresti anche prendere in considerazione la possibilità di modificare la configurazione dello stripe del tuo file system o di una directory, in modo che i nuovi file vengano distribuiti su più destinazioni di archiviazione. Per ulteriori informazioni, vedere in. Stripaggio dei dati nel file system