이유가 어떻건 간에 pvid를 바꿔야 하는 경우가 있을 수 있습니다. 이때 기존 VG의 data를 파손하지 않으면서 그렇게 할 수 있는 방법은 chdev 명령으로 pv=clear를 하고난 뒤 recreatevg를 하는 것입니다. 아래와 같이 정리했습니다.
기존 pvid와 VG name, 그리고 LV name 등을 확인합니다. 여기서 hdisk1의 pvid를 바꾸겠습니다.
/ # lspv
hdisk0 00f6db0af58e9775 rootvg active
hdisk1 00f9d7b4aa7cc533 lthvg active
hdisk2 00f9d7b4afdd3f2e lthvg active
hdisk3 00f9d7b4afdd3ff4 lthvg active
hdisk4 00f9d7b41e2e58e1 None
hdisk5 00f9d7b4afdd409f lthvg active
hdisk6 00f9d7b42df8691c lthvg active
/ # lsvg -l lthvg
lthvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv00 jfs2log 1 1 1 open/syncd N/A
fslv00 jfs2 12800 12800 5 open/syncd /trace
먼저 filesystem을 umount하고 VG를 내립니다. 그리고 VG도 exportvg 합니다.
/ # umount /trace
/ # varyoffvg lthvg
/ # exportvg lthvg
이제 hdisk1의 pvid를 clear 하겠습니다.
/ # chdev -l hdisk1 -a pv=clear
hdisk1 changed
/ # lspv
hdisk0 00f6db0af58e9775 rootvg active
hdisk1 none None
hdisk2 00f9d7b4afdd3f2e None
hdisk3 00f9d7b4afdd3ff4 None
hdisk4 00f9d7b41e2e58e1 None
hdisk5 00f9d7b4afdd409f None
hdisk6 00f9d7b42df8691c None
그 다음에 recreatevg 명령을 내립니다. 이때, 반드시 -Y LA -L / 이라는 옵션을 붙여야 기존 LV name 등이 변경되지 않는다는 점에 유의하십시요. 또한 기존 VG의 모든 hdisk 번호들을 다 명기해야 합니다.
/ # recreatevg -y lthvg -Y NA -L / hdisk1 hdisk2 hdisk3 hdisk5 hdisk6
lthvg
이제 pvid가 새로운 것이 주어진 것을 보실 수 있습니다.
/ # lspv
hdisk0 00f6db0af58e9775 rootvg active
hdisk1 00f9d7b42f325d3b lthvg active
hdisk2 00f9d7b42f325db6 lthvg active
hdisk3 00f9d7b42f325e48 lthvg active
hdisk4 00f9d7b41e2e58e1 None
hdisk5 00f9d7b42f325ec8 lthvg active
hdisk6 00f9d7b42f325f41 lthvg active
varyonvg한 뒤, 기존 LV 등이 기존과 똑같이 보존된 것을 확인하시면 됩니다.
/ # varyonvg lthvg
/ # lsvg -l lthvg
lthvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv00 jfs2log 1 1 1 closed/syncd N/A
fslv00 jfs2 12800 12800 5 closed/syncd /trace
/ # mount /trace
/ # ls -l /trace
total 46662784
-rw-r----- 1 root system 16502636544 Jun 21 04:52 64C_0620_.CCA.tar
drwxr-xr-x 12 root system 94208 Jun 21 07:34 64C_0620_CAA
drwxr-xr-x 2 root system 20480 Jun 20 20:16 64C_0621_CAA_nodelayack
-rw-r----- 1 root system 5218713600 Jun 21 03:52 64C_0621_CAA_nodelayack.tar