Il n'existe pas d'utilitaire fsck équivalent pour ZFS. Cet utilitaire remplissait deux fonctions : réparer et valider le système de fichiers.
Avec les systèmes de fichiers classiques, la méthode d'écriture des données est affectée par les pannes inattendues entraînant des incohérences de systèmes de fichiers. Un système de fichiers classique n'étant pas transactionnel, les blocs non référencés, les comptes de liens défectueux ou autres structures de systèmes de fichiers incohérentes sont possibles. L'ajout de la journalisation résout certains de ces problèmes, mais peut entraîner des problèmes supplémentaires lorsque la restauration du journal est impossible. Le seul moyen dont dispose incohérence des données sur le disque, dans une configuration ZFS s'effectue par l'intermédiaire de la suite d'une panne de matérielle (auquel cas le pool aurait dû être redondant) ou en présence d'un bogue dans le logiciel ZFS.
L'utilitaire fsck répare les problèmes connus spécifiques aux systèmes de fichiers UFS. La plupart des problèmes au niveau des pools de stockage ZFS sont généralement liés à un matériel défaillant ou à des pannes de courant. En utilisant des pools redondants, vous pouvez éviter de nombreux problèmes. Si le pool est endommagé suite à une défaillance de matériel ou à une coupure de courant, reportez-vous à la section Réparation de dommages présents dans l'ensemble du pool de stockage ZFS.
Si le pool n'est pas redondant, le risque qu'un endommagement du système de fichiers puisse rendre tout ou partie de vos données inaccessibles est toujours présent.
Outre la réparation du système de fichiers, l'utilitaire fsck valide l'absence de problème relatif aux données sur le disque. Cette tâche requiert habituellement le démontage du système de fichiers et en l'exécution de l'utilitaire fsck, éventuellement en mettant le système en mode utilisateur unique lors du processus. Ce scénario entraîne une indisponibilité proportionnelle à la taille du système de fichiers en cours de vérification. Plutôt que de requérir un utilitaire explicite pour effectuer la vérification nécessaire, ZFS fournit un mécanisme pour effectuer une vérification de routine des incohérences. Cette fonctionnalité, appelée nettoyage est fréquemment utilisée dans les systèmes de mémoire et autres systèmes comme méthode de détection et de prévention d'erreurs pour éviter qu'elles entraînent des pannes matérielles ou logicielles.
Si ZFS rencontre une erreur, soit via le nettoyage ou lors de l'accès à un fichier à la demande, l'erreur est journalisée en interne pour vous donner une vue d'ensemble rapide de toutes les erreurs connues au sein du pool.
La manière la plus simple de contrôler l'intégrité des données est d'initier un nettoyage explicite de toutes les données du pool. Cette opération traverse toutes les données dans le pool une fois et vérifie que tous les blocs sont lisibles. Le nettoyage va aussi vite que le permettent les périphériques, mais la priorité de toute E/S reste inférieure à celle de toute opération normale. Cette opération peut affecter les performances, bien que les données du pool restent utilisables et leur réactivité quasiment la même lors du nettoyage. La commande zpool scrubpermet de lancer un nettoyage explicite. Par exemple :
# zpool scrub tank
La commande zpool status ne permet pas d'afficher l'état de l'opération de nettoyage actuelle. Par exemple :
# zpool status -v tank pool: tank state: ONLINE scan: scrub in progress since Mon Jun 7 12:07:52 2010 201M scanned out of 222M at 9.55M/s, 0h0m to go 0 repaired, 90.44% done config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors
Une seule opération de nettoyage actif par pool peut se produire à la fois.
L'option –s permet d'interrompre une opération de nettoyage en cours. Par exemple :
# zpool scrub -s tank
Dans la plupart des cas, une opération de nettoyage pour assurer l'intégrité des données doit être menée à son terme. Vous pouvez cependant interrompre une telle opération si les performances du système sont affectées.
Un nettoyage de routine garantit des E/S continues pour l'ensemble des disques du système. Cet opération a cependant pour effet secondaire d'empêcher la gestion de l'alimentation de placer des disques inactifs en mode basse consommation. Si le système réalise en général des E/S en permanence, ou si la consommation n'est pas une préoccupation, ce problème peut être ignoré. Si le système est en grande partie inactif et que vous souhaitez conserver l'alimentaiton des disques, vous pouvez envisager d'utiliser un nettoyage explicite cron(1M) programmé plutôt qu'un nettoyage d'arrière-plan. Gérer intégralement ce scrubs est toujours l'organisation de fabrication, bien qu'elle de uniquement les données générera une grande quantité de nettoyage d'E / S est terminée, jusqu'à ce que le pour que les disques en suivant la procédure normale peut être la gestion de l'alimentation. Le côté négatif (en plus d'augmenter les E/S) est qu'il y aura de longues périodes pendant lesquelles aucun nettoyage ne sera effectué, ce qui augmentera le risque potentiel d'altération au cours de ces pérodes.
Pour plus d'informations sur l'interprétation de la sortie de zpool status, reportez-vous à la section Requête d'état de pool de stockage ZFS.
Lors du remplacement d'un périphérique, une opération de réargenture est amorcée pour déplacer les données des copies correctes vers le nouveau périphérique. Cette action est une forme de nettoyage de disque. Par conséquent, une seule action de ce type peut être effectuée à un moment donné dans le pool. Lorsqu'une opération de nettoyage est en cours, toute opération de réargenture suspend le nettoyage ; le nettoyage reprend une fois que la réargenture est terminée.
Pour plus d'informations sur la réargenture, reportez-vous à la section Affichage de l'état de réargenture.