访问iSCSI块设备,设置为CentOS7上的ZFS卷 – 不会在引导时自动挂载,在重新启动时挂起

我在Softlayer的一个虚拟实例上运行CentOS7。 有一个块存储设备通过multipath / iscsi可用于实例

我已成功将此块设备安装为XFS。 我决定给ZFS一个尝试。 当我手动发出命令来'挂载'这个ZFS卷时,它工作正常。

zpool import -f zfs-data 

在CentOS7上,ZFS有两个问题。

  • a。)我的zpool不会自动挂载在引导上
  • b。)系统在重启时挂起

我怀疑(a)的解决scheme也可以解决(b)。

让我们先来看看(a)

zfsonlinux CentOs 7的github页面上有这样的讨论。 重启之后不能mount / import池

看来,通过yum安装ZFS时,不会创build/ etc / hostid文件。 所以正如在这个页面上build议我运行以下命令来创build它。

 dd if=/dev/urandom of=/etc/hostid bs=4 count=1 

然后突然想到,它不能自动挂载,因为在机器启动的时候,ZFS被加载到iSCSI 之前

从/var/log/boot.log – 第一列是行号

 81 Starting Import ZFS pools by cache file... 147 Starting Open-iSCSI... 

如何更改加载顺序?

(b)在重启时挂起

如果我导入池,不写任何东西,我可以重新启动罚款。 然而,一旦在挂载上交换了任何数据,重新启动/closures日志将包含这些行。

 Stopping Import network configuration from initramfs... [ 550.096199] end_request: I/O error, dev dm-0, sector 5514152 

用不同的数字重复十次。

 WARNING: Pool 'zfs-data' has encountered an uncorrectable I/O failure and has been suspended [...] Unmounting /zfs-data... [...] A stop job is running for /zfs-data 

这永远不会结束,需要硬重启以重新进入实例。

任何有识之士将不胜感激。

好问题…我不确定我会推荐以这种方式使用ZFS,特别是因为块设备预计会在启动。 但是请记住,有几个与ZFS相关的服务。

 zfs-import-cache.service # Import ZFS pools by cache file zfs-mount.service # Mount ZFS filesystems zfs-share.service # ZFS file system shares zfs.target # ZFS startup target 

您可以修改时间或相关性以适应您的延迟iSCSI挂载。

 [Unit] Description=Import ZFS pools by cache file DefaultDependencies=no Requires=systemd-udev-settle.service After=systemd-udev-settle.service After=cryptsetup.target ConditionPathExists=/etc/zfs/zpool.cache [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/sbin/modprobe zfs ExecStart=/sbin/zpool import -c /etc/zfs/zpool.cache -aN