如何在 fstab 中使用 zfs 挂载循环设备?
以下是我创建它的方式:
fallocate -l 150G /jdata/zfs_psql.disk
sudo losetup /dev/loop2 jdata/zfs_psql.disk
sudo zpool create -f -O atime=off -O compression=lz4 -O recordsize=128K zfsdisk /dev/loop2
然后我将以下字符串添加到fstab
/jdata/zfs_psql.disk /zfsdisk zfs loop 0 0
在其中mount -a
说
filesystem 'zfsdisk' cannot be mounted, unable to open the dataset
我该怎么做?
答案1
在您的第一个代码块中,您创建并销毁了 zpool。请再试一次,但请运行以下命令
fallocate -l 150G /jdata/zfs_psql.disk
sudo losetup /dev/loop2 jdata/zfs_psql.disk
sudo zpool create -f -m legacy -O atime=off -O compression=lz4 -O recordsize=128K zfsdisk /dev/loop2
您需要将 zpool 挂载点设置为使用 fstab 的传统挂载点。Zfs 通常会在启动时尝试自动挂载设备,但由于您使用的是文件而不是设备,因此自动挂载将不起作用。因此需要legacy
挂载点和使用。fstab
现在fstab
/jdata/zfs_psql.disk /zfsdisk zfs loop 0 0
应该mount -a
可以按预期工作。但是,由于挂载顺序,它仍然可能在启动时给您一个错误,因为您需要先完全挂载基本文件系统,然后再挂载 loop 文件。在这种情况下,您需要在 loop 中添加 noauto 选项。
/jdata/zfs_psql.disk /zfsdisk zfs loop,noauto 0 0