Kumpulan Data ZFS menghilang saat reboot

13


Saya telah menginstal ZFS (0.6.5) di Centos 7 saya dan saya juga membuat zpool, semuanya berfungsi dengan baik terlepas dari kenyataan bahwa dataset saya hilang saat reboot.
Saya telah mencoba men-debug masalah ini dengan bantuan berbagai sumber daya online dan blog tetapi tidak bisa mendapatkan hasil yang diinginkan.
Setelah reboot, ketika saya mengeluarkan zfs listperintah saya mendapatkan "tidak ada dataset tersedia" , dan zpool listmemberikan "tidak ada kumpulan tersedia" Setelah melakukan banyak riset online, saya bisa membuatnya bekerja dengan mengimpor file cache secara manual menggunakan zpool import -c cachefile , tetapi masih saya harus menjalankan zpool set cachefile = / etc / zfs / zpool.cache Pool sebelum reboot agar dapat mengimpornya nanti setelah reboot.

Ini adalah apasystemctl status zfs-import-cache seperti,

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"

Saya tidak yakin apakah ini masalah yang diketahui, .. jika ya, Apakah ada solusi untuk ini? mungkin cara mudah untuk melestarikan dataset saya setelah reboot dan lebih baik tanpa overhead dari file cache.

Wisnu Nair
sumber
apa yang dikatakan status zpool -v dan impor zpool?
ostendali
Hai, zpool status -v zpool status -v no pools availableDan, zpool importberi aku inipool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Wisnu Nair
zfs import adalah bagaimana saya bisa membuatnya bekerja, dengan mengatur cachefile pada awalnya menggunakan perintah set cachefile
Vishnu Nair
Anda melewatkan /etc/init/zpool-import.conf, bisakah Anda memposting konten file itu juga?
ostendali
1
Apakah target ZFS diaktifkan? systemctl status zfs.target
Michael Hampton

Jawaban:

6

Pastikan layanan zfs (target) diaktifkan. Itulah yang menangani pool impor / ekspor saat boot / shutdown.

zfs.target loaded active active ZFS startup target

Anda seharusnya tidak harus berjuang dengan ini. Jika Anda memiliki kesempatan, jalankan pembaruan pada distribusi zfs Anda, karena saya tahu layanan startup telah meningkat selama beberapa rilis terakhir:

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos
putih
sumber
Hai, saya telah menguji 0.6.5.3 juga yang merupakan rilis terbaru yang saya percaya, tetapi masih menghadapi masalah ini, dengan .6.5.3 Saya bahkan harus menjalankan modprobe zfssetiap kali saya melakukan reboot untuk memuat modul. Btw, Target tidak diaktifkan, silakan periksa output di komentar di atas (balas ke Michael). Bolehkah saya tahu cara mengaturnya? Terima kasih.
Wisnu Nair
Yang perlu Anda lakukan mungkin adalah sesuatu seperti:systemctl enable zfs.target
ewwhite
5

ok, jadi ada kolam, yang berarti masalahnya ada pada zfs.cache Anda, itu tidak persisten dan itulah mengapa ia kehilangan konfigurasi ketika reboot. apa yang saya sarankan lakukan adalah menjalankan:

      zpool import zfsPool 
      zpool list 

Dan periksa apakah tersedia. Reboot server dan lihat apakah ia kembali, jika tidak maka lakukan langkah-langkah yang sama dan jalankan:

      zpool scrub

Hanya untuk memastikan semuanya baik-baik saja dengan kolam renang Anda dll.

Tolong juga posting konten dari:

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

Atau, jika Anda mencari solusi untuk masalah ini, Anda dapat mengaturnya sebagai berikut.

Ubah nilai dari 1 menjadi 0:

    /etc/init/zpool-import.conf

dan tambahkan berikut ini ke /etc/rc.local Anda:

    zfs mount -a

Itu akan melakukan triknya.

ostendali
sumber
Saya berlari zfs import zfsPoolyang seperti yang diharapkan mengimpor kolam saya, kemudian saya melakukan reboot, berlari zfs listyang memberi saya no datasets. Saya mengulangi langkah-langkah lagi dan berlari zfs scrubyang tidak memberi saya output apa pun, saya melakukan reboot sekarang lagi, dan masih set data tidak disimpan
Vishnu Nair
jika Anda belum melihat permintaan saya, saya akan memposting lagi "bisakah Anda juga memposting apa yang ada di / etc / default / zfs?"
ostendali
4

Saya juga punya masalah zfs menghilang setelah reboot. Menjalankan CentOS 7.3 dan ZFS 0.6.5.9 Mengimport ulang membawanya kembali (zpool import zfspool) hanya sampai reboot berikutnya.

Inilah perintah yang bekerja untuk saya (untuk membuatnya bertahan melalui reboot):

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

(Temukan ini di: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )

Jeff
sumber
Ditemukan di wiki di sini sekarang: github.com/openzfs/zfs/wiki/FAQ#the-etczfszpoolcache-file
Daniel S. Sterling