我所有的 Linux 系统(Ubuntu 20.04 和 22.04,服务器和桌面均如此)都有 root-on-zfs 和一个或多个 ZFS 池上的数据。
当然,数据需要经常移动,比如使用 mc 或 dolphin 等等。
以下用例和问题假设数据在 zpool 内移动(而不是在不同的 zpool 之间移动)。
到目前为止,我尝试过的所有文件管理器(mc、thunar、dolphin、nemo 等等)都无法区分哪个文件夹只是一个文件夹,哪个是 zfs 数据集。
因此,如果您想移动一个实际上是数据集的文件夹,所有文件管理器都会开始在目标上创建一个普通文件夹,并将所有文件复制到其中。
但是如果目标文件夹本身也是一个数据集,我希望文件管理器简单地重命名源数据集 - 这会更快,更智能,对我来说也是更合理的操作。
用例示例,之前的数据集结构,挂载点等于数据集名称:
zp/media/movies/scifi
zp/media/movies/crime
zp/media/movies/classic
zp/media/movies/nature
zp/media/new/anime
现在打开 mc,选择 /zp/media/new/anime 并将其移动到 /zp/media/movies。我假设目标尚不存在,无论是作为文件夹还是作为数据集。
结果:mc 创建文件夹 /zp/media/movies/anmime 并将一个文件逐个移动到该位置。最后它提示无法删除 /zp/media/new/anime(因为它是一个数据集,无法通过 rm 删除)。
预期行为:字面意思zfs rename zp/media/new/anime zp/media/movies/anime
现在我们还假设文件管理器有修改 ZFS 数据集的权限。
如果目标已经存在当然唯一的选择就是mv
操作。
==> 是否有一个文件管理器可以识别 ZFS 并能够处理如上所述的数据集?
我知道有一个被废弃且未完成的项目名为 zc“zfs commander”(控制台应用程序),也有一个名为 GTK+ 的端口齐吉- 但我寻找的是能够积极维护的东西。
PS:如果它也能识别快照的话,那就更好了。
答案1
是否有一个文件管理器可以识别 ZFS 并且能够处理如上所述的数据集?
不可以。每个 ZFS 都是一个单独的文件系统。mv
(或任何其他工具)无法将块指针从一个文件系统移动到另一个文件系统。文件管理器使用常规命令来移动和复制文件。
如果可能的话,我们早就可以做到了。我在openzfs指出有 3 个大问题导致此问题:硬链接、快照以及它不能是目录。那是在 2014 年、2015 年。