在启用ZFS的系统上,我已启动并运行这些数据集: 在/ mnt / mydataset下的mydataset, set1在/ mnt / mydataset / set1和 set2在/ mnt / mydataset / set2下。 常规目录下还有现有数据 的/ mnt / mydataset /现有
我要改变现有的'将目录转换为数据集,以便像快照一样享受zfs功能。当我创建dataset / mnt / mydataset / existing时,它会遮蔽现有数据。当我删除新创建的数据集时,旧数据重新出现(显然在其他数据上尝试了这一点)。
有没有办法添加数据集,以便立即包含现有数据?
显而易见的解决方案似乎是首先添加数据集,然后将现有数据复制到其中。但是,有问题的数据涉及在生产中运行服务的几个jail,我对于阻止它们和操作的监狱犹豫不决。
答案 0 :(得分:1)
在ZFS文件系统(即所谓的数据集)之间移动文件始终是完整副本,即使两个文件系统位于同一个池中也是如此。这同样适用于从文件系统复制到外部或从外部复制到文件系统。唯一的即时移动操作(如重命名)位于同一文件系统中。
虽然总的来说很不幸,但是对于那些想要传输整个文件系统(而不仅仅是单个文件)的情况,存在一种优雅的替代方案,这似乎适用于您的情况。它使用ZFS快照和增量发送/ recv将文件系统的所有内容传输到新文件系统,然后在完成后(几小时后),传输自此更改的数据(需要几分钟),然后传输数据自从改变(现在可能需要几秒钟)以来,除非是非常小的延迟,否则直到你都是最新的。然后关闭双方的应用程序,以便不再更改任何内容,重新传输最后一个差异(非常快),然后再次在目标端启动应用程序。
这样你仍然有停机时间,但它很短。缺点是你必须有额外的存储空间。