如何将大型LVM卷(14TB)从一台服务器复制到另一台?

我必须将非常大的LVM卷从服务器A复制到服务器B.以下是服务器A和服务器B的文件系统

服务器A

[root@AVDVD-Filer ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_avdvdfiler-lv_root 16T 14T 1.5T 91% / tmpfs 3.0G 0 3.0G 0% /dev/shm /dev/cciss/c0d0p1 194M 23M 162M 13% /boot /dev/mapper/vg_avdvdfiler-test 2.3T 201M 2.1T 1% /test /dev/sr0 3.3G 3.3G 0 100% /mnt 

服务器B

 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-LogVol00 20G 2.5G 16G 14% / tmpfs 3.0G 0 3.0G 0% /dev/shm /dev/cciss/c0d0p1 194M 23M 162M 13% /boot /dev/mapper/VolGroup00-LogVol00 16T 133M 15T 1% /xiangao/lv1 /dev/mapper/VolGroup00-LogVol01 4.7T 190M 4.5T 1% /xiangao/lv2 

我想将服务器A上的LVM卷/dev/mapper/vg_avdvdfiler-lv_root到服务器B上的LVM卷/dev/mapper/VolGroup00-LogVol00上。服务器A和服务器B在同一IP段中。 在服务器A的LVM卷中,平均有500M avi wmv mp4等

我尝试通过NFS /dev/mapper/vg_avdvdfiler-lv_root服务器A上的/dev/mapper/vg_avdvdfiler-lv_root到服务器B,然后使用cp进行复制。 很明显,我失败了。

由于LVM量太大,我不知道为什么。 我希望这里有一个好的解决scheme

我想我会在这种情况下通过ssh使用rsync

如果传输中途死亡,使用tar通过ssh ,你将无法恢复传输,你将不得不从头开始。

一个焦油pipe可能是最好的。

这对我来说是最好的解决scheme:

 dd if=/dev/myvolumegroup/mylogicalvolume bs=4096 | pv | ssh targetmachine dd of=/dev/myvolumegroup/mylogicalvolume bs=4096 

您必须先在目标机器上设置lvm逻辑卷,并使用相同或更多的空间。

请注意,有些人已经用nc(netcat)提出了这个build议,但是它不会工作,因为netcat在收到一个EOF时会closures,其中一个分区内有很多EOF。 Ssh没有这个问题。

我用bs = 4096而不是bs = 512,因为速度要快得多。 因人而异。

pv的原因在于它显示了你的进度,这在发送大量数据的时候是非常好的,所以你可以知道传输速率,以及在你完成之前等待多久。

我不确定你的命令是否完成你的意图:-)

如果要复制卷组的CONTENTS ,我build议使用tardump / restore通过SSHpipe理(在服务器B上创build适当的volgroup并恢复数据) – 有关更多信息,请参阅这些工具的手册页。

如果你想复制卷组本身(结构以及内容),问问自己为什么要坚持一个很好的理由。 如果你拿出令人信服的理由,看看drbd或类似的东西

你的英文不错,我想每个人都能理解。

为了澄清一件事,你想要传输“vg_avdvdfiler-lv_root”的内容 ,还是希望LVM本身(可能包含快照等内容)?

如果你感觉冒险,可以在两台机器之间build立DRBD。 这将使两者在后台同步。

优点:

  • 不要求整个传输的音量被卸载(像块级复制一样)。
  • 不要留下一个漏洞,在复制开始后文件可能改变,但在它完成之前(像rsync一样)。
  • 简历,能。

缺点:

  • 更复杂的设置,尤其对于外行来说。
  • 要求在现有节点上重新configuration一个短暂停机时间,以便设置CLVM和DRBD。