将整个 NILFS 备份至远程位置

将整个 NILFS 备份至远程位置

我正在寻求在我的 SME 实施 NILFS,但我需要一些帮助。我必须在不同大陆备份当前系统和所有快照/检查点,以使审计员满意。我目前正在使用自制系统(基于 Subversion),我可以简单地将其 rsync 到另一个大陆的另一台计算机。但是 - 我如何远程备份 NILFS 文件系统?是否有 NILFS 实用程序,或者是否有我可以使用的 Linux 块复制版本的 rsync?

在此先感谢您的帮助。

干杯,

尼尔

答案1

没有任何实用程序可以跨大洲复制快照,而且 rsync 肯定行不通。我在这里看到两个可能的选择:

  • 使用 DRBD。在两个站点之间创建 DRBD 集群。协议 A 允许您在大型 WAN 和有限带宽上保持足够好的性能。源 NILFS 文件系统将完全复制到目标,包括检查点、快照和所有内容。

  • 使用 ZFS 快照复制。这与 NILFS 不同,但如果需要,您可以每 15 秒或 30 秒拍摄一次快照。但是,您不会(如 NILFS 提供的那样)拥有每个创建和修改的文件的完整检查点。

[编辑] 显然您需要完整且连续的复制,因此 DRBD+NILFS2 似乎是最佳解决方案。但有一个限制,即,由于您正在执行块级同步,因此您当然只能同时在一端使用文件系统(基本上是在“主”端)。

当(并且如果)您需要访问“主”端和“远程”端的文件系统时,您应该执行以下操作:

在主服务器上,运行:

sync

紧接着,在从属服务器上运行:

drbd disconnect all
# check that you're offline...
drbd primary all

然后,您可以在从属端安装该卷(同时主端仍在使用该卷)。当然,当您在两端访问该卷时,复制将被暂停。

完成后,只需以普通方式重新连接:在从属上运行

drbd secondary all
drbd --discard-my-data connect all

在主运行中

drbd connect all

片刻之后您就应该能够恢复同步。

答案2

简单地将整个文件系统视为一个文件?

$ truncate -s 1024G FakeBlockDevice.myNILFS2Thing
$ mkfs.nilfs2 FakeBlockDevice.myNILFS2Thing
$ mount FakeBlockDevice.myNILFS2Thing /NILFS2MountPoint

然后,您就可以rsync像其他文件一样简单地伪造块设备。事实上,我认为其现有数据的恒定偏移量对于rsync增量压缩来说应该几乎是完美的:

$ rsync -a FakeBlockDevice.myNILFS2Thing [email protected]:~/NILFS2Backup.iso

如果你想要速度,请创建包含/“真实”的文件系统ext4- NILFS2据报道相当慢已经,所以你不应该因为增加抽象层而损失太多。或者btrfs如果你想要压缩的话就这样做——额外的 COW 层应该没问题,因为 NILFS2 无论如何都只会写入新数据,而且我的初步测试表明,围绕 NILFS2 的 BTRFS 压缩可以节省相当多,即使是在大量基本上随机的数据的小写入上。


或者实际上,为什么你不能直接使用rsync

有没有类似于 rsync 来同步块设备的东西?

相关内容