我必须将非常大的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议使用tar或dump / restore通过SSHpipe理(在服务器B上创build适当的volgroup并恢复数据) – 有关更多信息,请参阅这些工具的手册页。
如果你想复制卷组本身(结构以及内容),问问自己为什么要坚持一个很好的理由。 如果你拿出令人信服的理由,看看drbd或类似的东西
你的英文不错,我想每个人都能理解。
为了澄清一件事,你想要传输“vg_avdvdfiler-lv_root”的内容 ,还是希望LVM本身(可能包含快照等内容)?
如果你感觉冒险,可以在两台机器之间build立DRBD。 这将使两者在后台同步。
优点:
缺点: