需要将 400gb 池克隆到另一台机器上。这可行吗?首先,我收集有关现有池的数据:
[root@oktest-prod-db-2 ~]# lvdisplay --units B vg_oktestdb2/pool
--- Logical volume ---
LV Name pool
VG Name vg_oktestdb2
LV UUID tPfUzG-bHW2-jepz-1Sf6-BSmw-jKz4-Tf6djR
LV Write Access read/write
LV Creation host, time oktest-db-2, 2015-03-31 18:55:17 +0300
LV Pool transaction ID 134
LV Pool metadata pool_tmeta
LV Pool data pool_tdata
LV Pool chunk size 262144 B
LV Zero new blocks yes
LV Status available
# open 0
LV Size 474031849472 B
Allocated pool data 10.16%
Allocated metadata 7.66%
Current LE 113018
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
然后创建一个具有相同大小的新池:
[root@oktest-prod-db-1-new ~]# lvcreate -L 474031849472b -T vg_oktestdb1/pool --chunksize 256k
Logical volume "lvol0" created
Logical volume "pool" created
最后通过 ssh 复制它:
[root@oktest-prod-db-2 ~]# dd bs=128k if=/dev/mapper/vg_oktestdb2-pool | ssh root@oktest-prod-db-1-new 'dd bs=128k of=/dev/mapper/vg_oktestdb1-pool'
现在我只需要坐着等几个小时
更新:它当时确实有效。
答案1
不确定它是如何通过管道进入 SSH 会话的,但我习惯用 netcat 来做这件事
首先在目标服务器上启动一个监听的 netcat:
netcat -p 1237 -l | dd of=<destination lv path/name> obs=$((1024*1024)) ibs=8192
然后在源服务器上
dd ibs=$((1024*1024)) obs=8192 <source lv path/name> | pv | netcat <ip of destination server> 1237
当然,您可以跳过“pv”部分,并将端口“1237”更改为可以通过防火墙的任何端口。
您也可以将其放入 gzip 中,但根据我的经验,这并不是很大的收获。