ZFS active le cache d'écriture des périphériques de pool et assure la purge du cache en toute sécurité en cas de perte d'alimentation du système. Cependant, une condition de mise sous tension à la réinitialisation peut se produire alors que les données n'ont pas encore été validée sur une unité de stockage stable.
Dans un environnement sans point de panne unique, cette situation est automatiquement détecté et corrigée par ZFS la fois suivante où les données sont lues. Les nettoyages de routine du pool peuvent améliorer la détection et la réparation des écritures perdues.
Dans un environnement composé d'un point de panne unique, ce problème peut engendrer des pertes de données.
Ce problème peut également se produire plus fréquemment lors de l'accès à des LUN exportés à partir d'une configuration en cluster. Au cours de basculement de cluster, les données mises en mémoire cache par la tête défaillante risquent d'être perdues en cas de mise sous tension à la réinitialisation envoyés par la cible SCSI de manière explicite sur la tête encore fonctionnelle. Dans ce cas, même les pools sans point de panne unique peuvent être affectés.
Un symptôme de ce problème consiste en des clusters d'erreurs de somme de contrôle persistants. Vous pouvez utiliser la sortie de fmdump –eV pour déterminer si les erreurs de somme de contrôle ont été diagnostiquées comme persistantes. L'entrée zio_txg de la sortie fmdump –eV représente le temps d'écriture d'un bloc de données. Notez qu'un motif d'erreurs de somme de contrôle persistant peut également être un symptôme de périphériques, de logiciels ou de matériel défaillants.
Solution de contournement : pour les systèmes qui reposent sur des LUN exportés à partir d'un cluster ou disposant d'un point de panne unique, vous pouvez envisager de désactiver le cache d'écriture pour les périphériques sur un système.
Appliquez les étapes suivantes pour désactiver le cache en écriture et supprimer la purge de cache pour SCSI (sd) ou les périphériques FC (ssd).
Copiez le fichier /kernel/drv/sd.conf ou le fichier /kernel/drv/ssd.conf dans le répertoire /etc/driver/drv, en fonction de vos périphériques de stockage.
Modifiez le fichier /etc/driver/drv/sd.conf ou le fichier /etc/driver/drv/ssd.conf pour désactiver le cache en écriture et supprimer la purge de cache.
Ajoutez des lignes pour remplacer les valeurs VID, PID, ou SUN COMSTAR par les valeurs appropriées sur la page de manuel sd (7D) .
Système SPARC :
sd-config-list="SUN COMSTAR","disable-cache-suppress-flush"; disable-cache-suppress-flush=1,0x40010,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
Système x64 :
sd-config-list="SUN COMSTAR","disable-cache-suppress-flush"; disable-cache-suppress-flush=1,0x40008,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
Réinitialisez le système et ignorez l'option de réinitialisation rapide.
# reboot -p