同じサイズのLVを作って、ddでまるごとコピー出来た。
毎度やるのは面倒だからスクリプト作った。
Volume Groupを超えて使える。
lvcopy.sh
#!/bin/bash SRC_VG=$1 SRC_LV=$2 DST_VG=$3 DST_LV=$4 # check args if [ -z "$SRC_VG" -o -z "$SRC_LV" -o -z "$DST_VG" ]; then echo usage: $0 SRC_VG SRC_LV DST_VG [DST_LV] exit 1 fi # dst lv name if [ -z "$DST_LV" ]; then DST_LV=$SRC_LV fi # check src vg if [ `vgdisplay $SRC_VG 2>/dev/null | wc -l` -eq 0 ]; then echo SRC_VG is not found: $SRC_VG exit 1 fi # check src lv LV_SIZE=`lvdisplay /dev/$SRC_VG/$SRC_LV 2>/dev/null | grep 'LV Size' | awk '{print $3$4}'` if [ -z "$LV_SIZE" ]; then echo SRC_LV is not found: /dev/$SRC_VG/$SRC_LV exit 1 fi # check dst vg if [ `vgdisplay $DST_VG 2>/dev/null | wc -l` -eq 0 ]; then echo DST_VG is not found: $DST_VG exit 1 fi # check dst lv if [ `lvdisplay /dev/$DST_VG/$DST_LV 2>/dev/null | wc -l` -ne 0 ]; then echo DST_LV is already exist: /dev/$DST_VG/$DST_LV exit 1 fi # copy lvcreate -L $LV_SIZE -n $DST_LV $DST_VG dd if=/dev/$SRC_VG/$SRC_LV of=/dev/$DST_VG/$DST_LV bs=4M