Ignorer les liens de navigation | |
Quitter l'aperu | |
![]() |
Guide d'administration Oracle Solaris ZFS Oracle Solaris 10 1/13 Information Library (Français) |
1. Système de fichiers Oracle Solaris ZFS (introduction)
2. Mise en route d'Oracle Solaris ZFS
3. Gestion des pools de stockage Oracle Solaris ZFS
4. Installation et initialisation d'un système de fichiers root ZFS Oracle Solaris
5. Gestion des systèmes de fichiers Oracle Solaris ZFS
6. Utilisation des instantanés et des clones ZFS Oracle Solaris
7. Utilisation des ACL et des attributs pour protéger les fichiers Oracle Solaris ZFS
8. Administration déléguée de ZFS dans Oracle Solaris
9. Rubriques avancées Oracle Solaris ZFS
10. Dépannage d'Oracle Solaris ZFS et récupération de pool
Identification des problèmes ZFS
Résolution des problèmes matériels généraux
Identification des pannes du matériel et des périphériques
Génération de rapports système de messages d'erreur ZFS
Identification des problèmes avec les pools de stockage ZFS
Recherche de problèmes éventuels dans un pool de stockage ZFS
Consultation de la sortie de zpool status
Informations globales d'état des pools
Informations sur la configuration des pools de stockage ZFS
Etat du nettoyage des pools de stockage ZFS
Erreurs d'altération de données ZFS
Résolution des problèmes des périphériques de stockage ZFS
Résolution d'un périphérique manquant ou supprimé
Résolution d'un périphérique supprimé
Reconnexion physique d'un périphérique
Notification relative à la disponibilité de périphériques dans ZFS
Remplacement ou réparation d'un périphérique endommagé
Détermination du type de panne de périphérique
Suppression des erreurs de périphérique transitoires
Remplacement d'un périphérique dans un pool de stockage ZFS
Détermination de la possibilité de remplacement du périphérique
Périphériques impossibles à remplacer
Remplacement d'un périphérique dans un pool de stockage ZFS
Affichage de l'état de réargenture
Résolution des problèmes de système de fichiers ZFS
Résolution des problèmes de données dans un pool de stockage ZFS
Contrôle de l'intégrité d'un système de fichiers ZFS
Réparation du système de fichiers
Validation du système de fichiers
Contrôle du nettoyage de données ZFS
Nettoyage explicite de données ZFS
Nettoyage et réargenture de données ZFS
Résolution des problèmes d'espace ZFS
Compte-rendu d'espace de système de fichiers ZFS
Compte-rendu sur l'espace des pools de stockage ZFS
Réparation de données endommagées
Identification du type d'altération de données
Réparation d'un fichier ou répertoire endommagé
Réparation de données endommagées avec plusieurs références de blocs
Réparation de dommages présents dans l'ensemble du pool de stockage ZFS
Réparation d'une configuration ZFS endommagée
Réparation d'un système impossible à réinitialiser
11. Pratiques recommandées pour Oracle Solaris ZFS
Parmi les exemples de problèmes de données, on trouve :
Erreurs d'E/S transitoires causées par un disque ou un contrôleur défaillant
Altération de données sur disque causée par les rayons cosmiques
Bogues de pilotes entraînant des transferts de données vers ou à partir d'un emplacement erroné
Ecrasement accidentel de parties du périphérique physique par un utilisateur
Certaines erreurs sont transitoires, par exemple une erreur d'E/S aléatoire alors que le contrôleur rencontre des problèmes. Dans d'autres cas, les dommages sont permanents, par exemple lors de la détérioration sur disque. En outre, même si les dommages sont permanents, cela ne signifie pas que l'erreur est susceptible de se reproduire. Par exemple, si un utilisateur écrase une partie d'un disque par accident, aucune panne matérielle ne s'est produite et il est inutile de remplacer le périphérique. L'identification du problème exact dans un périphérique n'est pas une tâche aisée. Elle est abordée plus en détail dans une section ultérieure.
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. Une incohérence des données sur disque dans une configuration ZFS ne se produit qu'à 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'une altération de 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 façon la plus simple de vérifier l'intégrité des données est de lancer un nettoyage explicite de toutes les données au sein 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 scrub: scrub completed after 0h7m with 0 errors on Tue Tue Feb 2 12:54:00 2010 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é.
Pour de plus amples 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 de plus amples informations sur la réargenture, reportez-vous à la section Affichage de l'état de réargenture.
L'altération de données se produit lorsqu'une ou plusieurs erreurs de périphériques (indiquant un ou plusieurs périphériques manquants ou endommagés) affectent un périphérique virtuel de niveau supérieur. Par exemple, la moitié d'un miroir peut subir des milliers d'erreurs sans jamais causer d'altération de données. Si une erreur se produit sur l'autre côté du miroir au même emplacement, les données sont endommagées.
L'altération de données est toujours permanente et nécessite une soin particulier lors de la réparation. Même en cas de réparation ou de remplacement des périphériques sous-jacents, les données d'origine sont irrémédiablement perdues. La plupart du temps, ce scénario requiert la restauration des données à partir de sauvegardes. Les erreurs de données sont enregistrées à mesure qu'elles sont détectées et peuvent être contrôlées à l'aide de nettoyages de pools de routine, comme expliqué dans la section suivante. Lorsqu'un bloc endommagé est supprimé, le nettoyage de disque suivant reconnaît que l'altération n'est plus présente et supprime toute trace de l'erreur dans le système.
Consultez les sections suivantes si vous n'êtes pas sûr de la manière dont ZFS signale le système de fichiers et la comptabilisation d'espace du pool. Consultez également la section Comptabilisation de l'espace disque ZFS.
Les commandes zpool list et zfs list sont plus appropriées que les commandes précédentes df et du pour déterminer l'espace disponible des pools et des systèmes de fichiers. Les anciennes commandes ne permettent pas de distinguer facilement l'espace des pools de l'espace des systèmes de fichiers. D'autre part, elles ne tiennent pas compte de l'espace utilisé par les systèmes de fichiers descendants ou les instantanés.
Par exemple, le pool root ci-après (rpool) utilise 5,46 Go et dispose de 68,5 Go d'espace libre.
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 74G 5.46G 68.5G 7% 1.00x ONLINE -
Si vous comparez la comptabilisation d'espace de pool à la comptabilisation d'espace de système de fichiers en consultant la colonne USED de vos systèmes de fichiers individuels, vous pouvez voir que l'espace de pool qui est signalé dans ALLOC est globalement présent dans le total USED du système de fichiers. Par exemple :
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 5.41G 67.4G 74.5K /rpool rpool/ROOT 3.37G 67.4G 31K legacy rpool/ROOT/solaris 3.37G 67.4G 3.07G / rpool/ROOT/solaris/var 302M 67.4G 214M /var rpool/dump 1.01G 67.5G 1000M - rpool/export 97.5K 67.4G 32K /rpool/export rpool/export/home 65.5K 67.4G 32K /rpool/export/home rpool/export/home/admin 33.5K 67.4G 33.5K /rpool/export/home/admin rpool/swap 1.03G 67.5G 1.00G -
La valeur de taille SIZE calculée par la commande zpool list indique généralement la quantité d'espace disque physique dans le pool, mais elle varie selon le niveau de redondance de celui-ci. Voir les exemples ci-dessous. La commande zfs list liste l'espace disponible pour des systèmes de fichiers, c'est-à-dire l'espace disque moins l'espace utilisé par les métadonnées de gestion de la redondance des pools ZFS, le cas échéant.
Pool de stockage non redondant : un pool est créé avec un seul disque de 136 Go ; la commande zpool list signale une valeur de taille SIZE et une valeur d'espace libre initiale FREE de 136 Go. L'espace disponible initial AVAIL indiqué par la commande zfs list est de 134 Go, en raison d'une petite quantité de métadonnées de gestion de pool. Par exemple :
# zpool create tank c0t6d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
Pool de stockage mis en miroir : quand un pool est créé avec deux disques de 136 Go , la commande zpool list indique une valeur de taille SIZE de 136 Go et une valeur d'espace libre initiale FREE de 136 Go. Ce compte-rendu est appelé valeur d'espace minorée. L'espace disponible initial AVAIL indiqué par la commande zfs list est de 134 Go, en raison d'une petite quantité de métadonnées de gestion de pool. Par exemple :
# zpool create tank mirror c0t6d0 c0t7d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
Pool de stockage RAID-Z : quand un pool raidz2 est créé avec trois disques de 136 Go ; la commande zpool list signale une valeur de taille SIZE de 408 Go et une valeur d'espace libre initiale FREE de 408 Go. Ce compte-rendu est appelé valeur d'espace disque majorée, qui inclut l'espace nécessaire à la gestion de la redondance, par exemple les informations de parité. L'espace disponible initial AVAIL indiqué par la commande zfs list est de 133 Go, en raison de la gestion de la redondance du pool. La différence d'espace entre les sorties zpool list et zfs list pour un pool RAID-Z provient du fait que zpool list indique l'espace de pool majoré.
# zpool create tank raidz2 c0t6d0 c0t7d0 c0t8d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 408G 286K 408G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 73.2K 133G 20.9K /tank
Les sections suivantes décrivent comment identifier le type d'altération de données et comment réparer les données le cas échéant.
ZFS utilise les données des sommes de contrôle, de redondance et d'auto-rétablissement pour minimiser le risque d'altération de données. Cependant, l'altération de données peut se produire si le pool n'est pas redondant, si l'altération s'est produite alors que le pool était endommagé ou si une série d'événements improbables a altéré plusieurs copies d'un élément de données. Quelle que soit la source, le résultat est le même : les données sont altérées et par conséquent inaccessibles. Les actions à effectuer dépendent du type de données altérées et de leurs valeurs relatives. Deux types de données peuvent être altérées :
Métadonnées de pool : ZFS requiert une certaine quantité de données à analyser afin d'ouvrir un pool et d'accéder aux jeux de données. Si ces données sont altérées, le pool entier ou des parties de la hiérarchie du jeu de données sont indisponibles.
Données d'objet : dans ce cas, l'altération se produit au sein d'un fichier ou périphérique spécifique. Ce problème peut rendre une partie du fichier ou répertoire inaccessible ou endommager l'objet.
Les données sont vérifiées lors des opérations normales et lors du nettoyage. Pour de plus amples informations sur la vérification de l'intégrité des données du pool, reportez-vous à la section Contrôle de l'intégrité d'un système de fichiers ZFS.
Par défaut, la commande zpool status indique qu'une altération s'est produite, mais n'indique pas à quel endroit. Par exemple :
# zpool status monkey pool: monkey state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: http://www.sun.com/msg/ZFS-8000-8A scrub: scrub completed after 0h0m with 8 errors on Tue Jul 13 13:17:32 2010 config: NAME STATE READ WRITE CKSUM monkey ONLINE 8 0 0 c1t1d0 ONLINE 2 0 0 c2t5d0 ONLINE 6 0 0 errors: 8 data errors, use '-v' for a list
Toute erreur indique seulement qu'une erreur s'est produite à un moment donné. Il est possible que certaines erreurs ne soient plus présentes dans le système. Dans le cadre d'une utilisation normale, elles le sont. Certaines interruptions de service temporaires peuvent entraîner une altération de données qui est automatiquement réparée une fois l'interruption de service terminée. Un nettoyage complet du pool examine chaque bloc actif dans le pool. Ainsi, le journal d'erreur est réinitialisé à la fin de chaque nettoyage. Si vous déterminez que les erreurs ne sont plus présentes et ne souhaitez pas attendre la fin du nettoyage, la commande zpool online permet de réinitialiser toutes les erreurs du pool.
Si l'altération de données se produit dans des métadonnées au niveau du pool, la sortie est légèrement différente. Par exemple :
# zpool status -v morpheus pool: morpheus id: 1422736890544688191 state: FAULTED status: The pool metadata is corrupted. action: The pool cannot be imported due to damaged devices or data. see: http://www.sun.com/msg/ZFS-8000-72 config: morpheus FAULTED corrupted data c1t10d0 ONLINE
Dans le cas d'une altération au niveau du pool, ce dernier se voit attribuer l'état FAULTED, car le pool ne peut pas fournir le niveau de redondance requis.
En cas d'altération d'un fichier ou d'un répertoire, le système peut tout de même continuer à fonctionner, selon le type d'altération. Tout dommage est irréversible, à moins que des copies correctes des données n'existent sur le système. Si les données sont importantes, vous devez restaurer les données affectées à partir d'une sauvegarde. Quand bien même, vous devriez pouvoir réparer les données altérées sans restaurer la totalité du pool.
En cas de dommages au sein d'un bloc de données de fichiers, le fichier peut être supprimé en toute sécurité. L'erreur est alors effacée du système. Utilisez la commande zpool status -v pour afficher la liste des noms de fichier contenant des erreurs persistantes. Par exemple :
# zpool status -v pool: monkey state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: http://www.sun.com/msg/ZFS-8000-8A scrub: scrub completed after 0h0m with 8 errors on Tue Jul 13 13:17:32 2010 config: NAME STATE READ WRITE CKSUM monkey ONLINE 8 0 0 c1t1d0 ONLINE 2 0 0 c2t5d0 ONLINE 6 0 0 errors: Permanent errors have been detected in the following files: /monkey/a.txt /monkey/bananas/b.txt /monkey/sub/dir/d.txt monkey/ghost/e.txt /monkey/ghost/boo/f.txt
La liste des noms de fichiers comportant des erreurs persistantes peut être décrite comme suit :
Si le chemin complet du fichier est trouvé et si le jeu de données est monté, le chemin complet du fichier s'affiche. Par exemple :
/monkey/a.txt
Si chemin complet du fichier est trouvé mais que le jeu de données n'est pas monté, le nom du jeu de données non précédé d'un slash (/) s'affiche, suivi du chemin du fichier au sein du jeu de données. Par exemple :
monkey/ghost/e.txt
Si le nombre d'objet vers un chemin de fichiers ne peut pas être converti, soit en raison d'une erreur soit parce qu'aucun chemin de fichiers réel n'est associé à l'objet, tel que c'est le cas pour dnode_t, alors le nom du jeu de données s'affiche, suivi du numéro de l'objet. Par exemple :
monkey/dnode:<0x0>
En cas d'altération d'un MOS (Meta-Object Set, jeu de méta-objet), la balise spéciale <metadata> s'affiche, suivie du numéro de l'objet.
Si l'altération est localisée dans les métadonnées d'un répertoire ou d'un fichier, vous devez déplacer le fichier vers un autre emplacement. Vous pouvez déplacer en toute sécurité les fichiers ou les répertoires vers un autre emplacement. Cela permet de restaurer l'objet d'origine à son emplacement.
Si un système de fichiers endommagé contient des données endommagées avec plusieurs références de blocs tels que les instantanés, la commande zpool status -v ne peut pas afficher les chemins de toutes les données endommagées. La génération de rapports zpool status actuelle de données endommagées est limitée par le niveau d'altération de métadonnées et par la réutilisation d'un bloc après l'exécution de la commande zpool status. Les blocs dédupliqués rendent la génération de rapports sur les données endommagées encore plus complexe.
Si vous avez des données endommagées et que la commande zpool status -v signale que les données d'instantané sont affectées, pensez à exécuter la commande suivante afin d'identifier les autres chemins endommagés :
Si des dommages sont présents dans les métadonnées du pool et que cela empêche l'ouverture ou l'importation du pool, vous pouvez utiliser les options suivantes :
Tentez de récupérer le pool à l'aide de la commande zpool clear -F ou zpool import -F. Ces commandes tentent d'annuler (roll back) les dernières transactions restantes du pool pour qu'elles reviennent à un fonctionnement normal. Vous pouvez utiliser la commande zpool status pour vérifier le pool endommagé et les mesures de récupération recommandées. Par exemple :
# zpool status pool: tpool state: FAULTED status: The pool metadata is corrupted and the pool cannot be opened. action: Recovery is possible, but will result in some data loss. Returning the pool to its state as of Wed Jul 14 11:44:10 2010 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool clear -F tpool'. A scrub of the pool is strongly recommended after recovery. see: http://www.sun.com/msg/ZFS-8000-72 scrub: none requested config: NAME STATE READ WRITE CKSUM tpool FAULTED 0 0 1 corrupted data c1t1d0 ONLINE 0 0 2 c1t3d0 ONLINE 0 0 4
Le processus de récupération comme décrit dans la sortie ci-dessus consiste à utiliser la commande suivante :
# zpool clear -F tpool
Si vous tentez d'importer un pool de stockage endommagé, des messages semblables aux messages suivants s'affichent :
# zpool import tpool cannot import 'tpool': I/O error Recovery is possible, but will result in some data loss. Returning the pool to its state as of Wed Jul 14 11:44:10 2010 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool import -F tpool'. A scrub of the pool is strongly recommended after recovery.
Le processus de récupération comme décrit dans la sortie ci-dessus consiste à utiliser la commande suivante :
# zpool import -F tpool Pool tpool returned to its state as of Wed Jul 14 11:44:10 2010. Discarded approximately 5 seconds of transactions
Si le pool endommagé se trouve dans le fichier zpool.cache, le problème est détecté lors de l'initialisation du système. Le pool endommagé est consigné dans la commande zpool status. Si le pool ne se trouve pas dans le fichier zpool.cache, il n'est pas importé ou ouvert et des messages indiquant que le pool est endommagé s'affichent lorsque vous tentez de l'importer.
Vous pouvez importer un pool endommagé en mode lecture seule. Cette méthode permet d'importer le pool, ce qui vous permet d'accéder aux données. Par exemple :
# zpool import -o readonly=on tpool
Pour plus d'informations sur l'importation d'un pool en lecture seule, reportez-vous à la section Importation d'un pool en mode lecture seule.
Vous pouvez importer un pool avec un périphérique de journalisation manquant à l'aide de la commande zpool import -m. Pour plus d'informations, reportez-vous à la section Importation d'un pool avec un périphérique de journalisation manquant.
Si le pool ne peut pas être récupéré par le biais de l'une des méthodes de récupération de pool, vous devez restaurer le pool et l'ensemble de ses données à partir d'une copie de sauvegarde. Le mécanisme utilisé varie énormément selon la configuration du pool et la stratégie de sauvegarde. Tout d'abord, enregistrez la configuration telle qu'elle s'affiche dans la commande zpool status pour pouvoir la recréer après la destruction du pool. Ensuite, détruisez le pool à l'aide de la commande zpool destroy -f.
Conservez également un fichier décrivant la disposition des jeux de données et les diverses propriétés définies localement dans un emplacement sûr, car ces informations deviennent inaccessibles lorsque le pool est lui-même inaccessible. Avec la configuration du pool et la disposition des jeux de données, vous pouvez reconstruire la configuration complète après destruction du pool. Les données peuvent ensuite être renseignées par la stratégie de sauvegarde ou de restauration de votre choix.