I set di dati ZFS scompaiono al riavvio


13


Ho installato ZFS (0.6.5) nel mio Centos 7 e ho anche creato uno zpool, tutto funziona benissimo a parte il fatto che i miei set di dati scompaiono al riavvio.
Ho cercato di eseguire il debug di questo problema con l'aiuto di varie risorse e blog online ma non sono riuscito a ottenere il risultato desiderato.
Dopo il riavvio, quando eseguo il zfs listcomando ottengo "nessun set di dati disponibile" e non zpool listviene visualizzato "nessun pool disponibile" Dopo aver fatto molte ricerche online, ho potuto farlo funzionare importando manualmente il file cache utilizzando zpool import -c cachefile , ma comunque ho dovuto eseguire zpool set cachefile = / etc / zfs / zpool.cache Pool prima del riavvio in modo da importarlo in seguito dopo il riavvio.

Questo è ciò chesystemctl status zfs-import-cache sembra,

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"

Non sono sicuro che si tratti di un problema noto, .. in caso affermativo, esiste qualche soluzione? forse un modo semplice per conservare i miei set di dati dopo il riavvio e preferibilmente senza l'overhead di un file di cache.


cosa dice lo stato di zpool -v e zpool import?
ostendali,

Ciao, zpool status -v zpool status -v no pools availablee, zpool importmi dà questopool: 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'importazione zfs è il modo in cui potrei farlo funzionare, impostando inizialmente il file cache utilizzando il comando set cachefile
Vishnu Nair,

ti sei perso /etc/init/zpool-import.conf, puoi pubblicare anche il contenuto di quel file?
ostendali,

1
La destinazione ZFS è abilitata? systemctl status zfs.target
Michael Hampton,

Risposte:


6

Assicurati che il servizio zfs (destinazione) sia abilitato. Questo è ciò che gestisce l'importazione / esportazione del pool all'avvio / arresto.

zfs.target loaded active active ZFS startup target

Non dovresti mai lottare con questo. Se ne hai la possibilità, esegui un aggiornamento sulla tua distribuzione zfs, poiché so che i servizi di avvio sono migliorati rispetto alle ultime versioni:

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

Ciao, avevo testato anche 0.6.5.3, che sembra essere l'ultima versione che credo, ma ho ancora affrontato questo problema, con .6.5.3 ho dovuto anche eseguire modprobe zfsogni volta che ho fatto un riavvio per caricare i moduli. A proposito, Target non è abilitato, controlla l'output nei commenti sopra (rispondi a Michael). Posso sapere come impostarne uno? Grazie.
Vishnu Nair,

Tutto quello che devi fare è probabilmente qualcosa del tipo:systemctl enable zfs.target
ewwhite,

5

ok, quindi il pool è lì, il che significa che il problema è con zfs.cache, non è persistente ed è per questo che perde la sua configurazione al riavvio. quello che suggerirei di fare è eseguire:

      zpool import zfsPool 
      zpool list 

E controlla se è disponibile. Riavviare il server e vedere se ritorna, in caso contrario eseguire gli stessi passaggi ed eseguire:

      zpool scrub

Solo per assicurarsi che tutto sia a posto con la tua piscina, ecc.

Pls pubblica anche il contenuto di:

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

In alternativa, se stai cercando una soluzione a questo problema, puoi ovviamente impostarlo come segue.

Modifica il valore da 1 a 0:

    /etc/init/zpool-import.conf

e aggiungi quanto segue al tuo /etc/rc.local:

    zfs mount -a

Quello farà il trucco.


Ho corso zfs import zfsPoolche, come previsto, ha importato il mio pool, quindi ho fatto un riavvio, eseguito zfs listche mi ha dato no datasets. Ho ripetuto di nuovo i passaggi e zfs scrubho eseguito ciò che non mi ha dato alcun output, ora ho riavviato di nuovo, e ancora i set di dati non sono conservati
Vishnu Nair,

se non hai visto la mia richiesta, inserirò di nuovo "puoi pubblicare anche ciò che è in / etc / default / zfs?"
ostendali,

4

Ho anche avuto il problema della scomparsa di zfs dopo un riavvio. L'esecuzione di CentOS 7.3 e ZFS 0.6.5.9 La reimportazione lo ha riportato (zpool import zfspool) solo fino al prossimo riavvio.

Ecco il comando che ha funzionato per me (per farlo persistere attraverso i riavvii):

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

(Trovato su: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.