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