Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Fehlerbehebung bei Speicherproblemen
In einigen Fällen können Speicherprobleme mit Ihrem Dateisystem auftreten. Sie können diese Probleme mithilfe von lfs
Befehlen wie dem lfs migrate
Befehl beheben.
Schreibfehler, da auf dem Speicherziel kein Speicherplatz verfügbar ist
Sie können die Speichernutzung Ihres Dateisystems mithilfe des lfs df -h
Befehls überprüfen, wie unter beschriebenSpeicherlayout des Dateisystems. Das filesystem_summary
Feld gibt die gesamte Speichernutzung des Dateisystems an.
Wenn die Festplattenauslastung des Dateisystems bei 100% liegt, sollten Sie erwägen, die Speicherkapazität Ihres Dateisystems zu erhöhen. Weitere Informationen finden Sie unter Verwaltung der Speicherkapazität.
Wenn die Speicherauslastung des Dateisystems nicht zu 100% beträgt und Sie immer noch Schreibfehler erhalten, wird die Datei, in die Sie schreiben, möglicherweise auf eine Datei verteiltOST, die voll ist.
Maßnahme
Wenn viele Ihrer Dateien voll OSTs sind, erhöhen Sie die Speicherkapazität Ihres Dateisystems. Prüfen Sie, ob unsymmetrischer Speicher aktiviert ist, OSTs indem Sie den Anweisungen im Unausgeglichener Speicher aktiviert OSTs Abschnitt folgen.
Wenn Sie nicht voll OSTs sind, optimieren Sie die Größe des Client-Buffers für Dirty Page, indem Sie die folgende Optimierung auf alle Ihre Client-Instances anwenden:
sudo lctl set_param osc.*.max_dirty_mb=64
Unausgeglichener Speicher aktiviert OSTs
Amazon FSx for Lustre verteilt neue Dateistreifen gleichmäßig. OSTs Ihr Dateisystem kann jedoch aufgrund von I/O-Mustern oder dem Dateispeicherlayout immer noch aus dem Gleichgewicht geraten. Dies kann dazu führen, dass einige Speicherziele voll werden, während andere relativ leer bleiben.
Sie verwenden den lfs migrate
Befehl, um Dateien oder Verzeichnisse von „mehr voll“ in „weniger voll“ zu verschieben. OSTs Sie können den lfs migrate
Befehl entweder im Blockmodus oder im Blockmodus verwenden.
Der Blockmodus ist der Standardmodus für den
lfs migrate
Befehl. Bei der Ausführung im Blockmodus wird vor der Datenmigrationlfs migrate
zunächst eine Gruppensperre für die Dateien und Verzeichnisse eingerichtet, um Änderungen an den Dateien zu verhindern. Die Sperre wird dann aufgehoben, wenn die Migration abgeschlossen ist. Indem der Blockmodus verhindert, dass andere Prozesse die Dateien ändern, verhindert er, dass diese Prozesse die Migration unterbrechen. Der Nachteil ist, dass das Verhindern der Änderung einer Datei durch eine Anwendung zu Verzögerungen oder Fehlern bei der Anwendung führen kann.Der blockfreie Modus ist für den
lfs migrate
Befehl mit der-n
Option aktiviert. Wenn sielfs migrate
im blockfreien Modus ausgeführt werden, können andere Prozesse die Dateien, die migriert werden, trotzdem ändern. Wenn ein Prozess eine Datei ändert, bevor die Migrationlfs migrate
abgeschlossen ist, schlägt die Migration dieser Dateilfs migrate
fehl und die Datei behält ihr ursprüngliches Stripe-Layout.
Wir empfehlen Ihnen, den Modus ohne Blockierung zu verwenden, da es weniger wahrscheinlich ist, dass er Ihre Anwendung beeinträchtigt.
Maßnahme
-
Starten Sie eine relativ große Client-Instance (z. B. den EC2
c5n.4xlarge
Amazon-Instance-Typ), um sie im Dateisystem zu mounten. Bevor Sie das Skript für den Nichtblockmodus oder das Blockmodus-Skript ausführen, führen Sie zunächst die folgenden Befehle auf jeder Client-Instance aus, um den Vorgang zu beschleunigen:
sudo lctl set_param 'mdc.*.max_rpcs_in_flight=60' sudo lctl set_param 'mdc.*.max_mod_rpcs_in_flight=59'
Starten Sie eine Bildschirmsitzung und führen Sie das Skript für den Nichtblockmodus oder das Blockmodus-Skript aus. Achten Sie darauf, die entsprechenden Variablen in den Skripten zu ändern:
Skript im Nicht-Blockmodus:
#!/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
Blockmodus-Skript:
Ersetzen Sie die Werte in
OSTS
durch die Werte von IhremOSTs.Geben Sie einen Integer-Wert für an
nproc
, um die Anzahl der Max-Procs-Prozesse festzulegen, die parallel ausgeführt werden sollen. Der EC2c5n.4xlarge
Amazon-Instance-Typ hat beispielsweise 16vCPUs, sodass Sie16
(oder einen Wert < 16) für verwenden könnennproc
.Geben Sie Ihren Mount-Verzeichnispfad in ein
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
Hinweise
Wenn Sie feststellen, dass die Leistung der Lesevorgänge des Dateisystems beeinträchtigt wird, können Sie die Migrationen jederzeit mit
ctrl-c
oder kill -9
beenden und die Anzahl der Threads (nproc
Wert) wieder auf einen niedrigeren Wert (z. B. 8) reduzieren und die Migration der Dateien fortsetzen.Der
lfs migrate
Befehl schlägt bei einer Datei fehl, die auch vom Client-Workload geöffnet wird. Es wird ein Fehler ausgegeben und zur nächsten Datei übergegangen. Daher ist es möglich, dass das Skript keine Dateien migrieren kann, wenn auf viele Dateien zugegriffen wird, und dies wird angezeigt, da die Migration sehr langsam voranschreitet.Sie können die OST Nutzung mit einer der folgenden Methoden überwachen
Führen Sie auf dem Client-Mount den folgenden Befehl aus, um die OST Nutzung zu überwachen und herauszufinden, OST ob die Auslastung mehr als 85% beträgt:
lfs df -h |egrep '( 8[5-9]| 9[1-9]|100)%'
Überprüfen Sie die CloudWatch Amazon-Metrik
OST FreeDataStorageCapacity
, überprüfen SieMinimum
. Wenn Ihr Skript feststellt, OSTs dass mehr als 85% voll sind, verwenden Siectrl-c
oder, um die Migrationkill -9
zu beenden, wenn die Metrik fast 15% beträgt.
Sie können auch erwägen, die Stripe-Konfiguration Ihres Dateisystems oder eines Verzeichnisses zu ändern, sodass neue Dateien auf mehrere Speicherziele verteilt werden. Weitere Informationen finden Sie unterDaten in Ihrem Dateisystem entfernen.