PowerScale OneFS: NFS che raggiunge l'EIO durante la scrittura con Software Journal Mirroring (SJM) abilitato
Summary: I client NFS (Network File System) che scrivono su PowerScale OneFS versione 9.11 possono riscontrare rari errori delle operazioni di scrittura che si manifestano come errori di input o output (EIO). ...
Symptoms
È disponibile una nuova funzionalità di OneFS 9.11 denominata Software Journal Mirroring (SJM) combinata con una funzionalità di OneFS 9.7 nota come Direct Write (NCIO).
Per ulteriori informazioni su SJM, consultare: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Per ulteriori informazioni su NCIO, consultare: https://infohub.delltechnologies.com/en-au/l/powerscale-best-practices-for-semiconductor-eda-design-environments/direct-read-and-direct-write/
Si prevede che il problema sarà raro (10 operazioni su un miliardo). Il seguente errore nel registro dei messaggi del nodo PowerScale conferma che il problema si è verificato in corrispondenza del timestamp. Il timestamp lato cluster di un errore deve corrispondere al timestamp lato client dell'errore:
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
Inoltre, determinare se gli errori EIO sono iniziati dopo l'aggiornamento a OneFS 9.11 e nei file di registro sono iniziati errori come quelli riportati di seguito:
# 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
Affinché il problema venga applicato, sia SJM che NCIO devono essere abilitati nel cluster interessato. Queste funzionalità causano una race condition in cui un thread può perdere l'accesso a una risorsa necessaria.
Per determinare se SJM è abilitato in un cluster, eseguire il seguente comando:
isi storagepool nodepools list -v | egrep "Name|SJM"
Per determinare se NCIO è abilitato, eseguire i seguenti comandi. Entrambi i comandi restituiscono '1' su tutti i nodi quando NCIO è abilitato.
isi_for_array -s sysctl efs.lbm.ncio.write.enable isi_for_array -s sysctl efs.bam.bsw_send_direct
Esempi:
(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
La soluzione alternativa consiste nel disabilitare SJM o NCIO. Non è necessario disabilitarle entrambe.
La disabilitazione di SJM riduce la protezione dei dati e la ridondanza del file system journal, come indicato di seguito:
a ogni nodo in un pool di nodi abilitato per SJM viene assegnato dinamicamente un buddy univoco e la connessione di rete back-end tra i nodi è ottimizzata per il flusso di dati in blocco a bassa latenza. Lo schema di recupero automatico di SJM può utilizzare il contenuto del mirroring di un diario Buddy per riformare il journal del nodo primario in caso di guasto, evitando il costoso processo di SmartFail del nodo. Questo schema di ripristino, noto come SyncBack, può anche essere applicato manualmente se è necessario sostituire fisicamente un dispositivo journal guasto.
Fonte: https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
La disabilitazione di NCIO può limitare o ridurre le prestazioni di scrittura di circa il 20% sulle prestazioni sui nodi flash.
Per disabilitare SJM. Questa operazione deve essere eseguita per ogni pool di nodi:
isi storagepool nodepools modify <nodepool name> --sjm-enabled=false
Per disabilitare NCIO:
isi_sysctl_cluster efs.lbm.ncio.write.enable=0
isi_sysctl_cluster efs.bam.bsw_send_direct=0
La disabilitazione di queste funzioni potrebbe influire sul cluster. Questa operazione deve essere applicata solo se il flusso di lavoro del cluster è interessato. Contattare il supporto tecnico Dell in caso di domande o dubbi.