Los conjuntos de datos de ZFS desaparecen al reiniciar


13


He instalado ZFS (0.6.5) en mi Centos 7 y también he creado un zpool, todo funciona bien, aparte del hecho de que mis conjuntos de datos desaparecen al reiniciar.
He estado tratando de depurar este problema con la ayuda de varios recursos en línea y blogs, pero no pude obtener el resultado deseado.
Después de reiniciar, cuando ejecuto el zfs listcomando obtengo "no hay conjuntos de datos disponibles" y zpool listaparece "no hay grupos disponibles". Después de investigar mucho en línea, podría hacerlo funcionar importando manualmente el archivo de caché usando zpool import -c cachefile , pero aún así tuve que ejecutar zpool set cachefile = / etc / zfs / zpool.cache Pool antes del reinicio para importarlo más tarde después de reiniciar.

Esto es lo quesystemctl status zfs-import-cache parece,

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"

No estoy seguro de si se trata de un problema conocido ... en caso afirmativo, ¿hay alguna solución para esto? quizás una manera fácil de preservar mis conjuntos de datos después de reiniciar y preferiblemente sin la sobrecarga de un archivo de caché.


¿Qué dice zpool status -v y zpool import?
ostendali

Hola, zpool status -v zpool status -v no pools availabley, zpool importdame estopool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Vishnu Nair

zfs import es cómo podría hacer que funcione, configurando el archivo cache inicialmente usando el comando set cachefile
Vishnu Nair

te perdiste /etc/init/zpool-import.conf, ¿puedes publicar también el contenido de ese archivo?
ostendali

1
¿Está habilitado el objetivo de ZFS? systemctl status zfs.target
Michael Hampton

Respuestas:


6

Asegúrese de que el servicio zfs (destino) esté habilitado. Eso es lo que maneja la importación / exportación de grupos en el arranque / apagado.

zfs.target loaded active active ZFS startup target

Nunca deberías tener que luchar con esto. Si tiene la oportunidad, ejecute una actualización en su distribución zfs, ya que sé que los servicios de startups han mejorado en los últimos lanzamientos:

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos

Hola, también probé 0.6.5.3, que es la última versión, creo, pero aún me enfrento a este problema, con .6.5.3 incluso tuve que ejecutarlo modprobe zfscada vez que hice un reinicio para cargar los módulos. Por cierto, Target no está habilitado, verifique el resultado en los comentarios anteriores (respuesta a Michael). ¿Puedo saber cómo configurar uno? Gracias.
Vishnu Nair

Todo lo que necesitas hacer es probablemente algo como:systemctl enable zfs.target
ewwhite

5

ok, entonces el grupo está ahí, lo que significa que el problema está en su zfs.cache, no es persistente y es por eso que pierde su configuración cuando reinicia. lo que sugeriría hacer es ejecutar:

      zpool import zfsPool 
      zpool list 

Y verifique si está disponible. Reinicie el servidor y vea si regresa, si no es así, realice los mismos pasos y ejecute:

      zpool scrub

Solo para asegurarse de que todo esté bien con su piscina, etc.

Pls también publica el contenido de:

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

Alternativamente, si está buscando una solución a este problema, puede configurarlo de la siguiente manera.

Cambie el valor de 1 a 0:

    /etc/init/zpool-import.conf

y agregue lo siguiente a su /etc/rc.local:

    zfs mount -a

Eso hará el truco.


Ejecuté lo zfs import zfsPoolque como se esperaba importó mi grupo, luego hice un reinicio, ejecuté lo zfs listque me dio no datasets. Repetí los pasos nuevamente y ejecuté, zfs scrublo que no me dio ningún resultado, reinicié ahora de nuevo y aún no se conservan los conjuntos de datos
Vishnu Nair

en caso de que no haya visto mi solicitud, volveré a publicar "¿también puede publicar lo que está en / etc / default / zfs?"
ostendali

4

También tuve el problema de la desaparición de zfs después de un reinicio. La ejecución de CentOS 7.3 y ZFS 0.6.5.9 Reimporting lo devolvió (zpool import zfspool) solo hasta el próximo reinicio.

Aquí está el comando que funcionó para mí (para que persista durante los reinicios):

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

(Encontrado esto en: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.