Answers:
(这开始只是评论,但时间太长,因此现在是答案)
不幸的是,答案是“否”。没有更快或更聪明的方法可以做到这一点。
ZFS文件系统(即使它们位于同一池中)是独立的文件系统。无论mv
和任何其他工具可以只移动块的指针或什么让那名上的文件fs_a
现在是fs_b
。
(顺便说一句,同一磁盘或RAID阵列上的多个格式化分区或LVM卷也是单独的文件系统, mv
转移到它们的复制和删除中)
多年来,这个问题已经出现过好几次了(有人说过要创建一个工具来做自己想要的事情),据我所知,把它放在过于棘手的篮子里的主要困难是如何处理快照的问题。 -如果有快照 fs_a
,则这些块将同时位于两个文件系统中。具有硬链接的文件也是如此。
我自己经历了很多次(例如,当您在数据集之间移动文件时,或者当我需要将子目录转换为fs时),并且刚刚学会忍受不便。它可能是主要的PITA。
如果fs_b
为空或不存在,你想移动整个的内容fs_a
来fs_b
(而不仅仅是某些甚至大部分文件和目录),可以使用zfs rename
重命名fs_a
来fs_b
。我怀疑这与您的情况无关。
ZFSOnLinux上有一个未解决的问题,网址为https://github.com/zfsonlinux/zfs/issues/2991
我没有进行搜索,但是我希望上游的OpenZFS 甚至Sun / Oracle ZFS都可能具有类似的错误报告/功能请求。
顺便说一句,另请参阅/server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume