PowerScale OneFS: NFS osiąga EIO podczas pisania z włączoną funkcją Software Journal Mirroring (SJM)
Podsumowanie: Klienci sieciowego systemu plików (NFS) zapisujący w systemie PowerScale OneFS w wersji 9.11 mogą doświadczać rzadkich błędów operacji zapisu, które objawiają się błędami wejściowymi lub wyjściowymi (EIO). ...
Objawy
W systemie OneFS 9.11 wprowadzono nową funkcję Software Journal Mirroring (SJM) połączoną z funkcją OneFS 9.7 znaną jako Direct Write (NCIO).
Aby uzyskać więcej informacji na temat SJM, zobacz: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Aby uzyskać więcej informacji na temat NCIO, zobacz: https://infohub.delltechnologies.com/en-au/l/powerscale-best-practices-for-semiconductor-eda-design-environments/direct-read-and-direct-write/
Oczekuje się, że problem będzie rzadki (10 na miliard operacji). Następujący błąd w dzienniku komunikatów węzła PowerScale potwierdza, że problem wystąpił w sygnaturze czasowej. Sygnatura czasowa błędu po stronie klastra musi być zgodna z sygnaturą czasową błędu po stronie klienta:
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
Należy również ustalić, czy błędy EIO zaczęły pojawiać się po uaktualnieniu do OneFS 9.11, a w plikach dziennika zaczęły pojawiać się błędy, takie jak następujące:
# 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()
Przyczyna
Aby problem miał zastosowanie, w klastrze, którego dotyczy problem, muszą być włączone zarówno SJM, jak i NCIO. Te funkcje powodują sytuację wyścigu, w której wątek może utracić dostęp do niezbędnego zasobu.
Aby sprawdzić, czy w klastrze włączono funkcję SJM, uruchom następujące polecenie:
isi storagepool nodepools list -v | egrep "Name|SJM"
Aby sprawdzić, czy NCIO jest włączone, uruchom następujące polecenia. Oba polecenia zwracają '1' we wszystkich węzłach, gdy NCIO jest włączone.
isi_for_array -s sysctl efs.lbm.ncio.write.enable isi_for_array -s sysctl efs.bam.bsw_send_direct
Przykłady:
(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
Rozwiązanie
Obejście problemu polega na wyłączeniu SJM lub NCIO. Nie jest konieczne wyłączanie obu.
Wyłączenie SJM zmniejsza ochronę danych i nadmiarowość dziennika systemu plików w następujący sposób:
Każdy węzeł w puli węzłów z obsługą SJM ma dynamicznie przypisywanego unikatowego Buddy'ego, a połączenie sieciowe zaplecza między węzłami jest zoptymalizowane pod kątem przepływu danych zbiorczych o małych opóźnieniach. Schemat automatycznego odzyskiwania SJM może wykorzystać lustrzaną zawartość dziennika Buddy do ponownego utworzenia dziennika węzła głównego w przypadku awarii, unikając kosztownego procesu awarii węzła SmartFailing. Ten schemat odzyskiwania, znany jako SyncBack, może być również zastosowany ręcznie, jeśli wadliwe urządzenie dziennika musi zostać fizycznie wymienione.
Źródło: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Wyłączenie NCIO może ograniczyć lub zmniejszyć wydajność zapisu o około 20% w węzłach flash.
Aby wyłączyć funkcję SJM. Należy to zrobić dla puli węzłów:
isi storagepool nodepools modify <nodepool name> --sjm-enabled=false
Aby wyłączyć NCIO:
isi_sysctl_cluster efs.lbm.ncio.write.enable=0
isi_sysctl_cluster efs.bam.bsw_send_direct=0
Wyłączenie tych funkcji może mieć wpływ na klaster. Tę funkcję należy stosować tylko wtedy, gdy ma to wpływ na przepływ pracy klastra. W razie pytań lub wątpliwości skontaktuj się z działem pomocy technicznej firmy Dell.