![我在 ecryptfs 目录中安装了 ZFS 数据集,现在无法查看内容或更改安装点](https://linux22.com/image/130603/%E6%88%91%E5%9C%A8%20ecryptfs%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%AE%89%E8%A3%85%E4%BA%86%20ZFS%20%E6%95%B0%E6%8D%AE%E9%9B%86%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%97%A0%E6%B3%95%E6%9F%A5%E7%9C%8B%E5%86%85%E5%AE%B9%E6%88%96%E6%9B%B4%E6%94%B9%E5%AE%89%E8%A3%85%E7%82%B9.png)
我在使用 ZFS on Linux (ZoL) 池的桌面上运行 Ubuntu 16.04 LTS。我的主目录在安装时使用内置加密设置进行了加密,并且运行良好,并且 ZFS 一直运行良好。
然后,我不假思索地做了一件事。我更新了一些 ZFS 数据集的挂载点以驻留在我的加密主目录中。这最初工作正常,但重新启动后我注意到安装的目录显示为空(没有列出任何内容)。 ZFS 仍然将这些集报告为使用空间,但当我尝试更改安装点时,我收到错误umount failed
,并且安装点保持不变。
我怀疑 ZFS 可能在 ecryptfs 之前安装。当 ecryptfs 挂载时,它会“隐藏”ZFS 挂载。 Ecryptfs 具有与挂载名称匹配的空目录,但它们似乎不是实际的 ZFS 挂载。
所以,我很好奇如何解决这个问题。是否可以强制 ZFS 在不挂载的情况下启动,并且它可以让我更新该状态下的挂载点吗?我可以启动到单用户模式,卸载加密的主文件夹并让 ZFS 运行吗?
答案1
如果您在单用户模式下启动,并且 zpool 不会自动导入,您可以altroot
在导入期间通过该属性将池导入到备用路径结构中。
zpool import -R /tmp/zfs <poolname>
这将导入池,所有内容都安装在 /tmp/zfs 下。从那里,您应该能够zfs set mountpoint=<newpath> <dataset>
处理任何需要新安装点的数据集。
然后在后续启动时正常导入池。