我刚刚将系统从 Fedora 35 升级到 Fedora 37。我重建了 ZFS,并且能够手动导入和挂载我的文件系统。但是,无论我做什么,它们在启动时都不会安装。我不知道还能尝试什么。
我做了以下事情: 确保启用所有 ZFS 相关服务
我还重新创建了 ZFS 缓存。
的状态systemctl status zfs-import-cache.service
Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; enabled; preset: enabled)
Active: inactive (dead)
Docs: man:zpool(8)
这很有趣:
systemctl status zfs-mount.service
○ zfs-mount.service - Mount ZFS filesystems
Loaded: loaded (/usr/lib/systemd/system/zfs-mount.service; enabled; preset: enabled)
Active: inactive (dead)
Condition: start condition failed at Wed 2023-03-01 13:59:56 EST; 7min ago
Docs: man:zfs(8)
Mar 01 13:59:56 alpha systemd[1]: zfs-mount.service - Mount ZFS filesystems was skipped because of a failed condition check (ConditionPathIsDirectory=/sys/module/zfs).
我发现了 boot.log 的旧副本,显示服务正在启动:
[ OK ] Reached target ZFS pool import target.
[ OK ] Stopped target ZFS pool import target.
Starting Import ZFS pools by cache file...
[ OK ] Finished Import ZFS pools by cache file.
[ OK ] Reached target ZFS pool import target.
Starting Mount ZFS filesystems...
[ OK ] Finished Mount ZFS filesystems.
[ OK ] Started ZFS Event Daemon (zed).
但现在的都是空的。这意味着服务未启用。但它们已启用。
还有什么想法可以看看或尝试吗?
答案1
这个问题的答案是 ZFS 处理挂载文件系统的方式的改变。
看看这里: https://wiki.archlinux.org/title/ZFS
现在正确的方法依赖于 zed 服务(已启用)
按照这些步骤可以使文件系统在启动时再次挂载。
- 确保 zed 服务正在运行:
systemctl enable zfs-zed.service
- 为每个池创建一个空文件
touch /etc/zfs/zfs-list.cache/<pool-name>
- Spark zed 付诸行动:
zfs set canmount=off <pool>
现在,其中的文件/etc/zfs/zfs-list.cache/
不应再为空。 - 重新设置 canmount:
zfs set canmount=off <pool>
- 重启
这为我解决了这个问题。
一个致命的问题是 ZFS 导入服务被屏蔽并且无法启用。