我想在 Debian Buster 上的 Linux (7.13) 上创建一个带有 ZFS 的 zpool。问题是,该池将基于 LUKS 加密驱动器(不是根驱动器,只有外部驱动器)创建。这些驱动器在启动期间由我创建的脚本解密和加载,因为它们正在从外部源提取密钥文件。
为了避免在驱动器解密和加载之前系统想要挂载 zpool 时出现任何问题,我希望将池作为脚本的一部分手动挂载。
现在我问自己在创建池时应该选择哪个挂载点选项:没有任何或者遗产
手册页并没有真正帮助您了解真正的区别:
如果文件系统的挂载点设置为旧版,则 ZFS 不会尝试管理文件系统,管理员负责挂载和卸载文件系统。由于必须先导入池,旧版挂载才能成功,因此管理员应确保仅在启动时 zpool 导入过程完成后才尝试旧版挂载。例如,在使用 systemd 的计算机上,mount 选项
是否有人知道真正的区别以及如何以最佳方式通过脚本实现手动安装?
答案1
近十年来,我一直在 LUKS 加密卷上使用 ZFS 池。它运行良好。
没有必要手动安装池来尝试解决不存在的计时问题。只需正常创建池并享受即可。
为了避免将来出现任何问题,在创建和管理池时,请使用目录luks-
中以 开头的名称/dev/mapper
来引用设备。例如,设备:
lrwxrwxrwx. 1 root root 10 Jul 26 22:22 luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1046856 -> ../../dm-5
lrwxrwxrwx. 1 root root 10 Jul 26 22:22 luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1145175 -> ../../dm-4
lrwxrwxrwx. 1 root root 10 Jul 26 22:22 luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1165144 -> ../../dm-2
lrwxrwxrwx. 1 root root 10 Jul 26 22:22 luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WMC1P0DHH53R -> ../../dm-3
相当于:
pool: srv
state: ONLINE
scan: scrub repaired 0B in 0h42m with 0 errors on Tue Jul 30 14:42:04 2019
config:
NAME STATE READ WRITE CKSUM
srv ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1046856 ONLINE 0 0 0
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1145175 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1165144 ONLINE 0 0 0
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WMC1P0DHH53R ONLINE 0 0 0
该池的创建方式如下:
zpool create -o ashift=12 srv \
mirror \
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1046856 \
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1145175 \
mirror \
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1165144 \
luks-ata-WDC_WD2000FYYZ-01UL1B1_WD-WMC1P0DHH53R
答案2
我在带有便携式驱动器的 luks 上使用 zfs。我从未遇到过标准挂载点的问题。直到导入池后才会挂载,而这直到 luks 卷解锁后才会发生。所以我认为你可能想多了。
无论如何,如果您真的愿意,请使用传统方式进行手动安装。
答案3
即使 LUKS 驱动器存在一些延迟,您也不需要使用none
或legacy
作为挂载点,如果您通过脚本解密这些驱动器,只要zpool import <poolname>
在加载驱动器后添加即可。因为在 ZFS 想要导入池时,它们可能不可用,这可以通过以下消息看到syslog