PowerScale OneFS : NFS atteint EIO lors de l’écriture avec Software Journal Mirroring (SJM) activé
Résumé: Les clients NFS (Network File System) écrivant sur PowerScale OneFS sur la version 9.11 peuvent rencontrer de rares échecs d’opération d’écriture qui se manifestent par des erreurs d’entrée ou de sortie (EIO). ...
Symptômes
Il existe une nouvelle fonctionnalité OneFS 9.11 appelée Software Journal Mirroring (SJM) combinée à une fonctionnalité OneFS 9.7 appelée Direct Write (NCIO).
Pour plus d’informations sur SJM, voir : https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
Pour plus d’informations sur NCIO, voir : https://infohub.delltechnologies.com/en-au/l/powerscale-best-practices-for-semiconductor-eda-design-environments/direct-read-and-direct-write/
Le problème devrait être rare (10 sur un milliard d’opérations). L’erreur suivante dans le journal des messages du nœud PowerScale confirme que le problème s’est produit à l’horodatage. L’horodatage côté cluster d’une erreur doit correspondre à l’horodatage côté client de l’erreur :
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
En outre, déterminez si les erreurs EIO ont commencé après la mise à niveau vers OneFS 9.11 et si des erreurs telles que les suivantes ont commencé à apparaître dans les fichiers journaux :
# 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
Pour que le problème s’applique, SJM et NCIO doivent être activés sur le cluster concerné. Ces fonctionnalités provoquent une condition de concurrence dans laquelle un thread peut perdre l’accès à une ressource nécessaire.
Pour déterminer si SJM est activé sur un cluster, exécutez la commande suivante :
isi storagepool nodepools list -v | egrep "Name|SJM"
Pour déterminer si NCIO est activé, exécutez les commandes suivantes. Les deux commandes renvoient '1' sur tous les nœuds lorsque NCIO est activé.
isi_for_array -s sysctl efs.lbm.ncio.write.enable isi_for_array -s sysctl efs.bam.bsw_send_direct
Exemples :
(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
Résolution
La solution de contournement consiste à désactiver SJM ou NCIO. Il n’est pas nécessaire de désactiver les deux.
La désactivation de SJM réduit la protection des données et la redondance du journal du système de fichiers, comme suit :
Chaque nœud d’un pool de nœuds compatible SJM se voit attribuer dynamiquement un Buddy unique, et la connexion réseau back-end entre les nœuds est optimisée pour un flux de données en bloc à faible latence. Le schéma de récupération automatique de SJM peut utiliser le contenu mis en miroir d’un journal Buddy pour reformer le journal du nœud principal en cas de défaillance, évitant ainsi le processus coûteux d’échec intelligent du nœud. Ce schéma de récupération, appelé SyncBack, peut également être appliqué manuellement si un appareil journal défaillant doit être physiquement remplacé.
Source : https://infohub.delltechnologies.com/en-uk/l/powerscale-onefs-smartflash/software-journal-mirroring/
La désactivation de NCIO peut limiter ou réduire les performances d’écriture d’environ 20 % sur les nœuds Flash.
Pour désactiver SJM. Cette opération doit être effectuée par pool de nœuds :
isi storagepool nodepools modify <nodepool name> --sjm-enabled=false
Pour désactiver NCIO :
isi_sysctl_cluster efs.lbm.ncio.write.enable=0
isi_sysctl_cluster efs.bam.bsw_send_direct=0
La désactivation de ces fonctionnalités peut avoir un impact sur le cluster. Cela ne doit être appliqué que si le workflow du cluster est affecté. Contactez le support technique Dell en cas de questions ou de préoccupations.