ชุดข้อมูล ZFS หายไปเมื่อรีบูต


13


ฉันได้ติดตั้ง ZFS (0.6.5) ใน Centos 7 ของฉันแล้วและฉันได้สร้าง zpool ทุกอย่างทำงานได้ดีนอกเหนือจากความจริงที่ว่าชุดข้อมูลของฉันหายไปเมื่อรีบูต
ฉันพยายามแก้ไขปัญหานี้ด้วยความช่วยเหลือของแหล่งข้อมูลออนไลน์และบล็อกต่างๆ แต่ไม่สามารถรับผลลัพธ์ที่ต้องการได้
หลังจากรีบูตเมื่อฉันออกzfs listคำสั่งฉันได้รับ"ไม่มีชุดข้อมูล"และzpool listให้"ไม่มีกลุ่มที่มี" หลังจากทำการวิจัยออนไลน์จำนวนมากฉันสามารถทำให้มันทำงานได้โดยการนำเข้าไฟล์แคชด้วยตนเองโดยใช้zpool import -c cachefileแต่ ฉันยังคงต้องใช้งานzpool set cachefile = / etc / zfs / zpool.cache Poolก่อนที่จะทำการรีบูทเพื่อที่จะนำเข้ามันในภายหลังหลังจากรีบูต

นี่คืออะไรsystemctl status zfs-import-cache ดูเหมือนกับ,

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"

ฉันไม่แน่ใจว่านี่เป็นปัญหาที่ทราบหรือไม่ .. ถ้าใช่มีวิธีแก้ไขปัญหานี้หรือไม่? อาจเป็นวิธีที่ง่ายในการเก็บรักษาชุดข้อมูลของฉันหลังจากรีบูตและดีกว่าโดยไม่ต้องมีค่าใช้จ่ายของไฟล์แคช


สถานะ zpool -v ใดและการนำเข้า zpool บอกว่าอย่างไร
ostendali

สวัสดี zpool status -v zpool status -v no pools availableและzpool importมอบสิ่งนี้ให้ฉันpool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
วิษณุนาร์

การนำเข้า zfs คือวิธีที่ฉันสามารถใช้งานได้โดยการตั้งค่า cachefile เริ่มต้นโดยใช้คำสั่ง set cachefile
Vishnu Nair

คุณพลาด /etc/init/zpool-import.conf คุณสามารถโพสต์เนื้อหาของไฟล์นั้นได้หรือไม่?
ostendali

1
เป้าหมาย ZFS เปิดใช้งานหรือไม่ systemctl status zfs.target
Michael Hampton

คำตอบ:


6

โปรดตรวจสอบให้แน่ใจว่าเปิดใช้งานบริการ zfs (เป้าหมาย) แล้ว นั่นคือสิ่งที่จัดการการนำเข้า / ส่งออกพูลเมื่อบูต / ปิดเครื่อง

zfs.target loaded active active ZFS startup target

คุณไม่ควรต่อสู้กับสิ่งนี้ หากคุณมีโอกาสให้รันการอัปเดตการกระจาย zfs ของคุณเนื่องจากฉันรู้ว่าบริการ startups ได้รับการปรับปรุงในช่วงสองสามครั้งล่าสุด:

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

สวัสดีฉันได้ทดสอบ 0.6.5.3 เช่นกันซึ่งเป็นรุ่นล่าสุดที่ฉันเชื่อ แต่ยังคงต้องเผชิญกับปัญหานี้ด้วย. 6.5.3 ฉันต้องทำงานmodprobe zfsทุกครั้งที่รีบูตโหลดโมดูล Btw ไม่ได้เปิดใช้งานเป้าหมายโปรดตรวจสอบผลลัพธ์ในความคิดเห็นด้านบน (ตอบกลับ Michael) ฉันขอทราบวิธีตั้งค่าได้ไหม ขอบคุณ
พระนารายณ์แนร์

สิ่งที่คุณต้องทำน่าจะเป็นเช่น:systemctl enable zfs.target
ewwhite

5

ตกลงสระว่ายน้ำอยู่ตรงนั้นซึ่งหมายความว่าปัญหาเกิดขึ้นกับ zfs.cache ของคุณมันไม่คงอยู่และนั่นคือสาเหตุที่มันหายไปจาก config เมื่อรีบูทของคุณ สิ่งที่ฉันแนะนำให้ทำคือเรียกใช้:

      zpool import zfsPool 
      zpool list 

และตรวจสอบว่ามันใช้ได้หรือไม่ รีบูทเซิร์ฟเวอร์และดูว่ามันกลับมาหรือไม่ถ้าไม่ทำตามขั้นตอนเดิมแล้วเรียกใช้

      zpool scrub

เพียงเพื่อให้แน่ใจว่าทุกอย่างไม่เป็นไรกับสระว่ายน้ำของคุณและอื่น ๆ

กรุณาโพสต์เนื้อหาของ:

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

หรือหากคุณกำลังมองหาวิธีแก้ไขปัญหานี้คุณสามารถกำหนดได้ดังต่อไปนี้

เปลี่ยนค่าจาก 1 เป็น 0:

    /etc/init/zpool-import.conf

และเพิ่มสิ่งต่อไปนี้ใน /etc/rc.local ของคุณ:

    zfs mount -a

นั่นจะเป็นการหลอกลวง


ฉันวิ่งzfs import zfsPoolซึ่งคาดว่าจะเป็นสระว่ายน้ำนำเข้าของฉันแล้วฉันไม่รีบูต, วิ่งที่ให้ฉันzfs list no datasetsฉันทำซ้ำขั้นตอนอีกครั้งและวิ่งzfs scrubซึ่งไม่ได้ให้ผลลัพธ์ใด ๆ ฉันได้ทำการรีบูตอีกครั้งและยังคงไม่ได้เก็บชุดข้อมูลไว้
Vishnu Nair

ในกรณีที่คุณไม่เห็นคำขอของฉันฉันจะโพสต์อีกครั้ง "คุณสามารถโพสต์สิ่งที่อยู่ใน / etc / default / zfs ได้หรือไม่"
ostendali

4

ฉันยังมีปัญหาของ zfs ที่หายไปหลังจากรีบูต การเรียกใช้ CentOS 7.3 และ ZFS 0.6.5.9 การนำเข้าอีกครั้งนำมาคืน (zpool import zfspool) เท่านั้นจนกว่าจะรีบูตครั้งถัดไป

นี่คือคำสั่งที่ใช้งานได้สำหรับฉัน (เพื่อให้มันคงอยู่ผ่านการรีบูต):

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

(พบได้ที่: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )


พบได้ในวิกิที่นี่ตอนนี้: github.com/openzfs/zfs/wiki/FAQ#the-etczfszpoolcache-file
Daniel S. Sterling
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.