如何将文件从一个zfs文件系统移动到同一池中的另一个zfs文件系统?


17

我在同一个zfs池中有两个文件系统,/mnt/fs_a并且/mnt/fs_b。我想将大约1TB的数据从fs_a移至fs_b。但是当我:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

令我惊讶的是,它开始逐块复制文件。考虑到移动2GB文件所花费的时间,看起来此操作将需要几天的大量重击才能完成。

必须有一个更聪明,更快捷的方法来执行此操作,对吗?

Answers:


22

(这开始只是评论,但时间太长,因此现在是答案)

不幸的是,答案是“否”。没有更快或更聪明的方法可以做到这一点。

ZFS文件系统(即使它们位于同一池中)是独立的文件系统。无论mv和任何其他工具可以只移动块的指针或什么让那名上的文件fs_a现在是fs_b

(顺便说一句,同一磁盘或RAID阵列上的多个格式化分区或LVM卷也是单独的文件系统, mv转移到它们的复制和删除中)

多年来,这个问题已经出现过好几次了(有人说过要创建一个工具来做自己想要的事情),据我所知,把它放在过于棘手的篮子里的主要困难是如何处理快照的问题。 -如果有快照 fs_a,则这些块将同时位于两个文件系统中。具有硬链接的文件也是如此。

我自己经历了很多次(例如,当您在数据集之间移动文件时,或者当我需要将子目录转换为fs时),并且刚刚学会忍受不便。它可能是主要的PITA。

如果fs_b为空或不存在,你想移动整个的内容fs_afs_b(而不仅仅是某些甚至大部分文件和目录),可以使用zfs rename重命名fs_afs_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


3
感谢您的全面答复。我对重命名的建议表示赞赏,但是您可能怀疑我有更多关于b的数据。至少我现在可以继续前进,并通过缓冲盘复制文件,以至少消除抖动。
弗雷德·汉密尔顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.