PowerScale OneFS: NFS trifft EIO beim Schreiben mit aktivierter Software Journal Mirroring (SJM)
Summary: NFS-Clients (Network File System), die in PowerScale OneFS der Version 9.11 schreiben, können seltene Schreibvorgangsfehler auftreten, die sich als Eingabe- oder Ausgabefehler (EIO) manifestieren. ...
Symptoms
Es gibt eine neue OneFS 9.11-Funktion namens Software Journal Mirroring (SJM) in Kombination mit einer OneFS 9.7-Funktion, die als Direct Write (NCIO) bezeichnet wird.
Weitere Informationen zu SJM finden Sie unter: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Weitere Informationen zu NCIO finden Sie unter: https://infohub.delltechnologies.com/en-au/l/powerscale-best-practices-for-semiconductor-eda-design-environments/direct-read-and-direct-write/
Es wird erwartet, dass das Problem selten auftritt (10 von einer Milliarde Operationen). Der folgende Fehler im Meldungsprotokoll des PowerScale-Node bestätigt, dass das Problem mit dem Zeitstempel aufgetreten ist. Der clusterseitige Zeitstempel eines Fehlers muss mit dem clientseitigen Zeitstempel des Fehlers übereinstimmen:
2026-03-03T17:00:28.344642-05:00 isilon-2(id2) /boot/kernel.amd64/kernel: [txn_participant.c:5806](pid 82988="kt: dxt17")(tid=106414) txn_p_dl_block_budrecs() txn(0x2:0x133bcad0d) requested from devid:2 not found
Ermitteln Sie außerdem, ob die EIO-Fehler nach dem Upgrade auf OneFS 9.11 aufgetreten sind und Fehler wie die folgenden in den Protokolldateien angezeigt wurden:
# grep txn_p_dl_ /var/log/messages | cut -d":" -f 2- | cut -d" " -f 8 | sort | uniq -c
5112 txn_p_dl_block_budrecs()
3672 txn_p_dl_deltas_budrecs()
# grep txn_p_dl_ /var/log/messages | cut -d":" -f 2- | cut -d" " -f 8 | sort | uniq -c
5200 txn_p_dl_block_budrecs()
3712 txn_p_dl_deltas_budrecs()
Cause
Damit das Problem auftritt, müssen SJM und NCIO auf dem betroffenen Cluster aktiviert sein. Diese Funktionen führen zu einer Racebedingung, bei der ein Thread den Zugriff auf eine erforderliche Ressource verlieren kann.
Um festzustellen, ob SJM auf einem Cluster aktiviert ist, führen Sie den folgenden Befehl aus:
isi storagepool nodepools list -v | egrep "Name|SJM"
Um festzustellen, ob NCIO aktiviert ist, führen Sie die folgenden Befehle aus. Beide Befehle geben Folgendes zurück: '1' auf allen Nodes, wenn NCIO aktiviert ist.
isi_for_array -s sysctl efs.lbm.ncio.write.enable isi_for_array -s sysctl efs.bam.bsw_send_direct
Beispiele:
(Confirms SJM is enabled) Isilon-1# isi storagepool nodepools list -v | egrep "Name|SJM" Name: f200_3.8tb-ssd_48gb SJM Enabled: Yes (Confirms NCIO is enabled. Both sets of output return '1' for all nodes, indicating NCIO is enabled) Isilon-1# isi_for_array -s sysctl efs.lbm.ncio.write.enable Isilon-1: efs.lbm.ncio.write.enable: 1 Isilon-2: efs.lbm.ncio.write.enable: 1 Isilon-3: efs.lbm.ncio.write.enable: 1 Isilon-1# isi_for_array -s sysctl efs.bam.bsw_send_direct Isilon-1: efs.bam.bsw_send_direct: 1 Isilon-2: efs.bam.bsw_send_direct: 1 Isilon-3: efs.bam.bsw_send_direct: 1
Resolution
Der Workaround besteht darin, entweder SJM oder NCIO zu deaktivieren. Es ist nicht erforderlich, beide zu deaktivieren.
Die Deaktivierung von SJM reduziert den Datenschutz und die Redundanz des Dateisystemjournals wie folgt:
Jedem Node in einem SJM-fähigen Node-Pool wird dynamisch ein eindeutiger Buddy zugewiesen und die Backend-Netzwerkverbindung zwischen Nodes ist für den Massendatenfluss mit niedriger Latenz optimiert. Das automatische Wiederherstellungsschema von SJM kann den gespiegelten Inhalt eines Buddy-Journals verwenden, um das Journal des primären Node im Falle eines Ausfalls neu zu erstellen und so den kostspieligen Prozess eines SmartFailings des Node zu vermeiden. Dieses Recovery-Schema, das als SyncBack bezeichnet wird, kann auch manuell angewendet werden, wenn ein fehlerhaftes Journalgerät physisch ersetzt werden muss.
Quelle: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Das Deaktivieren von NCIO kann die Schreibleistung auf Flash-Nodes um etwa 20 % einschränken oder reduzieren.
So deaktivieren Sie SJM. Dies muss pro Node-Pool erfolgen:
isi storagepool nodepools modify <nodepool name> --sjm-enabled=false
So deaktivieren Sie NCIO:
isi_sysctl_cluster efs.lbm.ncio.write.enable=0
isi_sysctl_cluster efs.bam.bsw_send_direct=0
Das Deaktivieren dieser Funktionen kann sich auf das Cluster auswirken. Dies sollte nur angewendet werden, wenn der Clusterworkflow beeinträchtigt ist. Wenden Sie sich an den technischen Support von Dell, wenn Sie Fragen oder Bedenken haben.