Learning Linux/AdminCourse 2009. 7. 27. 23:18
출처 : 대전국제IT교육센터 정성재 강사
1. LVM이란?
(1) 개요: 리눅스 설치시나 하드디스크 추가시에 파티션이라는 것을 나누고 공간을 할당한다. 이
때 한번 설정한 공간을 고정이 되어 변경이나 추가가 불가능하다. LVM(Logical Volume
Manager)은 파티션을 원하는 대로 추가하거나 제거하고 그 크기도 조절할 수 있도록
해주는 방법이다.
(2) 관련용어
1) 물리적 볼륨(PV:Physical Volume): 실제로 나눈 파티션을 말한다. 즉 /dev/hda8, /dev/hdb1 등
을 말한다. LVM에서는 이러한 물리적 볼륨을 하나의 구성원
으로 받아 들이는 형식이다.
2) 물리적 확장(PE:Physical Extents): 일종의 블럭같은 것으로 실제 데이터가 저장되는 공간을
말한다. 보통 1PE가 약 4MB정도 차지한다.
3) 볼륨그룹(VG:Volume Group): 물리적 볼륨이 모여서 하나의 VG를 이룬다. 이것은 더 크게 말하
면 지정한 크기의 PE가 모여 생성되는 하나의 큰 덩어리라고 할 수
있다.
4) 논리적볼륨(LV:Logical Volume): 이 논리적 볼륨이 우리가 흔히 쓰는 정규파티션과 같다. 실제
만들어서 사용하는 것이 바로 이 LV이다.
2. LVM 설정하기
(1) 설명: /dev/hda8(약 800MB)과 /dev/hda9(약 800MB)을 lvm이라는 볼륨그룹으로 생성하고 1.2GB는
/data라는 디렉토리로 400MB는 /backup으로 구성해보자. 여기서 /data는 처음에 1GB로
할당하고 추가로 영역을 200MB 확장하는 형태로 구성한다.
(2) 설정1 : 1000MB의 /data 로 구성
1) fdisk를 이용하여 파티션 속성을 변경: fdisk /dev/hda 실행후에 t, 해당 파티션 선택, 8e, w
을 누르고 재부팅한다.
2) 디스크에 있는 볼륨그룹을 검색하고 /etc/lvmtab 파일 생성
[root@www root]# vgscan
3) 물리적 볼륨(PV:Physical Volume) 생성
[root@www root]# pvcreate /dev/hda8
pvcreate -- physical volume "/dev/hda5" successfully created
[root@www root]# pvcreate /dev/hda9
pvcreate -- physical volume "/dev/hda8" successfully created
4) 생성된 PV를 특정한 볼륨그룹(lvm)에 추가시킨다. // 레드햇8에서는 lvm이라는 볼륨그룹
생성불가
[root@www root]# vgcreate lvm /dev/hda8 /dev/hda9
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "lvm"
vgcreate -- volume group "lvm" successfully created and activated
5) 생성된 볼륨그룹 검사한다.
[root@www root]# vgdisplay -v lvm
--- Volume group ---
VG Name lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 1.66 GB
PE Size 4 MB
Total PE 424
Alloc PE / Size 0 / 0
Free PE / Size 424 / 1.66 GB
VG UUID RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA
--- No logical volumes defined in "lvm" ---
--- Physical volumes ---
PV Name (#) /dev/hda8 (1)
PV Status available / allocatable
Total PE / Free PE 212 / 212
PV Name (#) /dev/hda9 (2)
PV Status available / allocatable
Total PE / Free PE 212 / 212
6) 논리적 볼륨(LV:Logical Volume) 생성
[root@www root]# lvcreate -L 1000M -n data lvm
lvcreate -- doing automatic backup of "data"
lvcreate -- logical volume "/dev/lvm/data" successfully created
7) LV생성확인
[root@www root]# lvscan
lvscan -- ACTIVE "/dev/lvm/data" [1000 MB]
lvscan -- 1 logical volumes with 1000 MB total in 1 volume group
lvscan -- 1 active logical volumes
8) VG 확인
[root@www root]# vgdisplay -v lvm
--- Volume group ---
VG Name lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 1.66 GB
PE Size 4 MB
Total PE 424
Alloc PE / Size 250 / 1000 MB
Free PE / Size 174 / 696 MB
VG UUID RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA
--- Logical volume ---
LV Name /dev/lvm/data
VG Name data
LV Write Access read/write
LV Status available
LV # 1
# open 0
LV Size 1000 MB
Current LE 250
Allocated LE 250
Allocation next free
Read ahead sectors 1024
Block device 58:0
--- Physical volumes ---
PV Name (#) /dev/hda8 (1)
PV Status available / allocatable
Total PE / Free PE 212 / 0
PV Name (#) /dev/hda9 (2)
PV Status available / allocatable
Total PE / Free PE 212 / 174
=> 논리적 볼륨부분이 나타나고 물리적 볼륨에서 /dev/hda8은 모두 사용중인 것으로 나타난다.
9) 파일시스템 생성
[root@www root]# mkfs -t ext3 /dev/lvm/data
10) 마운트하여 사용한다.
[root@www root]# mount -t ext3 /dev/lvm/data /data
(3) 참고
1) 설명: LVM을 시스템 재부팅후에도 사용하려면 /etc/fstab파일에 등록하면 된다.
2) 예
/dev/lvm/data /data ext3 defaults 0 0
(4) 설정2: /data 디렉토리 200MB 추가하기
1) 설명: /data를 추가하는 방법에는 lvextend 명령을 이용하는 방법과 e2fsadm 명령을 사용하는
방법 2가지가 있다. 이 두 방법 중 하나로 Logical Volume의 용량을 늘리고, lvscan
명령을 이용하여 확인한다.
2) 방법1: lvextend 사용하기
ㄱ. [root@www root]# lvextend -L +200M /dev/lvm/data
=> 기존의 용량에 추가로 200MB를 할당한다.
ㄴ. [root@www root]# lvscan
=> LV용량이 늘어난 것을 확인할 수 있다.
ㄷ. 참고: lvextend로 LV에 할당된 용량을 늘렸다고 하더라도, 해당 디바이스를 다시 마운트하고
df -h 명령으로 확인해보면 늘어나지 않았음을 알 수 있다. df는 파일시스템 관련
명령으로 실제 파일시스템이 구성된 영역에 대해 인식한다. lvextend이후에 fsck나
resize2fs 등의 명령이 추가로 필요하다.
예) umount /dev/lvm/data
e2fsck -f /dev/lvm/data
resize2fs -f /dev/lvm/data
3) 방법2: e2fsadm 명령이용하기
[root@www root]# e2fsadm -L +200M /dev/lvm/data
=> e2fsadm 명령은 lvextend 수행후 resize2fs 등을 자동으로 해준다.
(5) 설정3: 남은 공간(약 400MB)를 /backup 디렉토리로 사용하기
1) 설명: 남은 공간을 확인하려면 vgdisplay -v 명령을 내려서 Free PE값을 확인하고 해당 PE값을
할당하는 것이 좋다. lvcreate 로 남은 PE값을 지정하고 Logical Volume을 생성한다.
2) 방법
ㄱ. [root@www root]# lvcreate -l 124 -n backup lvm
=> lvm이라는 볼륨그룹에 backup 이라는 Logical Volume을 생성하고 크기는 약 124PE
(약 496MB)를 할당한다.
ㄴ. [root@www root]# mkfs -t ext3 /dev/lvm/backup
=> 파일시스템을 생성한다.
ㄷ. [root@www root]# mount -t ext3 /dev/lvm/backup /backup
=> 마운트하여 사용한다.
3. LVM 관련명령어
(1) vgscan
1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일과 lvm관련 데이타
파일을 /etc/lvmtab.d디렉토리에 생성한다. fdisk를 이용하여 파티션을 속성을 LVM으로
지정한 후에 이 명령을 사용한다.
2) 사용법
vgscan
(2) pvcreate
1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을
분할하고 LVM 속성으로 지정한 뒤에 해당 파티션을 PV로 만들 때 사용하는 명령이다.
2) 사용법
pvcreate [option] 디바이스명
3) option
-ff : 강제로 생성할 때 쓴다.
4) 사용예
ㄱ. [root@www root]# pvcreate /dev/hdb1
=> /dev/hdb1을 물리적 볼륨으로 생성한다.
ㄴ. [root@www root]# pvcreate -ff /dev/hdb2
=> /dev/hdb2를 오류 등을 무시하고 물리적 볼륨으로 생성한다.
(3) vgcreate
1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
2) 사용법
vgcreate [option] 볼륨그룹명 디바이스명 디바이스명
3) option
-s 사이즈[kKmMgGtT]: PE(물리적확장:Physical Extends]의 크기를 지정한다.
4) 사용예
ㄱ.[root@www root]# vgcreate lvm00 /dev/hda7 /dev/hdb1
=> lvm00 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
ㄴ.[root@www root]# vgcreate -s 16M lvm00 /dev/hda7 /dev/hdb1
=> lvm00 이라는 볼륨그룹을 생성하고, PE의 크기를 16MB로 지정하면서 /dev/hda7,
/dev/hdb1 이라는 PV를 포함시킨다.
(4) vgdisplay
1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
2) 사용법
vgdisplay [option] [볼륨그룹명]
3) option
-v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 Logical Volume과 Physical Volume도
같이 보여준다.
4) 사용예
ㄱ. [root@www root]# vgdisplay
=> Volume Group의 내용을 보여준다.
ㄴ. [root@www root]# vgdisplay -v lvm00
=> lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
(5) lvcreate
1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
2) 사용법
lvcreate 옵션 볼륨그룹명
3) option
-L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt
es) 단위를 붙여 지정가능하다.
-l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB
이다. (참고로 소문자 L임)
-n: LV의 이름을 지정하는 옵션이다.
-i: RAID 0같은 stripe 사용시 볼륨이름을 지정하는 옵션이다.
-I stripe_size: 스트라이프되는 크기를 지정한다. 기본단위가 kilobytes이고 크기는 반드시
2의 배수(2^n: n값은 2부터 9)로 지정해야 한다.
-s: 유동적인 디렉토리 백업에 유용한 snapshot LV를 생성하는 옵션이다.
4) 사용예
ㄱ. [root@www root]# lvcreate -L 2000M -n backup lvm00
=> lvm00이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
이 경우 /dev/lvm00/backup이라는 디바이스파일이 생성된다.
ㄴ. [root@www root]# lvcreate -l 250 -n data lvm00
=> lvm00이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
이 경우 /dev/lvm00/data라는 디바이스파일이 생성된다.
ㄷ. [root@www root]# lvcreate -i 2 -L 1G -n striped_lv lvm00
=> /dev/lvm00/striped_lv 라는 디바이스파일을 생성하고 볼륨 2를 부여한다.
ㄹ. [root@www root]# lvcreate -s -L 500M -n snap /dev/lvm00/lvmdata4
=> /dev/lvm00/lvmdata4의 snapshot LV인 /dev/lvm00/snap를 500MB 크기로 생성한다.
(6) lvscan
1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
2) 사용법
lvscan [option]
3) option
-v: 정보를 자세히 보여준다.
4) 사용예
lvscan
(7) lvdisplay
1) 설명: Logical Volume의 정보를 보여준다.
2) 사용법
lvdisplay [option] LV명
3) option
-v: 정보를 자세히 보여준다.
4) 사용예
[root@www root]# lvdisplay -v /dev/lvm00/data
=> /dev/lvm00/data라는 LV의 정보를 자세히 보여준다.
(8) vgextend
1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
2) 사용법
vgextend 볼륨그룹명 새PV명
3) 사용예
[root@www root]# vgextend lvm00 /dev/hdc1
=> lvm00이라는 볼륨그룹에 /dev/hdc1을 추가한다.
(9) vgreduce
1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다. 물론 해당 PV의 PE가 할당되어
있으면 제거되지 않는다.
2) 사용법
vgreduce [option] 볼륨그룹명 PV명
3) option
-a : 특별한 PV명이 없을 경우에 비어있는 PV를 모두 제거한다.
4) 사용예
[root@www root]# vgreduce lvm00 /dev/hdc1
=> lvm00이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
(10) lvextend
1) 설명: Logical Volume의 용량을 확장하는 명령이다.
2) 사용법
lvextend 옵션 [볼륨그룹명] LV명
3) option
-l +사이즈: 지정한 PE수만큼 용량을 늘린다.
-L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes
단위이다.
4) 사용예
[root@www root]# lvextend -L +200M /dev/lvm00/data
=> 기존의 용량에 추가로 200MB를 할당한다.
(11) lvreduce
1) 설명: Logical Volume의 용량을 줄이는 명령이다. 늘이는 경우와는 다르게 줄이는 경우에는
데이터가 파괴되므로 주의해야 하고, 파괴된 경우에는 다시 mkfs해서 사용해야 한다.
2) 사용법
lvreduce 옵션 [볼륨그룹병] LV명
3) option
-l -사이즈: 지정한 PE수만큼 용량을 줄인다.
-L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes
이고, 사이즈단위로는 kKmMgGtT를 사용할 수 있다.
4) 사용예
[root@www root]# lvreduce -L -500M /dev/lvm00/data
=> /dev/lvm00/data의 용량을 500MB 줄인다.
(12) lvrename
1) 설명: 논리적 볼륨의 이름을 변경하는 명령이다.
2) 사용법
lvrename 원_논리적볼륨_절대경로 새로운_논리적볼륨_절대경로
lvrename 볼륨그룹명 원_논리적볼륨명 새로운_논리적볼륨명
3) 사용예
ㄱ. [root@www root]# lvrename /dev/lvm00/lvmdata3 /dev/lvm00/data3
=> /dev/lvm00/lvmdata3 라는 논리적 볼륨의 이름을 /dev/lvm00/data3로 바꾼다.
ㄴ. [root@www root]# lvrename lvm00 lvmdata3 data3
=> /dev/lvm00/lvmdata3 라는 논리적 볼륨의 이름을 /dev/lvm00/data3로 바꾼다. 결과적으
로 바로 위의 ㄱ번 예제와 같다.
(13) lvremove
1) 설명: 논리적 볼륨을 제거하는 명령이다. 사용중인 경우에는 제거되지 않으므로 미리 umount를
해야 한다.
2) 사용법
lvremove 논리적볼륨_절대경로
3) 사용예
[root@www root]# lvremove /dev/lvm00/lvmdata3
=> /dev/lvm00/lvmdata3라는 논리적 볼륨을 제거한다.
(14) vgchange
1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경
할 수 있다.
2) 사용법
vgchange 옵션 볼륨그룹명
3) option
-a y|n : 볼륨그룹의 사용여부를 지정한다.
-l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
4) 사용예
ㄱ. [root@www root]# vgchange -a y lvm00
=> lvm00이라는 볼륨그룹을 활성화시킨다.
ㄴ. [root@www root]# vgchange -a n lvm00
=> lvm00이라는 볼륨그룹을 비활성화시킨다. 사용중이면 중지시킬 수 없다.
ㄷ. [root@www root]# vgchange -l 100 lvm00
=> lvm00이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
(15) vgremove
1) 설명: 볼륨그룹을 제거하는 명령이다. 사용중이면 제거가 되지 않는 umount하고 속해있는 LV를
전부 제거해야 한다.
2) 사용법
vgremove 볼륨그룹명
3) 사용예
[root@www root]# vgremove lvm00
=> lvm00이라는 볼륨그룹을 삭제한다.
(16) pvmove
1) 설명: 물리적확장인 PE를 이동시키는 명령이다.
2) 사용법
pvmove [option] 장치명 [장치명]
3) option
-v: 해당 장치의 정보를 보여준다.
4) 사용예
ㄱ. pvmove -v /dev/hda15
=> /dev/hda15의 정보를 보여준다.
ㄴ. pvmove /dev/hda14 /dev/hda15
=> /dev/hda15의 PE의 내용을 /dev/hda15에 그대로 이동한다.
(17) resize2fs
1) 설명: 파일시스템의 크기를 늘이거나 줄이는 명령이다. 단, 변경하고자 하는 파티션의 크기는
미리 늘이거나 줄여져 있어야 한다. resize2fs 명령으로 파티션의 크기까지 조절할 수
없다.
2) 사용법
resize2fs [option] 장치명 [size]
3) option
-f: resize2fs는 파일시스템을 분석하여 크기를 늘이거나 줄이는 명령이다. 보통 이 명령을
수행하기 위해서는 fsck작업을 통해 파일시스템 분석이 되어야 하는데 이 옵션을 사용하면
fsck작업없이 한번에 가능하다.
4) 사용예
ㄱ. resize2fs /dev/lvm00/lvmdata
=> 파일시스템의 크기를 조정한다.
ㄴ. resize2fs -f /dev/lvm00/lvmdata2
=> fsck 등의 명령없이 파일시스템을 검사하고 파일시스템의 크기를 조정한다.
(18) e2fsadm
1) 설명: 논리적볼륨의 확장/축소와 동시에 파일시스템의 크기도 조정하는 명령이다.
즉 lvcreate, lvreduce, resize2fs 등의 명령어 기능을 한번에 한다.
2) 사용법
e2fsadm option [+|-]논리적볼륨크기 논리적볼륨_절대경로
3) option
-l -/+사이즈: 지정한 PE수만큼 용량을 줄이거나 늘린다.
-L -/+사이즈: 지정한 사이즈만큼 용량을 줄이거나 늘린다. 단위를 표시하지 않으면
기본 단위는 Megabytes이고, 사이즈단위로는 kKmMgGtT를 사용할 수 있다.
4) 사용예
ㄱ. [root@www root]# e2fsadm -L +100M /dev/lvm00/lvmdata2
=> /dev/lvm00/lvmdata2의 크기를 100M 확장한다.
ㄴ. [root@www root]# e2fsadm -L -100M /dev/lvm00/lvmdata2
=> /dev/lvm00/lvmdata2의 크기를 100M 축소한다.
ㄷ. [root@www root]# e2fsadm -L 50M /dev/lvm00/lvmdata2
=> /dev/lvm00/lvmdata2의 크기를 50M로 한다. 그러나, 기본 PE가 4MB 단위이므로 52MB로
생성한다.
4. LVM 활용하기
(1) 두 개의 디스크를 하나의 striped LV로 만들기
1) 개요: LVM과 RAID는 물리적인 여러 디스크를 묶어 하나의 논리적인 디스크처럼 사용할 수
있다는 점에서 유사하다. 그러나, LVM은 손쉽게 확장이 가능하고, 관리가 용이하다는
장점이 있고, RAID는 밀러링(Mirroring), 스트라이핑(Striping)등 다양한 형태가
존재한다. LVM도 RAID-0 처럼 stripe 설정을 하여 여러 디스크를 하나의 디스크로
묶어서 사용이 가능하다.
2) 방법
ㄱ. 120G 짜리 두개의 디스크를 PV로 생성한다.
예) pvcreate /dev/hdb /dev/hdc
ㄴ. VG를 생성한다.
예) vgcreate vg0 /dev/hdb /dev/hdc
ㄷ. LV를 생성한다.
예) lvcreate -i 2 -l 4 -L 228G -n sripted_lv vg0
=> 228GB짜리 스트라이핑 LV인 /dev/vg0/striped_lv가 생성된다. -i는 사용되는 PV갯수
를 지정하는 옵션이고, -I는 저장되는 스트라이프 사이즈를 4KB로 지정하는 옵션이다.
ㄹ. 파일시스템 생성
예) mke2fs -j /dev/vg0/striped_lv
ㅁ. 마운트
예) mount -t ext3 /dev/vg0/striped_lv /data
(2) 새로운 디스크로 PV 교체하기
1) 개요: 사용중인 디스크를 용량이 더 큰 새로운 디스크로 교체한 경우 기존디스크의 내용을
포함하여 PE를 그대로 보존하면서 교체할 수 있다.
2) 방법
ㄱ. 기존의 디스크가 /dev/hdc1이고, 새롭게 장착할 디스크가 /dev/hdd1이라고 할 때 먼저
/dev/hdd1을 PV로 생성한다.
예) pvcreate /dev/hdd1
ㄴ. 볼륨그룹에 /dev/hdd1을 포함시킨다.
예) vgextend lvm00 /dev/hdd1
ㄷ. 기존의 디스크인 /dev/hdc1의 PE를 /dev/hdd1으로 옮긴다.
예) pvmove /dev/hdc1 /dev/hdd1
ㄹ. 기존의 디스크를 볼륨그룹에서 제거
예) vgreduce lvm00 /dev/hdc1
3) 참고: pvmove를 이용하면 기존의 PE대로 새로운 디스크에 기존의 디스크의 PE를 그대로 옮겨와
데이터를 보존할 수 있다. 그러나, 새로운 디스크가 기존의 디스크보다 용량이 클 경우
나머지 공간을 사용하려면 e2fsadm이나 lvextend, resize2fs를 사용하여 LV를 증가시켜야
한다. 기존의 LV명을 그대로 승계하므로, 기존의 LV 장치명에 lvextend하면 된다.
(3) snapshot LV를 이용한 백업
1) 개요: /var이나 데이터베이스관련 디렉토리를 백업할 때 문제점은 데이터의 변동이 심하다는
것이다. 만약 관련 디렉토리를 LVM으로 구성했을 경우 snapshot LV를 만들어 기존의
데이터를 고정한 뒤에, snapshot LV의 디바이스파일을 마운트하여 백업하면 좀 더 안전
하게 백업할 수 있다.
2) 방법
ㄱ. 사용중인 LV의 snapshot LV를 생성한다.
예) lvcreate -s -L 500M -n snap /dev/lvm00/lvmdata4
=> /dev/lvm00/snap 이라는 디바이스파일이 생성된다.
ㄴ. 생성된 snapshot LV를 마운트한다.
예) mount -t ext3 /dev/lvm00/snap /backup
ㄷ. 해당 디렉토리를 백업한다.
예) tar zcvf backup.tar.gz /backup
ㄹ. 백업한 후 해당 장치를 제거한다.
예) umount /backup 또는 umount /dev/lvm00/snap
lvremove /dev/lvm00/snap
3) 참고: 생성한 snapshot LV는 사용후에 제거하도록 한다. 그냥 두면 약간의 성능 저하를 유발
하므로 꼭 제거하도록 한다.
5. LVM 운영과 오류분석
(1) 물리적 볼륨(PV)생성과 오류
1) 개요: PV를 생성하기 위해 pvcreate 실행하면 간혹 파티션 정보로 인하여 오류가 발생하는
경우가 있다. 특히 다른 용도로 사용했던 파티션을 fdisk를 이용하여 파티션을 지우고
다시 생성하여도 계속 오류가 발생하는 경우가 있다. 이 경우 pvcreate 명령에서 -ff
옵션을 사용하되지만, pvcreate 전에 dd명령으로 파티션 정보를 깨끗히 지워주는 것이
좋다.
2) 방법
ㄱ. [root@www root]# dd if=/dev/zero of=/dev/hda14
ㄴ. [root@www root]# pvcreate /dev/hda14
(2) 논리적 볼륨(LV)확장과 크기
1) 개요: 1GB를 할당하여 /dev/lvm00/lvmdata라는 LV를 생성하고 /lvmdata라는 디렉토리로 마운트
하여 사용하였다. 공간이 부족하여 lvextend로 1GB를 추가로 할당하여 lvscan 명령으로
확인하면 증가되었다고 나오지만 'df -h' 등의 명령으로 살펴보면 실제사용공간은 늘어
나지 않음을 알 수 있다. 이 때는 파일시스템 관련명령어인 resize2fs로 크기를 재조정
해야 한다.
2) 방법
ㄱ. umount /lvmdata
=> 사용중인 /lvmdata를 중지시킨다.
ㄴ. lvextend -L +1G /dev/lvm00/lvmdata
=> 논리적볼륨을 1GB 증가시킨다. 물론 lvextend 명령은 파일시스템을 조작하는 것이 아니
므로 umount하지 않아도 된다.
ㄷ. e2fsck -f /dev/lvm00/lvmdata
=> 파일시스템을 검사한다.
ㄹ. resize2fs /dev/lvm00/lvmdata
=> 변경된 크기로 재조정한다.
참고로 ㄷ,ㄹ작업을 한번에 resize2fs -f /dev/lvm00/lvmdata 라고 해도 된다.
ㅁ. mount -t ext3 /dev/lvm00/lvmdata /lvmdata
=> 다시 마운트한다.
ㅂ. df -h
=> 용량이 변경되었는지 확인한다.
3) 참고
ㄱ. 설명: LV확장을 하는 lvextend와 파일시스템을 확장하는 resize2fs 두 명령을 하나의 명령
으로 가능하다. e2fsadm 명령을 이용하면 된다. 물론 e2fsadm명령을 사용하기 전에
umount해야 한다.
ㄴ. 사용예
[root@linux224 root]# e2fsadm -L +1G /dev/lvm00/lvmdata
(3) lvm정보의 확인: lvm 상태의 확인 /proc/lvm 디렉토리에서도 가능하다. 이 디렉토리 안쪽에
VGs라는 디렉토리가 생성되고, 그 안에 LVs, PVs 디렉토리에서 각각 논리적
볼륨과 물리적볼륨에 대한 생성내역을 빈파일로 같이 생성하여 목록 등을
확인할 수 있다.
(4) LVM 구성시 실패후 재구성하기
1) 개요: LVM 구성시 VG생성하기 위해 vgcreate하면 오류가 나는 경우가 있는데, 일단 lvm이라
는 이름으로 VG생성시 레드햇 리눅스버전에 따라 않되는 경우가 있으므로 lvm0등으로
생성한다. 또한, 처음 생성 실패후 같은 VG이름으로 재시도하는 경우에는 기존의 정보
를 삭제해야 가능하다.
2) 방법
ㄱ. 명령어를 이용하는 방법
예) vgremove lvm0
ㄴ. 수동으로 삭제하는 경우
a. /etc/lvmtab 삭제
예) rm /etc/lvmtab
b. /etc/lvmtab.d 디렉토리 삭제
예) rm -rf /etc/lvmtab.d
c. /etc/lvmconf 파일의 내용삭제
예) rf -rf /etc/lvmconf/*
d. 생성된 디바이스 삭제: vgcreate 명령을 이용하여 볼륨그룹을 생성하면 '/dev/볼륨그룹명'
디렉토리에 관련 디바이스가 생성된다. 이 디바이스 파일을 삭제하면
된다.
예) rm -rf /dev/lvm0