我必须将一个非常大的 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
我想将/dev/mapper/vg_avdvdfiler-lv_root
服务器A上的LVM卷复制到/dev/mapper/VolGroup00-LogVol00
服务器B上的LVM卷。服务器A和服务器B在同一个IP段。服务器A上的LVM卷中,有平均500M的avi wmv mp4等。
我尝试/dev/mapper/vg_avdvdfiler-lv_root
通过 NFS 将服务器 A 安装到服务器 B,然后使用它cp
进行复制。显然我失败了。
因为 LVM 卷太大,我不知道为什么。我希望这里有一个好的解决方案。
答案1
我认为在这种情况下我会使用rsync
over 。ssh
如果传输中途终止,使用tar
超过ssh
,您将无法恢复传输,而必须从头开始。
答案2
A焦油管可能是最适合这种情况的。
答案3
这对我来说是最好的解决方案:
dd if=/dev/myvolumegroup/mylogicalvolume bs=4096 | pv | ssh targetmachine dd of=/dev/myvolumegroup/mylogicalvolume bs=4096
您必须首先在目标机器上设置 lvm 逻辑卷,并具有相同或更多的空间。
注意,有些人建议使用 nc (netcat),但是它不起作用,因为 netcat 在收到 EOF 时会关闭,而一个分区内会有很多 EOF。Ssh 没有这个问题。
我使用 bs=4096 而不是 bs=512,因为它速度更快。YMMV。
pv 存在的原因在于它可以显示进度,这在发送大量数据时非常有用,这样您就可以了解传输速率以及预计需要等待多长时间才能完成。
答案4
如果您喜欢冒险,您可以在两台机器之间设置 DRBD。这将使两者在后台同步。
优点:
- 不需要为整个传输卸载卷(就像块级复制一样)。
- 在复制开始后、完成之前不会留下文件可能发生变化的漏洞(就像 rsync 那样)。
- 可恢复。
缺点:
- 设置更复杂,特别是对于初学者来说。
- 需要短暂停机以重新配置现有节点以设置 CLVM 和 DRBD。