ZFS offre une méthode intégrée pour examiner la maintenance des pools et des périphériques. La maintenance d'un pool se détermine par l'état de l'ensemble de ses périphériques. La commande zpool status permet d'afficher ces informations d'état. En outre, les défaillances potentielles des pools et des périphériques sont rapportées par la commande fmd, s'affichent dans la console système et sont consignées dans le fichier /var/adm/messages.
Cette section décrit les méthodes permettant de déterminer la maintenance des pools et des périphériques. Ce chapitre n'aborde cependant pas les méthodes de réparation ou de récupération de pools en mauvais état de maintenance. Pour plus d'informations sur le dépannage et la récupération des données, reportez-vous au Chapter 10, Dépannage d'Oracle Solaris ZFS et récupération de pool.
L'état de maintenance d'un pool est décrit par un des quatre états :
Pool avec un ou plusieurs périphériques défectueux, mais les données sont toujours disponibles grâce à la configuration redondante.
Pool dont tous les périphériques fonctionnent normalement.
Pool attendant la restauration de la connectivité de périphérique. Un pool SUSPENDED reste en état wait jusqu'à ce que le problème du périphérique soit résolu.
Pool avec des métadonnées endommagées, ou des périphériques non disponibles, et pas assez de répliques pour continuer de fonctionner.
Chaque périphérique de pool peut se trouver dans l'un des états suivants :
Le périphérique virtuel a connu un panne. Toutefois, il continue de fonctionner. Cet état est le plus commun lorsqu'un miroir ou un périphérique RAID-Z a perdu un ou plusieurs périphériques le constituant. La tolérance de pannes du pool peut être compromise dans la mesure où une défaillance ultérieure d'un autre périphérique peut être impossible à résoudre.
Le périphérique a été mis hors ligne explicitement par l'administrateur.
Le périphérique ou le périphérique virtuel fonctionne normalement. Même si certaines erreurs transitoires peuvent encore survenir, le périphérique fonctionne correctement.
Le périphérique a été retiré alors que le système était en cours d'exécution. La détection du retrait d'un périphérique dépend du matériel et n'est pas pris en charge sur toutes les plates-formes.
L'ouverture du périphérique ou du périphérique virtuel est impossible. Dans certains cas, les pools avec des périphériques en état UNAVAIL s'affichent en mode DEGRADED. Si un périphérique de niveau supérieur est en état UNAVAIL, aucun élément du pool n'est accessible.
La maintenance d'un pool est déterminée à partir de celle de l'ensemble de ses périphériques virtuels. Si l'état de tous les périphériques virtuels est ONLINE, l'état du pool est également ONLINE. Si l'état d'un des périphériques virtuels est DEGRADED ou UNAVAIL, l'état du pool est également DEGRADED. Si l'état d'un des périphériques virtuels est UNAVAIL ou OFFLINE, l'état du pool est également UNAVAIL ou SUSPENDED. Un pool en état UNAVAIL ou SUSPENDED est complètement inaccessible. Aucune donnée ne peut être récupérée tant que les périphériques nécessaires n'ont pas été connectés ou réparés. Un pool renvoyant l'état DEGRADED continue à être exécuté. Cependant, il se peut que vous ne puissiez pas atteindre le même niveau de redondance ou de capacité de données que s'il se trouvait en ligne.
La commande zpool status fournit également des informations détaillées sur les opérations de réargenture et de nettoyage.
Rapport de progression de la réargenture. Par exemple :
scan: resilver in progress since Wed Jun 20 14:19:38 2012 7.43G scanned 7.43G resilvered at 26.8M/s, 10.35% done, 0h30m to go
Rapport de progression du nettoyage. Par exemple :
scan: scrub in progress since Wed Jun 20 14:56:52 2012 529M scanned out of 71.8G at 48.1M/s, 0h25m to go 0 repaired, 0.72% done
Message de fin de la réargenture. Par exemple :
scan: resilvered 71.8G in 0h14m with 0 errors on Wed Jun 20 14:33:42 2012
Message de fin du nettoyage. Par exemple :
scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
Message d'annulation du nettoyage en cours. Par exemple :
scan: scrub canceled on Wed Jun 20 16:04:40 2012
Les messages de fin de la réargenture et du nettoyage subsistent après plusieurs réinitialisation du système.
Vous pouvez vérifier rapidement l'état de maintenance d'un pool en utilisant la commande zpool status de la manière suivante :
# zpool status -x all pools are healthy
Il est possible d'examiner des pools spécifiques en spécifiant un nom de pool dans la syntaxe de commande. Tout pool n'étant pas en état ONLINE doit être passé en revue pour vérifier tout problème potentiel, comme décrit dans la section suivante.
Vous pouvez demander un résumé de l'état plus détaillé en utilisant l'option –v. Par exemple :
# zpool status -v pond pool: pond state: DEGRADED status: One or more devices are unavailable in response to persistent errors. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or 'fmadm repaired', or replace the device with 'zpool replace'. scan: scrub repaired 0 in 0h0m with 0 errors on Wed Jun 20 15:38:08 2012 config: NAME STATE READ WRITE CKSUM pond DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 UNAVAIL 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 device details: c0t5000C500335F907Fd0 UNAVAIL cannot open status: ZFS detected errors on this device. The device was missing. see: http://support.oracle.com/msg/ZFS-8000-LR for recovery errors: No known data errors
Cette sortie affiche une description complète des raisons de l'état actuel du pool, y compris une description lisible du problème et un lien vers un article de connaissances contenant de plus amples informations, y compris une description lisible du problème et un lien vers un article de la base de connaissances pour plus d'informations. Les articles de connaissances donnent les informations les plus récentes vous permettant de résoudre le problème. Les informations détaillées de configuration doivent vous permettre de déterminer les périphériques endommagés et la manière de réparer le pool.
Dans l'exemple précédent, le périphérique UNAVAIL devrait être remplacé. Une fois le périphérique remplacé, exécutez la commande zpool online pour le remettre en ligne, si nécessaire. Par exemple :
# zpool online pond c0t5000C500335F907Fd0 warning: device 'c0t5000C500335DC60Fd0' onlined, but remains in degraded state # zpool status -x all pools are healthy
La sortie ci-dessus identifie que le périphérique reste dans un état dégradé tant qu'aucune réargenture n'a été effectuée.
Si la propriété autoreplace est activée, vous n'êtes pas obligé de mettre en ligne le périphérique remplacé.
Si un périphérique d'un pool est hors ligne, la sortie de commande identifie le pool qui pose problème. Par exemple :
# zpool status -x pool: pond state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. config: NAME STATE READ WRITE CKSUM pond DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 OFFLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors
Les colonnes READ et WRITE indiquent le nombre d'erreurs d'E/S détectées dans le périphérique, tandis que la colonne CKSUM indique le nombre d'erreurs de somme de contrôle impossible à corriger qui se sont produites sur le périphérique. Ces deux comptes d'erreurs indiquent une défaillance potentielle du périphérique et que des actions correctives sont requises. Si le nombre d'erreurs est non nul pour un périphérique virtuel de niveau supérieur, il est possible que des parties de vos données soient inaccessibles.
Le champ errors: identifie toute erreur de données connue.
Dans l'exemple de sortie précédent, le périphérique mis en ligne ne cause aucune erreur de données.
Pour plus d'informations sur le diagnostic et la réparation de pools et de données UNAVAIL, reportez-vous au Chapter 10, Dépannage d'Oracle Solaris ZFS et récupération de pool.
Vous pouvez utiliser l'intervalle zpool status et les options de comptage pour rassembler des statistiques sur une période précise. En outre, vous pouvez afficher un horodatage en utilisant l'option –T. Par exemple :
# zpool status -T d 3 2 Wed Jun 20 16:10:09 MDT 2012 pool: pond state: ONLINE scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012 config: NAME STATE READ WRITE CKSUM pond ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors pool: rpool state: ONLINE scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335BA8C3d0s0 ONLINE 0 0 0 c0t5000C500335FC3E7d0s0 ONLINE 0 0 0 errors: No known data errors Wed Jun 20 16:10:12 MDT 2012 pool: pond state: ONLINE scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012 config: NAME STATE READ WRITE CKSUM pond ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors pool: rpool state: ONLINE scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335BA8C3d0s0 ONLINE 0 0 0 c0t5000C500335FC3E7d0s0 ONLINE 0 0 0 errors: No known data errors