[스크랩] HP-UX 11. LVM의 삭제 및 축소
이번 장에서는 LVM의 PV와 VG,LV의 삭제를 실제로 어떻게 하는가에 대해서 알아보도록 한다.
1. LV의 삭제
LVM의 생성이 PV생성 -> VG생성 -> LV생성의 순서로 이루어 졌다면 LVM의 삭제는 그 역순으로 이루어진다. 왜냐하면 VG안에 LV
가 들어있거나, PV가 VG에 포함되어 있을 경우 삭제되지 않기때문이다.
LV를 삭제하기 위해서는 LV가 사용중이지 않아야 한다. 만약 삭제하려는 LV에 파일시스템이 설치되었을 경우에는 umout한 뒤 LV를
삭제할 수 있다.


<그림 11.2> lvol의 삭제
2. VG의 축소(reduce)
VG의 Maintenance작업을 위해서는 VG안에 포함되어 있는 모든 LV를 삭제하여 VG안에 더 이상의 LV가 존재하지 않아야 VG에 대
한 작업을 할 수 있다. 따라서 VG를 삭제 또는 축소해야 할 경우에는 LV에 있는 데이터 중 필요한 데이터를 backup한 후, 작업을 해
야 한다.
lvreduce는 VG가 하나 이상의 디스크로 사용중일 때, VG안에 있는 디스크 중 더 이상 필요하지 않은 디스크를 VG에서 제외하는 것
으로, 용량 축소가 필요한 경우 또는 VG를 삭제해야 하는 경우에 사용한다. 이 때, VG내에는 LV가 존재하지 않아야 하며, 만약 LV가
VG내에 존재할 경우, lvreduce는 무시된다.
그림 11.3은 두 개의 PV로 구성된 vg01의 volume group에서 /dev/dsk/c0t4d0의 디스크를 삭제하는 것이다.
㉠ vgdisplay -v vg01|tail -15 : vgdisplay 명령으로 현재 vg01에 할당되어 있는 디스크 중 VG에서 삭제할 디스크를 확인한다.
㉡ vgreduce /dev/vg01 /dev/dsk/c0t4d0 : 'vgreduce VG_name PV Name' 명령으로 c0t4d0의 디스크를 vg01에서 삭제한다.
㉢ strings /etc/lvmtab : strings 명령으로 lvm 구성정보를 출력한 바와 같이 vg01의 구성원 중 /dev/dsk/c0t4d0가 삭제되고,
/dev/dsk/c0t3d0만 남은 것을 알 수 있다.
㉣ vgdisplay -v vg01|grep 'PV Name' : vgdisplay 명령으로 재차 확인한 결과 vg01은 하나의 PV로 구성됨을 알 수 있다.

<그림 11.3> vgreduce 명령의 예제
3. VG의 삭제
앞서 말한 바와 같이 VG를 삭제하기 위해서는 VG안에 LV가 존재하지 않아야 하고, lvreduce명령을 통해 마지막 한 개의 PV만 남기
고 모두 reduce되어 있어야 한다. 또한 VG의 삭제 역시 데이터 손실의 위험을 안고 있으므로, 작업 전에는 반드시 데이터를 확인하고
필요한 데이터가 있을 경우에는 backup을 받아놓아야 한다. 그리고 VG를 삭제한 후에는 /dev 디렉토리에 존재하는 VG의 디렉토리
와 VG의 group 파일을 삭제해주어야 한다.
그림 11.4는 vg01 Volume Group을 삭제하는 것으로, vgremove 명령으로 VG를 삭제할 수 있다.
㉠ vgremove /dev/vg01 : vgremove명령으로 vg01을 삭제하려고 했으나 VG내에 lvol이 존재하고 있으므로, 에러 메세지와 함께
종료된다.
㉡ lvremove -f /dev/vg01/lvol1 : vg01의 삭제를 위해 lvol1을 삭제한다. 이 때에는 lvol1의 데이터를 확인한 후 작업을 하도록
한다.
㉢ vgremove /dev/vg01 : vgremove 명령으로 vg01을 삭제한다. lvol1을 삭제하였으므로 정상적으로 삭제됨을 알 수 있다.
㉣ ll /dev/vg01 : vg01이 사용하던 디렉토리를 확인한 결과 vg01의 디렉토리와 vg01의 group파일이 남아있음을 알 수 있다.
㉤ rm -rf /dev/vg01 : 디렉토리와 group파일은 VG 생성 시 수동으로 만들어준 파일이므로 삭제할 때에도 수동으로 삭제한다.
㉥ ll /dev/vg01 : 다시 vg01이 사용하던 디렉토리를 확인한 결과 vg01 디렉토리와 group파일 모두 삭제되었음을 알수 있다.

<그림 11.4> vgremove 명령의 예제
4. PV의 삭제
마지막으로 Physical Volume를 삭제한다. PV역시 어떠한 VG에도 포함되어 있지 않아야 삭제가 가능하며, VG에 속해 있을 경우
삭제명령은 무시된다.
㉠ strings /etc/lvmtab : strings 명령으로 삭제하려는 PV가 VG에 속해있지 않은지 확인한다.
㉡ pvremove /dev/dsk/c0t4d0 : c0t4d0 디스크의 PV를 지우려고 했으나 character device이 아니므로 에러 발생 후 종료한다.
㉢ pvremove /dev/rdsk/c0t4d0 : character device 파일을 사용하여 c0t4d0 디스크의 PV를 삭제한다.

