将 ZFS 快照应用于非 ZFS FS
Applying ZFS snapshot to a non-ZFS FS
所以这是一个理论问题和具体问题(临时用例)
两台服务器要相互同步。一个在现场,另一个是场外备份。
但是,如果需要,Off-Site 应该复制和访问数据(不存储服务器 1 的存档图像)
服务器 1 和服务器 2 通过 VPN 连接通过互联网连接
server1 使用 ZFS Raid 10
server2 使用 ext4 Raid5(临时设置,将来会用 ZFS 替换,此用例消失)
你能在 server1 上拍摄 ZFS 快照,将它发送到 server2 并将它 unpacked/applied 到 raid5 阵列,基本上通过增量快照复制 server1 吗?
我知道还有一些其他的文件系统复制工具,但我想知道我们是否可以在非 zfs fs 中使用快照。 (文档让我相信这是不可能的,但我对此了解不够)
是的,理论上有两种选择。两者都使用异步复制,因此将有一个非零 RPO(尽管从您的描述看来在某种程度上可以接受):
使用 zfs send
在源系统上创建一个流,然后使用一些可以理解该流的内容并在源系统上转换为 POSIX 文件系统原语的工具接收系统.
在源系统上拍摄快照,然后使用与 FS 无关的工具从该快照复制内容。
第一个的好处是性能最高,因为 ZFS 知道其池的哪些部分已更改,只需查看/发送这些部分。但是,我不知道有什么工具可以真正做到这一点。 (原型是在 ZFS 开发人员黑客马拉松上构建的,但这种类型的工具没有大量受众,因此它们从未达到生产质量 AFAIK。)
第二个性能较差,因为它必须检查数据以查看发生了什么变化,但它有工具存在的好处 — 尽管您可能需要与它作斗争,但您可以使用 rsync
为此。此外,它的 RPO 可能更高,因为传输数据需要更长的时间。稍微棘手的部分是:
- 将其元数据写入源端池的可写部分,因为您正在复制的快照将是只读的。 (查看要复制的文件系统根目录中的
.zfs/
目录,找到快照的可读副本。)
- 如果源系统在
rsync
运行 期间死亡,则使故障转移目标没有中间状态。希望您的目标文件管理器能够在您开始 rsync
运行 之前进行快照,以便您可以在 运行 失败时回滚到“上次良好状态”。否则,希望您的数据/应用程序能够容忍一些不一致。 (或者也许有一个 rsync
选项可以执行此操作,但我以前没有使用过。)
所以这是一个理论问题和具体问题(临时用例)
两台服务器要相互同步。一个在现场,另一个是场外备份。
但是,如果需要,Off-Site 应该复制和访问数据(不存储服务器 1 的存档图像)
服务器 1 和服务器 2 通过 VPN 连接通过互联网连接
server1 使用 ZFS Raid 10
server2 使用 ext4 Raid5(临时设置,将来会用 ZFS 替换,此用例消失)
你能在 server1 上拍摄 ZFS 快照,将它发送到 server2 并将它 unpacked/applied 到 raid5 阵列,基本上通过增量快照复制 server1 吗?
我知道还有一些其他的文件系统复制工具,但我想知道我们是否可以在非 zfs fs 中使用快照。 (文档让我相信这是不可能的,但我对此了解不够)
是的,理论上有两种选择。两者都使用异步复制,因此将有一个非零 RPO(尽管从您的描述看来在某种程度上可以接受):
使用
zfs send
在源系统上创建一个流,然后使用一些可以理解该流的内容并在源系统上转换为 POSIX 文件系统原语的工具接收系统.在源系统上拍摄快照,然后使用与 FS 无关的工具从该快照复制内容。
第一个的好处是性能最高,因为 ZFS 知道其池的哪些部分已更改,只需查看/发送这些部分。但是,我不知道有什么工具可以真正做到这一点。 (原型是在 ZFS 开发人员黑客马拉松上构建的,但这种类型的工具没有大量受众,因此它们从未达到生产质量 AFAIK。)
第二个性能较差,因为它必须检查数据以查看发生了什么变化,但它有工具存在的好处 — 尽管您可能需要与它作斗争,但您可以使用 rsync
为此。此外,它的 RPO 可能更高,因为传输数据需要更长的时间。稍微棘手的部分是:
- 将其元数据写入源端池的可写部分,因为您正在复制的快照将是只读的。 (查看要复制的文件系统根目录中的
.zfs/
目录,找到快照的可读副本。) - 如果源系统在
rsync
运行 期间死亡,则使故障转移目标没有中间状态。希望您的目标文件管理器能够在您开始rsync
运行 之前进行快照,以便您可以在 运行 失败时回滚到“上次良好状态”。否则,希望您的数据/应用程序能够容忍一些不一致。 (或者也许有一个rsync
选项可以执行此操作,但我以前没有使用过。)