Les jeux de données ZFS disparaissent au redémarrage

13


J'ai installé ZFS (0.6.5) dans mon Centos 7 et j'ai également créé un zpool, tout fonctionne bien à part le fait que mes jeux de données disparaissent au redémarrage.
J'ai essayé de déboguer ce problème avec l'aide de diverses ressources en ligne et blogs, mais je n'ai pas pu obtenir le résultat souhaité.
Après le redémarrage, lorsque j'émets la zfs listcommande, j'obtiens «aucun jeu de données disponible» et zpool listdonne «aucun pool disponible». Après avoir fait beaucoup de recherches en ligne, je pouvais le faire fonctionner en important manuellement le fichier cache à l'aide de zpool import -c cachefile , mais je devais encore exécuter zpool set cachefile = / etc / zfs / zpool.cache Pool avant le redémarrage afin de l'importer plus tard après le redémarrage.

C'est quoisystemctl status zfs-import-cache ressemble à,

zfs-import-cache.service - Import ZFS pools by cache file Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; static) Active: inactive (dead)

cat /etc/sysconfig/zfs

# ZoL userland configuration.

# Run `zfs mount -a` during system start?
ZFS_MOUNT='yes'

# Run `zfs unmount -a` during system stop?
ZFS_UNMOUNT='yes'

# Run `zfs share -a` during system start?
# nb: The shareiscsi, sharenfs, and sharesmb dataset properties.
ZFS_SHARE='yes'

# Run `zfs unshare -a` during system stop?
ZFS_UNSHARE='yes'

# Specify specific path(s) to look for device nodes and/or links for the
# pool import(s). See zpool(8) for more information about this variable.
# It supersedes the old USE_DISK_BY_ID which indicated that it would only
# try '/dev/disk/by-id'.
# The old variable will still work in the code, but is deprecated.
#ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"

# Should the datasets be mounted verbosely?
# A mount counter will be used when mounting if set to 'yes'.
VERBOSE_MOUNT='no'

# Should we allow overlay mounts?
# This is standard in Linux, but not ZFS which comes from Solaris where this
# is not allowed).
DO_OVERLAY_MOUNTS='no'

# Any additional option to the 'zfs mount' command line?
# Include '-o' for each option wanted.
MOUNT_EXTRA_OPTIONS=""

# Build kernel modules with the --enable-debug switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG='no'

# Build kernel modules with the --enable-debug-dmu-tx switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG_DMU_TX='no'

# Keep debugging symbols in kernel modules?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_DISABLE_STRIP='no'

# Wait for this many seconds in the initrd pre_mountroot?
# This delays startup and should be '0' on most systems.
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_PRE_MOUNTROOT_SLEEP='0'

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

# List of additional datasets to mount after the root dataset is mounted?
#
# The init script will use the mountpoint specified in the 'mountpoint'
# property value in the dataset to determine where it should be mounted.
#
# This is a space separated list, and will be mounted in the order specified,
# so if one filesystem depends on a previous mountpoint, make sure to put
# them in the right order.
#
# It is not necessary to add filesystems below the root fs here. It is
# taken care of by the initrd script automatically. These are only for
# additional filesystems needed. Such as /opt, /usr/local which is not
# located under the root fs.
# Example: If root FS is 'rpool/ROOT/rootfs', this would make sense.
#ZFS_INITRD_ADDITIONAL_DATASETS="rpool/ROOT/usr rpool/ROOT/var"

# List of pools that should NOT be imported at boot?
# This is a space separated list.
#ZFS_POOL_EXCEPTIONS="test2"

# Optional arguments for the ZFS Event Daemon (ZED).
# See zed(8) for more information on available options.
#ZED_ARGS="-M"

Je ne sais pas s'il s'agit d'un problème connu, .. si oui, existe-t-il une solution à ce problème? peut-être un moyen facile de conserver mes jeux de données après le redémarrage et de préférence sans la surcharge d'un fichier cache.

Vishnu Nair
la source
que dit zpool status -v et zpool import?
ostendali
Salut, zpool status -v zpool status -v no pools availableEt, zpool importdonne-moi çapool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Vishnu Nair
l'importation zfs est la façon dont je pourrais le faire fonctionner, en définissant le cachefile initialement en utilisant la commande set cachefile
Vishnu Nair
vous avez manqué /etc/init/zpool-import.conf, pouvez-vous également publier le contenu de ce fichier?
ostendali
1
La cible ZFS est-elle activée? systemctl status zfs.target
Michael Hampton

Réponses:

6

Veuillez vous assurer que le service zfs (cible) est activé. C'est ce qui gère l'importation / exportation du pool au démarrage / à l'arrêt.

zfs.target loaded active active ZFS startup target

Vous ne devriez jamais avoir à vous battre avec ça. Si vous en avez l'occasion, exécutez une mise à jour sur votre distribution zfs, car je sais que les services de startups se sont améliorés au cours des dernières versions:

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos
ewwhite
la source
Bonjour, j'avais également testé la version 0.6.5.3, qui se trouve être la dernière version, je crois, mais je rencontrais toujours ce problème, avec .6.5.3, je devais même exécuter modprobe zfschaque fois que je faisais un redémarrage pour charger les modules. Btw, la cible n'est pas activée, veuillez vérifier la sortie dans les commentaires ci-dessus (réponse à Michael). Puis-je savoir comment en définir un? Merci.
Vishnu Nair,
Tout ce que vous devez faire est probablement quelque chose comme:systemctl enable zfs.target
ewwhite
5

ok, donc le pool est là, ce qui signifie que le problème est avec votre zfs.cache, il n'est pas persistant et c'est pourquoi il perd sa configuration lors de votre redémarrage. ce que je suggère de faire, c'est d'exécuter:

      zpool import zfsPool 
      zpool list 

Et vérifiez s'il est disponible. Redémarrez le serveur et voyez s'il revient, sinon, effectuez les mêmes étapes et exécutez:

      zpool scrub

Juste pour vous assurer que tout va bien avec votre piscine, etc.

Veuillez également publier le contenu de:

      /etc/default/zfs.conf
      /etc/init/zpool-import.conf

Alternativement, si vous recherchez une solution de contournement à ce problème, vous pouvez bien sûr la définir comme suit.

Modifiez la valeur de 1 à 0:

    /etc/init/zpool-import.conf

et ajoutez ce qui suit à votre /etc/rc.local:

    zfs mount -a

Cela fera l'affaire.

ostendali
la source
J'ai couru zfs import zfsPoolqui, comme prévu, a importé ma piscine, puis j'ai fait un redémarrage, couru zfs listqui m'a donné no datasets. J'ai répété les étapes à nouveau et j'ai couru, zfs scrubce qui ne m'a donné aucune sortie, j'ai redémarré maintenant, et les jeux de données ne sont toujours pas conservés
Vishnu Nair
au cas où vous n'auriez pas vu ma demande, je posterai à nouveau "pouvez-vous également publier ce qui se trouve dans / etc / default / zfs?"
ostendali
4

J'ai également eu le problème de la disparition de zfs après un redémarrage. L'exécution de CentOS 7.3 et ZFS 0.6.5.9 La réimportation l'a ramené (zpool import zfspool) uniquement jusqu'au prochain redémarrage.

Voici la commande qui a fonctionné pour moi (pour la faire persister lors des redémarrages):

systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed zfs.target

(Trouvé sur: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )

Jeff
la source
Je l'ai
Daniel S. Sterling