![将整个 NILFS 备份至远程位置](https://linux22.com/image/716276/%E5%B0%86%E6%95%B4%E4%B8%AA%20NILFS%20%E5%A4%87%E4%BB%BD%E8%87%B3%E8%BF%9C%E7%A8%8B%E4%BD%8D%E7%BD%AE.png)
我正在寻求在我的 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
?