ZFS-Datensätze verschwinden beim Neustart

12


Ich habe ZFS (0.6.5) in meinem Centos 7 installiert und auch einen Zpool erstellt. Abgesehen von der Tatsache, dass meine Datensätze beim Neustart verschwinden, funktioniert alles einwandfrei.
Ich habe versucht, dieses Problem mithilfe verschiedener Online-Ressourcen und Blogs zu beheben, konnte jedoch nicht das gewünschte Ergebnis erzielen.
Nach dem Neustart , wenn ich die Ausgabe von zfs listBefehl erhalte ich „keine Datensätze verfügbar“ und zpool listgebe „keine Pools zur Verfügung“ Nach einer Vielzahl von Online - Forschung zu tun, konnte ich es manuell durch den Import der Cache - Datei funktioniert zpool import -c cachefile , aber Trotzdem musste ich zpool set cachefile = / etc / zfs / zpool.cache Pool vor dem Neustart ausführen , um es später nach dem Neustart zu importieren.

Das ist wassystemctl status zfs-import-cache sieht aus wie,

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"

Ich bin nicht sicher, ob dies ein bekanntes Problem ist. Wenn ja, gibt es eine Problemumgehung dafür? Vielleicht eine einfache Möglichkeit, meine Datensätze nach dem Neustart und vorzugsweise ohne den Overhead einer Cache-Datei zu erhalten.

Vishnu Nair
quelle
Was sagt der Zpool-Status -v und der Zpool-Import?
Ostendali
Hallo, zpool status -v zpool status -v no pools availableund, zpool importgibt mir daspool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Vishnu Nair
Mit zfs import kann ich es zum Laufen bringen, indem ich die Cache-Datei zunächst mit dem Befehl set cachefile einstelle
Vishnu Nair
Sie haben /etc/init/zpool-import.conf verpasst. Können Sie auch den Inhalt dieser Datei veröffentlichen?
Ostendali
1
Ist das ZFS-Ziel aktiviert? systemctl status zfs.target
Michael Hampton

Antworten:

6

Bitte stellen Sie sicher, dass der zfs-Dienst (Ziel) aktiviert ist. Das ist es, was den Pool-Import / Export beim Booten / Herunterfahren handhabt.

zfs.target loaded active active ZFS startup target

Sie sollten niemals damit kämpfen müssen. Wenn Sie eine Chance haben, führen Sie ein Update für Ihre zfs-Distribution durch, da ich weiß, dass sich die Startdienste in den letzten Versionen verbessert haben:

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos
ewwhite
quelle
Hallo, ich hatte auch 0.6.5.3 getestet, was meiner Meinung nach die neueste Version ist, war aber immer noch mit diesem Problem konfrontiert. Mit .6.5.3 musste ich sogar modprobe zfsjedes Mal ausführen, wenn ich einen Neustart durchführte, um die Module zu laden. Übrigens, Ziel ist nicht aktiviert. Bitte überprüfen Sie die Ausgabe in den obigen Kommentaren (Antwort an Michael). Darf ich wissen, wie man einen einstellt? Vielen Dank.
Vishnu Nair
Alles, was Sie tun müssen, ist wahrscheinlich so etwas wie:systemctl enable zfs.target
ewwhite
4

ok, der Pool ist also da, was bedeutet, dass das Problem bei Ihrem zfs.cache liegt, er nicht dauerhaft ist und deshalb seine Konfiguration beim Neustart verliert. Ich würde vorschlagen, zu rennen:

      zpool import zfsPool 
      zpool list 

Und prüfen Sie, ob das verfügbar ist. Starten Sie den Server neu und prüfen Sie, ob er zurückkommt. Wenn dies nicht der Fall ist, führen Sie dieselben Schritte aus und führen Sie Folgendes aus:

      zpool scrub

Nur um sicherzustellen, dass mit Ihrem Pool usw. alles in Ordnung ist.

Bitte posten Sie auch den Inhalt von:

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

Wenn Sie nach einer Problemumgehung für dieses Problem suchen, können Sie diese natürlich wie folgt festlegen.

Ändern Sie den Wert von 1 auf 0:

    /etc/init/zpool-import.conf

und fügen Sie Folgendes zu Ihrem /etc/rc.local hinzu:

    zfs mount -a

Das wird den Trick machen.

ostendali
quelle
Ich lief, zfs import zfsPoolwas wie erwartet meinen Pool importierte, dann machte ich einen Neustart, lief, zfs listwas mir gab no datasets. Ich wiederholte die Schritte noch einmal und lief, zfs scrubwas mir keine Ausgabe gab, ich machte jetzt wieder einen Neustart und immer noch sind die Datensätze nicht erhalten
Vishnu Nair
Falls Sie meine Anfrage nicht gesehen haben, werde ich erneut posten: "Können Sie auch posten, was sich in / etc / default / zfs befindet?"
Ostendali
3

Ich hatte auch das Problem, dass das zfs nach einem Neustart verschwindet. Das Ausführen von CentOS 7.3 und ZFS 0.6.5.9 Reimporting brachte es nur bis zum nächsten Neustart zurück (zpool import zfspool).

Hier ist der Befehl, der für mich funktioniert hat (damit er durch Neustarts bestehen bleibt):

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

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

Jeff
quelle