replacepv
- Life Logs/Study Notes
- 2014. 8. 14. 13:30
안녕하세요, 우리노트 Benjamin입니다.
AIX 잘 알려지지 않은 유용한 기능을 소개해 드립니다.
replacepv 라는 command 입니다.
보통 disk 내용을 옮기실때 migratepv, mklvcopy + rmlvcopy 등의 방법을 이용하시는데요,
replacepv 를 이용하면 손쉽게 디스크 바꿔치기가 가능합니다.
물론 disk size 가 동일해야 한다는 제약조건이 있기는 합니다.
300gb disk 1ea와 100gb disk 2ea로 test를 진행해 보겠습니다.
Test1@/> lspv
hdisk0 00f615e5ef3aeb25 rootvg active
hdisk1 00f615e557810e0a None
hdisk2 00f615e55782a6ca None
Test1@/> bootinfo -s hdisk0
30720
Test1@/> bootinfo -s hdisk1
10240
Test1@/> bootinfo -s hdisk2
10240
replacepv 에 필요한 flag들은 아래와 같습니다.
사실 단순히 source disk, target disk만 적어주면 됩니다.
Test1@/> replacepv
0516-612 replacepv: Source physical volume name not entered.
Usage:
replacepv [-f] { sourcepvname | sourcepvid } { destpvname | destpvid }
replacepv -R dir_name [newdestpv]
Replaces a physical volume in a volume group.
300gb hdisk0 을 hdisk1로 replace 하려고 하니 size가 달라서 에러가 발생합니다.
Test1@/> replacepv hdisk0 hdisk1
0516-1234 replacepv: The destination disk size must be
atleast the size of the source disk.
0516-1227 replacepv: Warning, replacepv did not completely succeed.
test를 위하여 vg를 하나 생성하여 file system을 하나 생성하였습니다.
Test1@/> mkvg -y testvg hisk1 hdisk2
testvg
Test1@/> mklv -y testlv01 -t jfs2 testvg 10
testlv01
Test1@/> crfs -v jfs2 -d /dev/testlv01 -m /testfs01 -A yes
File system created successfully.
163628 kilobytes total disk space.
New File System size is 327680
hdisk1 에는 lv가 생성되어 있고, hdisk2는 비어있습니다.
hdisk1 에 있는 lv가 hdisk2 로 옮겨가는지 확인해보면 되겠죠?
Test1@/> lsvg -l testvg
testvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
testlv01 jfs2 10 10 1 closed/syncd /testfs01
loglv00 jfs2log 1 1 1 closed/syncd N/A
Test1@/> lspv -l hdisk1
hdisk1:
LV NAME LPs PPs DISTRIBUTION MOUNT POINT
testlv01 10 10 00..10..00..00..00 /testfs01
loglv00 1 1 00..01..00..00..00 N/A
Test1@/> lspv -l hdisk2
hdisk2:
LV NAME LPs PPs DISTRIBUTION MOUNT POINT
또 에러가 나는군요, 제가 command를 잘못 이해하고 있었나 봅니다.
replace될 disk는 vg 에 속해 있으면 안됩니다.
Test1@/> replacepv hdisk1 hdisk2
0516-1398 extendvg: The physical volume hdisk2, appears to belong to
another volume group. Use the force option to add this physical volume
to a volume group.
0516-792 extendvg: Unable to extend volume group.
0516-1227 replacepv: Warning, replacepv did not completely succeed.
vg에서 target disk 를 제거하여 줍니다.
Test1@/> reducevg testvg hdisk2
Test1@/> lsvg -p testvg
testvg:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk1 active 639 628 128..117..127..128..128
이번에는 정상적으로 동작을 하는군요..
저는 10lp의 작은 lv 하나를 옮기는 거여서 금방 끝났지만, 대용량의 경우 copy시간이 많이 소요되겠죠?
중간에 system이 crash 되거나 ctrl-C 로 작업이 끊기게 되면 /tmp 아래 생성된 작업 파일로 이어하기가 가능합니다.
Test1@/> replacepv hdisk1 hdisk2
0516-1232 replacepv:
NOTE: If this program is terminated before the completion due to
a system crash or ctrl-C, and you want to continue afterwards
execute the following command
replacepv -R /tmp/replacepv34340864
hdisk1의 testvg 가 hdisk2로 잘 넘어간걸 확인할 수 있습니다.
Test1@/> lspv
hdisk0 00f615e5ef3aeb25 rootvg active
hdisk1 00f615e557810e0a None
hdisk2 00f615e55782a6ca testvg active
Test1@/> lsvg -p testvg
testvg:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk2 active 639 628 128..117..127..128..128
Test1@/> lspv -l hdisk2
hdisk2:
LV NAME LPs PPs DISTRIBUTION MOUNT POINT
loglv00 1 1 00..01..00..00..00 N/A
testlv01 10 10 00..10..00..00..00 /testfs01