如何使 ZFS 数据集在启动时自动挂载?

如何使 ZFS 数据集在启动时自动挂载?

我使用 ZFS 存储我的台式电脑的数据(包括配置文件),因此在启动时自动挂载数据集非常重要。我无论如何也想不出如何在 Ubuntu 19.10 中做到这一点。

一开始,当我运行 时zfs listzpool list没有任何输出;它是空的。然后,在弄清楚如何导入我的池之后,它们仍然无法挂载。

答案1

正确的做法是确保三个单元文件enable在启动时启动:

  • zfs.target,这是所有 ZFS 的首要目标
  • zfs-import.service,在启动时导入 zpools
  • zfs-mount.service,在启动时挂载所有数据集

这些单元的依赖关系已正确设置,因此您只需运行:

systemctl enable zfs.target zfs-import.service zfs-mount.service

确保它们都已打开。此后,重新启动以进行测试;您的 ZFS 数据集应该会显示出来。

答案2

我发现,如果我忘记缓存不会在下次重新启动时更新任何后续更改,那么更新 zpool 缓存和 zfs-list 缓存的 zfs-zed.service 在 systemctl 暂停后不再运行,需要手动重新启动。我将很快通过详细信息改进这一点,以复制并在周末尝试全新安装,或将其移动到适当的位置。Openzfs 2.1.5 兼容性设置为 openzfs-2.1-linux。Ubuntu 22.04 和 proxmox 使用 zsys 共享启动和根池进行黑客攻击。

答案3

22.04 LTS 更新:

手册页上有说明zfs-mount-generator(8),但我不得不做一些更改。以下是对我有用的方法:

# enable tracking for the pool
mkdir /etc/zfs/zfs-list.cache
touch /etc/zfs/zfs-list.cache/main

# enable the tracking ZEDLET
systemctl enable zfs-zed.service
systemctl restart zfs-zed.service

# trigger cache refresh
zfs set relatime=off main/secure
zfs inherit relatime main/secure

# re-run systemd generators and reboot
systemctl daemon-reload
reboot

相关内容