ZFS zpool.cache
Le fichier /boot/zfs/zpool.cache
Le fichier /boot/zfs/zpool.cache contient en permanence la description des pools actifs du système. Lors du démarrage du système, il décrit les pools qui peuvent être utilisés:
- pour monter la racine du système de fichiers si celle-ci est gérée sous ZFS,
- pour monter automatiquement, lors de l'exécution du script /etc/rc.d/zfs, les différents autres systèmes de fichiers gérés sous ZFS.
Ce fichier revêt donc une importance capitale si la racine du système de fichier est sous ZFS. En effet, dans ce cas, il est le seul élément qui décrit le pool contenant la racine du système de fichier. Si ce pool n'est pas référencé dans /boot/zfs/zpool.cache, la racine n'est pas accessible par le noyau. De plus, l'absence de système de fichier ne permet pas l'utilisation de la commande zpool import pour importer le pool indispensable; le démarrage du système ne peut pas être complété. Une erreur à ce niveau se caractérise par un message à la console:
Trying to mount root from zfs:rpool/root Manual root filesystem specification: <fstype>:<device> Mount <device> using filesystem <fstype> eg. ufs:da0s1a ? List valid disk boot devices <empty line> Abort manual input
Lors de la création des fichiers d'amorçage ou lors du diagnostic d'un problème de démarrage, ll peut donc être utile de pouvoir visualiser le contenu du fichier /boot/zfs/zpool.cache. La commande zdb peut être utilisée à cet effet:
[root@morzine ~]# zdb -C rpool version=13 name='rpool' state=0 txg=882905 pool_guid=17669857244588609348 hostid=4156526014 hostname='unset' vdev_tree type='root' id=0 guid=17669857244588609348 children[0] type='mirror' id=0 guid=3225603179255348056 metaslab_array=23 metaslab_shift=28 ashift=9 asize=51534888960 is_log=0 children[0] type='disk' id=0 guid=17573085726489368265 path='/dev/da0p2' whole_disk=0 children[1] type='disk' id=1 guid=2736169600077218893 path='/dev/da1p2' whole_disk=0 [root@morzine ~]#
Vu l'importance de ce fichier dans l'utilisation de ZFS, il est vivement conseiller d'en garder une copie de sécurité:
[root@morzine ~]# cp /boot/zfs/zpool.cache /boot/zfs/zpool.cache.backup [root@morzine ~]# chflags schg /boot/zfs/zpool.cache.backup [root@morzine ~]#
Le contenu d'un fichier zpool.cache ne se trouvant pas à son emplacement par défaut peut aussi être visualisé par la commande zdb:
[root@morzine ~]# zdb -C -U /boot/zfs/zpool.cache.backup rpool version=13 name='rpool' state=0 txg=51623 pool_guid=17669857244588609348 hostname='unset' vdev_tree type='root' id=0 guid=17669857244588609348 children[0] type='mirror' id=0 guid=3225603179255348056 metaslab_array=23 metaslab_shift=28 ashift=9 asize=51534888960 is_log=0 children[0] type='disk' id=0 guid=17573085726489368265 path='/dev/da0p2' whole_disk=0 children[1] type='disk' id=1 guid=2736169600077218893 path='/dev/da1p2' whole_disk=0 [root@morzine ~]#