1

在启用 ZFS 的系统上,我启动并运行了这些数据集:/mnt/mydataset 下的 mydataset、/mnt/mydataset/set1 下的 set1 和 /mnt/mydataset/set2 下的 set2。/mnt/mydataset/existing 下的常规目录中也有现有数据。

我希望将“现有”目录更改为数据集,以便享受快照等 zfs 功能。当我创建数据集 /mnt/mydataset/existing 时,它会隐藏现有数据。当我删除新创建的数据集时,旧数据会重新出现(显然在其他数据上尝试过)。

有没有办法添加一个数据集,以便立即包含现有数据?

显而易见的解决方案似乎是首先添加数据集,然后将现有数据复制到其中。然而,有问题的数据与几个在生产中运行服务的监狱有关,我很犹豫要阻止它们和监狱进行操作。

4

1 回答 1

2

在 ZFS 文件系统(即您所说的数据集)之间移动文件始终是完整副本,即使两个文件系统位于同一个池中。这同样适用于从文件系统复制到外部或从外部复制到文件系统。唯一即时的移动操作(如重命名)是在同一个文件系统中。

尽管总体上很不幸,但是对于您想要传输整个文件系统(而不仅仅是单个文件)的情况,存在一个优雅的替代方案,这似乎适用于您的情况。它使用 ZFS 快照和增量发送/接收将文件系统的所有内容传输到新系统,然后在完成后(几小时后)传输自更改后的数据(需要几分钟),然后再传输数据自从改变(现在可能需要几秒钟),直到你是最新的,除了一个很小的延迟。然后关闭双方的应用程序,以便不再更改任何内容,重新传输最后一个差异(非常快),然后再次在目标端启动应用程序。

这样你仍然有停机时间,但它很短。缺点是您必须有额外的可用存储空间。

于 2016-09-27T10:04:34.447 回答