LVM의활성화와비활성화란, 현재시스템에서사용중인임의의볼륨그룹을시스템에서인식하지못하도록하거나또는그반대의역할을 하는 것을 말하며,
import와 export는볼륨그룹을시스템에서인식하거나인식하지못하는것에서더나아가시스템에서완전히떼어내어보관하거나볼륨그룹을다른시스템에붙여서사용할수있는것이다.
예를 들어, 현재사용하는시스템의하드웨어사양이부족하여업그레이드가필요한경우시스템업그레이드후시스템을기존의환경과최대한동일하게구성후최종적으로데이터가들어있는볼륨그룹만이동하여시스템중단시간을최소화할수있고, 장애가발생하여데이터를다른시스템으로이동해야할경우 LVM을비활성화한후 export하여다른시스템으로옮기거나시스템장애처리후안전하게다시사용이가능하도록할수있다.
LVM의활성화/비활성화
LVM의
활성화/비활성화는 vgchange명령으로 수행이 가능하다. vgchange명령의 옵션은 -a [y|n]로 'y'는 활성화를, 'n'는
비활성화를 뜻한다.
볼륨그룹을 비활성화 하는 경우 시스템이 볼륨 그룹을 인식할 수 없게하는 작업이므로 비활성화할 볼륨그룹이 사용중인 경우
에러메세지와 함께 비활성화 작업이 이루이지 않는다.
따라서 비활성화를 하기 전에 사용하는 볼륨그룹에 깔려있는 파일시스템이 사용중이라면 umount하여, 사용하는 User가
없도록 해야한다.
㉠ bdf : 현재 비활성화 작업을 하려는 /dev/vg01/lvol1이 /test01로 마운트 되어있는 것을 확인할 수
있다.
㉡ fuser -ck /test01 : /test01파일시스템을 umount하기 위해 현재 /test01 파일시스템을
사용하고 있는 User를 kill 시킨다.
㉢ strings /etc/lvmtab : 비활성화 작업을 하기 전 볼륨그룹의 구성을 확인한 결과 vg01 볼륨그룹은
하나의 디스크로 구성되어 있음을 알 수 있다.
㉣ vgdisplay -v |grep 'VG Name' : 시스템에서 사용중인 볼륨그룹을 확인한 결과 vg00과 vg01 두
개임을 알 수 있다.
볼륨그룹을 비활성화 할 준비가 되었으므로 비활성화 작업을 한다.
㉠ vgchange -a n vg01 : vgchange명령을 이용하여 vg01 볼륨그룹을 비활성화 한다.
㉡ vgdisplay -v vg01 : vg01에 대한 정보를 출력하려고 했으나 비활성화를 하여, 시스템이 볼륨그룹을
인식하지 못하기 때문에 볼륨그룹에 대한 정보를 볼 수 없다는 메세지를 출력하고 종료된다.
㉢ strings /etc/lvmtab : /etc/lvmtab의 LVM볼륨그룹 정보를 출력한 결과 vg01이 존재하고
하나의 디스크가 할당되어 있는 것 을 볼 수 있다. 이것은
볼륨그룹이 비활성화가 되어 시스템은 vg01을 인식하지 못하지만, 실제로 vg01이 비활성화되어 인식이 안될 뿐, 시스템에 구성되어
있음을 나타낸다.
비활성화한 볼륨그룹을 활성화하는 경우에는 -a 옵션에 'n'대신 'y'를 주면 간단히 볼륨그룹을 활성화 시킬 수
있다.
㉠ vgchange -a y vg01 : vg01 볼륨그룹을 -a 옵션에 y를 주어 활성화 시킨다.
㉡ vgdisplay -v |grep 'VG Name' : 시스템에서 사용중인 볼륨그룹의 정보를 디스플레이한 결과 vg01이
활성화되어 시스템에서 인식할 수 있기때문에 vg00과 vg01 두 개의 볼륨그룹이 출력된다.
LVM의 Export
앞에서 말한 바와 같이 볼륨그룹의 export작업은 볼륨그룹이 비활성화된 상태에서 볼륨그룹을 시스템과 별개의 독립된
볼륨그룹으로 분리하 것을 말하며,
시스템에서 export된 볼륨그룹은 현재 시스템의 가동여부와 관계없이 독립되어 있는 볼륨이므로 이 볼륨그룹에속해있는 디스크는 물리적으로 설치/제거가 가능하다.
볼륨그룹의 export는 vgexport명령으로 가능하며, 명령에 -m map_filename 옵션을 주어 import에 쓰일
map파일을 생성한다.
map파일은 볼륨그룹에 속해있는 논리볼륨의 개수와 이름등의 정보가 저장되어 있으며, 볼륨그룹의 논리볼륨 이름을 default
값(lvol1,2…n)으로 사용한 경우에는 map파일이 없어도
import가 가능하다.
㉠ vgexport -v -m vg01.map /dev/vg01 : vg01 볼륨그룹을 -v, -m
map_filename의 옵션으로 export한다. 그러나 vg01이 현재 사용중이라는 에러 메세지와 함께 export되지 않는다.
(-v는 export과정을 보여주는 옵션이며, -m은 앞서 말한 바와 같이
map 파일을 생성하는 것이다)
㉡ vgchange -a n vg01 : vg01을 export하기 위해 볼륨그룹을 비활성화 한다. 물론 비활성화 하기
전에는 볼륨그룹에 할당 된 논리볼륨이 사용중이면 안되므로 미리 조치를 취한다.
㉢ vgexport -v -m vg01.map /dev/vg01 : vg01 볼륨그룹을 export한다.
볼륨그룹이 비활성화 되어있으므로 이상 없이 export 작업이 이루어 진다. 그리고 볼륨그룹이 export되고나면 /dev
디렉토리에 존재하는 볼륨그룹의 디렉토리와 group는 삭제되기때문에 import시 다시 생성해 주어야 한다.
㉣ vgdisplay -v|grep 'VG Name' : vg01이 export되어 vgdisplay결과 현재 시스템이 사용중인
볼륨그룹은 vg00 하나인 것을 알 수 있다.
㉤ strings /etc/lvmtab : /etc/lvmtab파일의 LVM 구성정보를 출력한 결과 vgchange명령과는
달리 lvmtab 파일에도 vg01이 존재 하지 않는 것을 알 수 있다. 이것은 이미 vg01은 export되어 현재
시스템에서 분리되었기 때문이다. 따라서 물리적으로 제거해도 무방하다.
LVM의
Import
볼륨그룹의 import는 export되어있는 볼륨그룹을 삽입하는 것이다.
볼륨그룹을 시스템에 삽입하기 위해서는 vgcreate로 설치할 때와 마찬가지로 /dev 디렉토리에 볼륨그룹의 디렉토리와 group파일을
만들어 주어야 하고, 삽입된 볼륨그룹은 비활성화되어있는 상태이므로 vgchange명령으로 활성화한 뒤에 사용이 가능하다.
볼륨그룹의 import는 vgimport 명령으로 가능하며, -m map_filename 옵션으로 볼륨그룹을 export할 때
만들어놓은 map파일을 사용하여 import작업을 수행한다. vgimport명령의 형식은 vgimport -m map_filename /dev/vg_name /dev/dsk/c#t#d# 이다.
볼륨그룹이 여러 개의 디스크로 구성된 경우에는 vgimport명령의 마지막에 기술하는 디스크의
Path(/dev/dsk/c#t#d#)란에 주욱 나열하여 기록하면 된다.
(예: vgimport -v -m vg01.map /dev/vg01 /dev/dsk/c0t3d0
/dev/dsk/c0t4d0) 만약 복수 개로 구성된 볼륨그룹 import 시 볼륨그룹을 구성하는 디스크를 모두 기록하지 않거나
빠트린 경우에는 vgimport는 정상적으로 되지만 볼륨그룹 활성화시 에러가 발생하게 된다.
이러한 경우에는 "vgscan -v"명령을 사용하여 볼륨그룹을 구성하는 디스크가 무엇인지 확인하고, 해당
볼륨그룹을 다시 vgexport한 후 다시
import하면 된다.
㉠ mkdir /dev/vg01 : vg01의 디렉토리를 생성한다.
㉡ mknod /dev/vg01/group c 64 0x010000 : 볼륨그룹을 생성할 때와 마찬가지로
vg01 볼륨그룹의 group 파일을 생성한다.
㉢ ll /dev/vg01 : group 파일이 생성되었는지 확인한다.
㉣ vgimport -v -m vg01.map /dev/vg01 /dev/dsk/c0t3d0 : vgimport명령으로
export되어있던 vg01 볼륨그룹을 import한다.
㉤ vgdisplay -v|grep 'VG Name' : 시스템의 볼륨그룹 정보를 출력했으나
vg01이 비활성화 되어 있으므로 vg00만 출력된다.
㉥ vgchange -a y /dev/vg01 : vgchange명령으로 vg01을 활성화 시킨다.
㉦ vgdisplay -v|grep 'VG Name' : 시스템의 볼륨그룹 정보를 출력한 결과
vg01이 추가되었음을 알 수 있다.
㉧ strings /etc/lvmtab : lvmtab파일에도 정상적으로 반영되었음을 알 수 있다.