Vis*_*air 14 linux zfs zfsonlinux centos7
我已经在 Centos 7 中安装了 ZFS(0.6.5) 并且我还创建了一个 zpool,除了我的数据集在重新启动时消失之外,一切正常。
我一直在尝试借助各种在线资源和博客来调试此问题,但无法获得理想的结果。
重新启动后,当我发出zfs list
命令时,我得到"no datasets available",并zpool list
给出了"no pools available"
经过大量在线研究,我可以通过使用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"
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是一个已知问题,如果是,是否有任何解决方法?也许是一种在重启后保留我的数据集的简单方法,最好是没有缓存文件的开销。
好的,所以池在那里,这意味着问题出在您的 zfs.cache 上,它不是持久的,这就是为什么在您重新启动时它会丢失其配置。我建议做的是运行:
zpool import zfsPool
zpool list
Run Code Online (Sandbox Code Playgroud)
并检查它是否可用。重新启动服务器并查看它是否恢复,如果没有,则执行相同的步骤并运行:
zpool scrub
Run Code Online (Sandbox Code Playgroud)
只是为了确保您的游泳池等一切正常。
请同时发布以下内容:
/etc/default/zfs.conf
/etc/init/zpool-import.conf
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在寻找解决此问题的方法,您当然可以将其设置如下。
将值从 1 更改为 0:
/etc/init/zpool-import.conf
Run Code Online (Sandbox Code Playgroud)
并将以下内容添加到您的 /etc/rc.local 中:
zfs mount -a
Run Code Online (Sandbox Code Playgroud)
这样就行了。
请确保启用了 zfs 服务(目标)。这就是在启动/关闭时处理池导入/导出的内容。
zfs.target loaded active active ZFS startup target
你永远不应该为此而挣扎。如果有机会,请在 zfs 发行版上运行更新,因为我知道在过去的几个版本中,初创公司的服务有所改进:
[root@zfs2 ~]# rpm -qi zfs
Name : zfs
Version : 0.6.5.2
Release : 1.el7.centos
Run Code Online (Sandbox Code Playgroud)