我可以使用 ZFSoL 0.8.1 加密整个池吗?

mca*_*ril 6 zfs encryption

我已经为我的服务器编译了 ZFS 0.8.1,它运行良好。我还能够创建像 mypool/myencfs 这样的加密文件系统。

但是,mypool 也是一个文件系统,似乎我无法对其启用加密:

zfs set encryption=on mypool
cannot set property for 'mypool': 'encryption' is readonly
Run Code Online (Sandbox Code Playgroud)

该池将使用来自另一个加密驱动器的密钥文件进行解密,因此我希望将可继承的属性设置得尽可能高,当我不小心将某些内容复制到 mypool/ 时,也不会冒未加密数据的风险

mca*_*ril 6

虽然我没有直接在网上找到任何关于这个问题的内容(每个人似乎都只创建加密的子文件系统),但我想知道如何在池创建期间设置任何属性。它是-O(大写)选项。

这有效

zpool create -o ashift=12 -o feature@encryption=enabled \
             -O encryption=on -O keylocation=file:///root/keys/hdd256.key \
             -O keyformat=raw \
             mypool /dev/disk/by-id/mydisk
Run Code Online (Sandbox Code Playgroud)

为完整起见,由于网络上似乎仍然很少涉及此问题,这也是我设置 systemd 以自动挂载驱动器的方法:

/etc/systemd/system/zfs-load-key@.service

[Unit]
Description=Import key for ZFS pool
Documentation=man:zfs(8)
DefaultDependencies=no
After=systemd-udev-settle.service
After=zfs-import.target
After=systemd-remount-fs.service
Before=zfs-mount.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zfs load-key -r %i

[Install]
WantedBy=zfs.target
Run Code Online (Sandbox Code Playgroud)

systemctl enable zfs-load-key@mypool