Les sections suivantes décrivent l'identification et la résolution des problèmes dans les systèmes de fichiers ZFS ou les pools de stockage :
Les fonctions suivantes permettent d'identifier les problèmes au sein de la configuration ZFS :
La commande zpool status permet d'afficher les informations détaillées des pools de stockage ZFS.
Les défaillances de pool et de périphérique sont rapportées par le biais de messages de diagnostics ZFS/FMA.
La commande zpool history permet d'afficher les commandes ZFS précédentes qui ont modifié les informations d'état de pool.
La commande zpool status permet de résoudre la plupart des problèmes au niveau de ZFS. Cette commande analyse les différentes erreurs système et identifie les problèmes les plus sévères. En outre, elle propose des actions à effectuer et un lien vers un article de connaissances pour de plus amples informations. Notez que cette commande n'identifie qu'un seul problème dans le pool, même si plusieurs problèmes existent. Par exemple, les erreurs de corruption de données sont généralement provoquées par la panne d'un périphérique, mais le remplacement d'un périphérique défaillant peut ne pas résoudre tous les problèmes de corruption de données.
En outre, un moteur de diagnostic ZFS diagnostique et signale les défaillances au niveau du pool et des périphériques. Les erreurs liées aux sommes de contrôle, aux E/S, aux périphériques et aux pools font également l'objet d'un rapport lorsqu'elles sont liées à ces défaillances. Les défaillances ZFS telles que rapportées par fmd s'affichent sur la console ainsi que les dans le fichier de messages système. Dans la plupart des cas, le message fmd vous dirige vers la commande zpool status pour obtenir des instructions supplémentaires de récupération.
Le processus de récupération est comme décrit ci-après :
Le cas échéant, la commande zpool history permet d'identifier les commandes ZFS ayant précédé le scénario d'erreur. Exemple :
# zpool history tank History for 'tank': 2010-07-15.12:06:50 zpool create tank mirror c0t1d0 c0t2d0 c0t3d0 2010-07-15.12:06:58 zfs create tank/erick 2010-07-15.12:07:01 zfs set checksum=off tank/erick |
Dans cette sortie, notez que les sommes de contrôle sont désactivées pour le système de fichiers tank/erick. Cette configuration est déconseillée.
Identifiez les erreurs à l'aide des messages fmd affichés sur la console système ou dans le fichier /var/adm/messages.
Obtenez des instructions de réparation supplémentaires grâce à la commande zpool status -x.
Réparez les pannes. Pour ce faire, suivez les étapes suivantes :
Remplacez le périphérique défaillant ou manquant et mettez-le en ligne.
Restaurez la configuration défaillante ou les données corrompues à partir d'une sauvegarde.
Vérifiez la récupération à l'aide de la commande zpool status - x.
Sauvegardez la configuration restaurée, le cas échéant.
Cette section explique comment interpréter la sortie zpool status afin de diagnostiquer le type de défaillances pouvant survenir. Même si la commande effectue automatiquement le travail, vous devez comprendre exactement les problèmes identifiés pour diagnostiquer la panne. Les sections suivantes expliquent comment corriger les différents types de problèmes que vous risquez de rencontrer.
La méthode la plus simple pour déterminer s'il existe des problèmes connus sur le système consiste à exécuter la commande zpool status -x. Cette commande décrit uniquement les pools présentant des problèmes. Si tous les pools du système fonctionnent correctement, la commande affiche les éléments suivants :
# zpool status -x all pools are healthy |
Sans l'indicateur -x, la commande affiche l'état complet de tous les pools (ou du pool demandé s'il est spécifié sur la ligne de commande), même si les pools sont autrement fonctionnels.
Pour de plus amples informations sur les options de ligne de commande de la commande zpool status, reportez-vous à la section Requête d'état de pool de stockage ZFS.
La sortie complète de zpool status est similaire à ce qui suit :
# zpool status tank # zpool status tank pool: tank state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 0 0 0 cannot open errors: No known data errors |
Cette sortie est décrite ci-dessous :
Cette section de la sortie zpool status se compose des champs suivants, certains d'entre eux n'étant affichés que pour les pools présentant des problèmes :
Identifie le nom du pool.
Indique l'état de maintenance actuel du pool. Ces informations concernent uniquement la capacité de pool à fournir le niveau de réplication requis.
Décrit les problèmes du pool. Ce champ est absent si aucune erreur n'est détectée.
Action recommandée pour la réparation des erreurs. Ce champ est absent si aucune erreur n'est détectée.
Fait référence à un article de connaissances contenant des informations de réparation détaillées. Les articles en ligne sont mis à jour plus régulièrement que ce guide. Par conséquent, vous devez vous y reporter pour obtenir les procédures de réparation les plus récentes. Ce champ est absent si aucune erreur n'est détectée.
Identifie l'état actuel d'une opération de nettoyage. Ce champ peut indiquer la date et l'heure du dernier nettoyage, un nettoyage en cours ou l'absence de requête de nettoyage.
Identifie les erreurs de données ou l'absence d'erreurs de données connues.
Le champ config de la sortie zpool status décrit la configuration des périphériques inclus dans le pool, ainsi que leur état et toute erreur générée à partir des périphériques. L'état peut être l'un des suivants : ONLINE, FAULTED, DEGRADED, UNAVAILABLE ou OFFLINE. Si l'état n'est pas ONLINE, la tolérance de pannes du pool a été compromise.
La deuxième section de la sortie de configuration affiche des statistiques d'erreurs. Ces erreurs se divisent en trois catégories :
READ : erreurs d'E/S qui se sont produites lors de l'envoi d'une requête de lecture
WRITE : erreurs d'E/S qui se sont produites lors de l'envoi d'une requête d'écriture
CKSUM : erreurs de somme de contrôle signifiant que le périphérique a renvoyé des données corrompues en réponse à une demande de lecture.
Il est possible d'utiliser ces erreurs pour déterminer si les dommages sont permanents. Des erreurs d'E/S peu nombreuses peuvent indiquer une interruption de service temporaire. Si elles sont nombreuses, il est possible que le périphérique présente un problème permanent. Ces erreurs ne correspondent pas nécessairement à la corruption de données telle qu'interprétée par les applications. Si la configuration du périphérique est redondante, les périphériques peuvent présenter des erreurs impossibles à corriger, même si aucune erreur ne s'affiche au niveau du périphérique RAID-Z ou du miroir. Dans ce cas, ZFS a récupéré les données correctes et a réussi à réparer les données endommagées à partir des répliques existantes.
Pour de plus amples informations sur l'interprétation de ces erreurs, reportez-vous à la section Détermination du type de panne de périphérique.
Enfin, les informations auxiliaires supplémentaire sont affichées dans la dernière colonne de la sortie de zpool status. Ces informations s'étendent dans le champ state et facilitent le diagnostic des pannes. Si l'état d'un périphérique est FAULTED, ce champ indique si périphérique est inaccessible ou si les données du périphérique sont corrompues. Si le périphérique est en cours de resynchronisation, ce champ affiche la progression du processus.
Pour de plus amples informations sur le contrôle de la progression de la resynchronisation, reportez-vous à la section Affichage de l'état de réargenture.
La section sur le nettoyage de la sortie zpool status décrit l'état actuel de toute opération de nettoyage explicite. Ces informations sont distinctes de la détection d'erreurs dans le système, mais il est possible de les utiliser pour déterminer l'exactitude du rapport d'erreurs de corruption de données. Si le dernier nettoyage s'est récemment terminé, toute corruption de données existante aura probablement déjà été détecté.
Les messages de fin de nettoyage subsistent après plusieurs réinitialisations du système.
Pour de plus amples informations sur le nettoyage de données et l'interprétation de ces informations, reportez-vous à la section Contrôle de l'intégrité d'un système de fichiers ZFS.
La commande zpool status indique également si des erreurs connues sont associées au pool. La détection de ces erreurs a pu s'effectuer lors du nettoyage des données ou lors des opérations normales. Le système de fichiers ZFS gère un journal persistant de toutes les erreurs de données associées à un pool. Ce journal tourne à chaque fois qu'un nettoyage complet du système est terminé.
Les erreurs de corruption de données constituent toujours des erreurs fatales. Elles indiquent une erreur d'E/S dans au moins une application, en raison de la présence de données corrompues au sein du pool. Les erreurs de périphérique dans un pool redondant n'entraînent pas de corruption de données et ne sont pas enregistrées en tant que partie de ce journal. Par défaut, seul le nombre d'erreurs trouvées s'affiche. Vous pouvez obtenir la liste complète des erreurs et de leurs spécificités à l'aide de l'option zpool status -v. Exemple :
# zpool status -v pool: tank state: UNAVAIL status: One or more devices are faulted in response to IO failures. action: Make sure the affected devices are connected, then run 'zpool clear'. see: http://www.sun.com/msg/ZFS-8000-HC scrub: scrub completed after 0h0m with 0 errors on Tue Feb 2 13:08:42 2010 config: NAME STATE READ WRITE CKSUM tank UNAVAIL 0 0 0 insufficient replicas c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 4 1 0 cannot open errors: Permanent errors have been detected in the following files: /tank/data/aaa /tank/data/bbb /tank/data/ccc |
La commande fmd affiche également un message similaire dans la console système et le fichier /var/adm/messages. La commande fmdump permet également de réaliser le suivi de ces messages.
Pour de plus amples informations sur l'interprétation d'erreurs de corruption de données, reportez-vous à la section Identification du type de corruption de données.
Outre le suivi permanent des erreur au sein du pool, ZFS affiche également des messages syslog lorsque des événements intéressants se produisent. Les scénarios suivants génèrent des événements pour notifier l'administrateur :
Transition d'état de périphérique – Si l'état d'un périphérique devient FAULTED, ZFS consigne un message indiquant que la tolérance de pannes du pool risque d'être compromise. Un message similaire est envoyé si le périphérique est mis en ligne ultérieurement, restaurant la maintenance du pool.
Corruption de données – En cas de détection de corruption de données, ZFS consigne un message indiquant où et quand s'est produit la détection. Ce message n'est consigné que lors de la première détection. Les accès ultérieurs ne génèrent pas de message.
Défaillances de pool et de périphérique : en cas de défaillance d'un pool ou d'un périphérique, le démon du gestionnaire de pannes rapporte ces erreurs par le biais de messages syslog et de la commande fmdump.
Si ZFS détecte un erreur de périphérique et la corrige automatiquement, aucune notification n'est générée. De telles erreurs ne constituent pas une défaillance de redondance de pool ou de l'intégrité des données. En outre, de telles erreurs sont typiquement dues à un problème de pilote accompagné de son propre jeu de messages d'erreur.