使用 rsync 硬链接选项将文件备份到具有多个版本的远程服务器

使用 rsync 硬链接选项将文件备份到具有多个版本的远程服务器

要使用 rsync 硬链接选项远程备份文件,以便远程备份服务器可以保留备份的多个版本,链接目标目录和目标目录都必须位于同一远程磁盘上。但“rsync --link-dest”选项只接受本地路径。要从要备份目录的服务器运行脚本,必须先通过 SSH 连接到备份服务器,然后从备份服务器运行 rsync 命令,如下所示:

ssh [email protected] 'rsync -a --delete --rsh "ssh -l root -i /root/.ssh/key2" --link-
dest=backupDict.1 19.2.2.1:/mnt/mountDict backupDict'

有没有不太复杂的方法来备份硬链接文件?

此外,在备份过程中,当对虚拟机进行快照并将快照 lv 安装为原始目录时,我收到了错误日志和虚拟机管理程序冻结。如果不使用 rsync 硬链接方法,则找不到快照和安装虚拟机。有办法修复它吗?

Mar 10 02:36:59 kvm kernel: BUG: Bad page map in process udevd  pte:800000081ad43645 pmd:409f37067
Mar 10 02:36:59 kvm kernel: addr:00006aff4f837000 vm_flags:00100173    anon_vma:ffff88081f7dc448 mapping:(null) index:7fffffff1
Mar 10 02:37:02 kvm kernel: Pid: 5091, comm: udevd Not tainted 2.6.32-        358.18.1.el6.x86_64 #1
Mar 10 02:37:03 kvm kernel: Call Trace:
Mar 10 02:37:03 kvm kernel: [<ffffffff8113ef18>] ? print_bad_pte+0x1d8/0x290
Mar 10 02:37:03 kvm kernel: [<ffffffff8111b970>] ? generic_file_aio_read+0x380/0x700
Mar 10 02:37:03 kvm kernel: [<ffffffff8113f03b>] ? vm_normal_page+0x6b/0x70
Mar 10 02:37:03 kvm kernel: [<ffffffff8114179f>] ? unmap_vmas+0x61f/0xc30
Mar 10 02:37:03 kvm kernel: [<ffffffff811476d7>] ? exit_mmap+0x87/0x170
Mar 10 02:37:03 kvm kernel: [<ffffffff8106b50c>] ? mmput+0x6c/0x120
Mar 10 02:37:03 kvm kernel: [<ffffffff811889a4>] ? flush_old_exec+0x484/0x690
Mar 10 02:37:03 kvm kernel: [<ffffffff811d9700>] ? load_elf_binary+0x350/0x1ab0
Mar 10 02:37:03 kvm kernel: [<ffffffff8113f3ff>] ? follow_page+0x31f/0x470
Mar 10 02:37:03 kvm kernel: [<ffffffff811446e0>] ? __get_user_pages+0x110/0x430
Mar 10 02:37:03 kvm kernel: [<ffffffff811d7abe>] ? load_misc_binary+0x9e/0x3f0
Mar 10 02:37:03 kvm kernel: [<ffffffff81144a99>] ? get_user_pages+0x49/0x50
Mar 10 02:37:03 kvm kernel: [<ffffffff81189fa7>] ? search_binary_handler+0x137/0x370
Mar 10 02:37:03 kvm kernel: [<ffffffff8118a4f7>] ? do_execve+0x217/0x2c0
Mar 10 02:37:03 kvm kernel: [<ffffffff810095ea>] ? sys_execve+0x4a/0x80
Mar 10 02:37:03 kvm kernel: [<ffffffff8100b4ca>] ? stub_execve+0x6a/0xc0
Mar 10 02:37:03 kvm kernel: Disabling lock debugging due to kernel taint

答案1

呃,哇哦。

Link-dest 只能采用本地路径(传统文件系统上的硬链接也可以),因为它们实际上必须指向完全相同的 inode。每次访问该 inode 时,都会增加其打开计数(这会阻止它被清理),并且当您通过几个 ssh 进程对其进行堆叠并抛出一个大型不耐烦的快照非静止 VM 时....好吧,我预计事情会中断。

我有几个问题:- 你为什么要安装快照 LV 来代替原始磁盘?空间?你可能直接通过 ssh 隧道进行快照,但快照然后 rsync 可能更明智。- 既然它在源头给你带来了麻烦,为什么还要奇怪地依赖硬链接?

我对一些 VM 盒做了一些不太一样的事情,但那是用几个 nas4free(即 ZFS 盒)作为 VM 主机的 iScsi 目标。ZFS 快照是即时的,只要我有空间,就可以持久,我对此很熟悉。我避免使用远程链接上的 ZFS 复制,就像避免瘟疫一样,我更愿意近线快照并远程 rsync 单个文件以及然后在另一端进行快照,对于繁忙的虚拟机(例如 Exchange 服务器),这会变得有点复杂,并且一致性有点不稳定,但还有其他方法可以解决这个问题。无论如何,我的大多数客户都有一天的 15 分钟本地快照,第二天我办公室的 nas 就赶上了……有时要快得多。我可以带着一台新机器到现场,也可以远程启动他们的虚拟机,他们真的不知道有什么区别。我知道把硬件扔到那里并不是一个理想的答案,但你真的不会有现在的痛苦(听起来你真的在冒险而没有保护任何一个)。如果我是你,我肯定会考虑 iScsi NAS、HDFS、也许是 DRBD、openstack-y vm 复制到三台以上的机器。(我不知道你有多大)。

但也要尝试将工作分解成更小的部分。

噢,永远不要低估一辆装满磁带的旅行车的带宽。

相关内容