<그림 11.5> pvremove 명령의 예제
5. LV의 축소
Lvol을 사용하다 보면, 원래 사용계획과 다르게 다른 목적으로 사용하게 되어 필요이상 과다한 용량이 설정되거나, 현재 사용중인
lvol의 용량은 충분하지만 다른 lvol의 용량이 critical하게 부족하여 현재 사용중인 lvol의 용량을 나눠주어야 하는 경우와 같이 lvol의
크기를 줄여야 하는 일이 생기게 된다. 이러한 경우 lvreduce명령을 사용하여 lvol의 크기를 줄여 필요한 공간만큼만 남기고 나머지는
유휴 자원으로 돌리거나 필요한 다른 lvol에 extend를 할당할 수 있다.
LV의 축소는 간단하면서도 꽤 어려운 작업에 속한다. 이는 lvol은 직접 데이터가 저장되는 장소이고, 주로 lvol이 사용하는 공간에는
파일 시스템이 설치되기 때문이다. 파일 시스템이 lvol에 설치된 경우 lvol의 확대는 원만히 진행될 수 있으나, 축소에서는 상당한
제약이 따른다. 왜냐하면 파일시스템은 extend는 가능하지만 reduce는 불가능하기 때문이다.
따라서 파일시스템으로 사용중인 lvol의 용량의 축소가 요구될 경우에는 반드시 파일시스템의 데이터를 Backup받은 후, lvol을 삭제
하고 현재보다 더 작은 lvol을 새로 생성하여 Backup받은 lvol의 데이터를 restore하는 방법을 사용한다. 또한 현재 사용중인 lvol보다
파일시스템이 더 적은 공간을 차지하고 있다고 하더라도 lvol을 줄일경우 데이터가 손상되기 때문에 lvol의 축소 시에는 반드시 Back
up을 해둔 후 작업을 시작해야 한다. 물론 디스크에 들어있는 데이터가 필요없는 경우는 Backup이 필요 없다. 그러나 파일시스템
backup을 재차 강조하는 이유는 그만큼 lvol에 대한 작업은 디스크에 들어있는 데이터를 통째로 잃어버릴 수 있을 만큼 위험부담이
따르기 때문이다.
그림 11.6은 /test01 파일시스템이 사용하는 lvol을 reduce하는 작업의 예를 보여준다. 그러나 lvol의 size를 File System의 크기보다
작게 줄여, lvreduce는 정상적으로 이루어 지지만 파일시스템은 손상되어 파일시스템 mount가 되지 않는것을 보여준다.
㉠ bdf : 현재 파일시스템의 현황을 출력한다. /test01 파일시스템은 현재 71GB의 용량이 할당되어 있다.
㉡ fuser -cu /test01 : test01 파일시스템을 사용중인 user가 있는지 점검한다.
㉢ fuser -ck /test01 : test01 파일시스템을 사용중인 user가 있을경우, user를 kill한다.
㉣ tar cvf /dev/rmt/0mn /test01: lvreduce 작업을 위해 /test01 파일시스템을 tape으로 backup 받는다.
㉤ umount /test01 : 파일시스템이 mount되어 있는 상태에서는 lvreduce를 할 수 없으므로 파일시스템을 umount한다.
㉥ lvreduce -L 2000 /dev/vg01/lvol1 : lvol1의 크기를 2GB로 축소한다.
㉦ mount /dev/vg01/lvol1 /test01 : lvol1을 2GB로 축소한 후 다시 /test01 마운트 포인트에 mount를 시도했으나 파일시스템
의 크기(71GB)보다 lvol1의 크기(71GB -> 2GB)가 더 작아졌으므로 파일시스템이 손상되
어 에러 메세지와 함께 종료된다. 이러한 경우 미리 Backup을 받아두었다면, lvol1에 다시
newfs 명령으로 파일시스템을 재설치하고 backup 받아둔 데이터를 해당 파일시스템에
restore하면 된다. 하지만 backup을 받아두지 않았다면 데이터는 영영 찾을 수 없게 된다
따라서 LVM의 Maintenance작업 전에는 Backup을 항상 받아두는 습관이 필요하다.

<그림 11.6> lvreduce 후 파일시스템의 손상
아래 그림 11.7은 lvol1의 Size는 5GB이고 /test01파일시스템의 용량이 2GB일 때, lvol1의 크기를 5GB-> 2.5GB로 lvreduce하는 과정
을 보여준다. 이 때에는 파일시스템이 2GB로 lvol1의 크기가 줄어도 파일시스템 영역보다 크기가 더 작아지지 않기 때문에, 파일시스
템 손상없이 정상적으로 lvreduce작업이 이루어 진다.
㉠ bdf : 현재 파일시스템의 현황 확인 결과 /test01파일시스템의 크기는 2GB임을 알 수 있다.
㉡ vgdisplay -v vg01|grep 'LV Size" : lvol1의 Size확인 결과 5GB임을 알 수 있다.
㉢ umount /test01 : lvreduce를 하기 위해 /test01파일 시스템을 umount한다.
㉣ bdf : /test01 파일시스템이 umount된 것을 확인한다.
㉤ lvreduce -L 2050 /dev/vg01/lvol1 : lvol1의 크기를 2.5GB로 축소한다.
㉥ mount /dev/vg01/lvol1 /test01 : lvreduce의 결과로 파일시스템 손상이 없었기 때문에 정상적으로 lvol1이 /test01에 mount
된다.

<그림 11.7> lvreduce 명령의 예제
출처... 네이버 HP카페