출처 : 대전국제IT교육센터 정성재 강사
1. RHEL 4와 LVM
(1)
개요
RedHat Linux 9 및 RHEL 3 까지는 LVM 구성시 lvm 1 버전을 사용하였으나, RHEL 4는 lvm 2
버전을 사용한다.
(2) LVM2가 LVM1과 비교해서 변화된 점
1) LVM에 처음 생성시 사용하던
vgscan은 사용하지 않는다. LVM2에서는 자동적으로 이뤄진다.
2) LV의 크기를 줄이거나 늘려주고, fsck 및
resize2fs 명령까지 수행하는 e2fsadm이라는 명령이
없어지고 ext2online이라는 명령을
사용한다.
2. LVM 설정하기
(1) 설명: 약 1000MB씩 할당되어 있는
/dev/hda11, /dev/hda12을 lvm0이라는 볼륨그룹으로
생성하고, 약 1200MB는 /ldata로
할당하고, 나머지 800MB는 /ldata2로 구성한다.
(2) 설정1: 1200MB의 /ldata 로 구성
1) fdisk를
이용하여 파티션 생성 및 속성 변경
fdisk /dev/hda 실행후 파티션을 생성하고, 파티션을 LVM 속성으로 변경하기 위하여
t, 해당 파티션 선택, 8e, w을 누르고 재부팅한다.
2) 물리적 볼륨(PV:Physical Volume)
생성
[root@linux33 ~]# pvcreate /dev/hda11
Physical volume
"/dev/hda11" successfully created
[root@linux33 ~]# pvcreate
/dev/hda12
Physical volume "/dev/hda12" successfully created
3)
생성된 PV를 특정한 볼륨그룹(lvm)에 추가시키기
[root@linux33 ~]# vgcreate lvm0 /dev/hda11
/dev/hda12
Volume group "lvm0" successfully created
4) 생성된 볼륨그룹
검사
[root@linux33 ~]# vgdisplay -v
Finding all volume
groups
Finding volume group "lvm0"
--- Volume group
---
VG Name lvm0
System ID
Format lvm2
Metadata Areas 2
Metadata
Sequence No 1
VG Access read/write
VG
Status resizable
MAX LV 0
Cur
LV 0
Open LV 0
Max
PV 0
Cur PV 2
Act
PV 2
VG Size 1.88 GB
PE
Size 4.00 MB
Total PE 482
Alloc
PE / Size 0 / 0
Free PE / Size 482 / 1.88 GB
VG
UUID pET6FH-n82q-ytwF-sdid-FnFj-9S9I-qM9yff
---
Physical volumes ---
PV Name /dev/hda11
PV
UUID 6cuR47-E2hA-3dL4-DixC-gGEg-zxzx-n0qfQg
PV
Status allocatable
Total PE / Free PE 241 /
241
PV Name /dev/hda12
PV
UUID 0uHbHb-MVyr-n8N1-q4L7-jNpm-LSy6-MhhGoJ
PV
Status allocatable
Total PE / Free PE 241 / 241
5) 논리적 볼륨(LV:Logical Volume) 생성
[root@linux33 ~]# lvcreate -L 1200M -n
ldata lvm0
Logical volume "ldata" created
=> 관련 디바이스 파일명이
/dev/mapper/lvm0-ldata로 생성되고, 추가로 /dev/lvm0/ldata로
심볼릭 링크파일이
생성된다.
6) LV생성확인
[root@linux33 ~]# lvscan
ACTIVE '/dev/lvm0/ldata' [1.17 GB] inherit
7) VG 확인
[root@linux33 ~]# vgdisplay -v
Finding all volume groups
Finding volume group "lvm0"
--- Volume group ---
VG
Name lvm0
System ID
Format
lvm2
Metadata Areas 2
Metadata Sequence No
1
VG Access read/write
VG Status
resizable
MAX LV 0
Cur LV
0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG
Size 1.88 GB
PE Size 4.00 MB
Total PE 482
Alloc PE / Size 0 / 0
Free
PE / Size 482 / 1.88 GB
VG UUID
pET6FH-n82q-ytwF-sdid-FnFj-9S9I-qM9yff
--- Logical volume
---
LV Name /dev/lvm0/ldata
VG
Name lvm0
LV UUID
HVbvnV-MDS7-yrqy-ijn6-fPSu-xabk-ujIAhA
LV Write Access
read/write
LV Status available
#
open 0
LV Size 1.17 GB
Current LE 300
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
--- Physical volumes ---
PV
Name /dev/hda11
PV UUID
6cuR47-E2hA-3dL4-DixC-gGEg-zxzx-n0qfQg
PV Status
allocatable
Total PE / Free PE 241 / 0
PV
Name /dev/hda12
PV UUID
0uHbHb-MVyr-n8N1-q4L7-jNpm-LSy6-MhhGoJ
PV Status
allocatable
Total PE / Free PE 241 / 182
=> Logical
volume이 나타나고, Physical volumes에서 /dev/hda11은 모두 사용중이고,
/dev/hda12도
일부 사용중이다.
8) 파일시스템 생성
[root@linux33 ~]# mkfs -t ext3
/dev/lvm0/ldata
9) 마운트할 디렉토리 생성
[root@linux33 ~]# mkdir
/ldata
10) 마운트
[root@linux33 ~]# mount -t ext3 /dev/lvm0/ldata
/ldata
(3) 설정 확인 및 등록
1) 개요: 제대로 설정되었는지 확인하려면 mount, df 명령을 이용하여 확인하고,
이상이 없으면
시스템 재부팅시에도 계속적으로 사용하기 위해 /etc/fstab에 등록한다.
2) 설정의
확인
ㄱ. mount 명령을 이용한 확인
[root@linux33 ~]# mount
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts
(rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda5 on /home type ext3
(rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda3 on /var type
ext3 (rw)
/dev/md0 on /raiddata type ext3 (rw)
/dev/md1 on
/raiddata1 type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type
binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs
(rw)
/dev/mapper/lvm0-ldata on /ldata type ext3 (rw) // 이
부분이다.
ㄴ. df 명령을 이용한 확인
[root@linux33 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 2.9G 191M 2.6G 7% /
none
252M 0 252M 0% /dev/shm
/dev/hda5 2.0G 36M
1.8G 2% /home
/dev/hda2 9.7G 5.8G 3.5G 63%
/usr
/dev/hda3 2.0G 191M 1.7G 11% /var
/dev/md0 1.9G 35M 1.8G 2% /raiddata
/dev/md1 950M 18M 885M 2% /raiddata1
/dev/mapper/lvm0-ldata
1.2G 34M 1.1G 4%
/ldata
=> 참고로 RHEL 4에서는 나타나는 디바이스 파일명이 RHEL 3 이전버전과 다른 것을 알 수
있다.
3) /etc/fstab에 등록
ㄱ. 설명: LVM을 시스템 재부팅후에도 사용하려면 /etc/fstab파일에
등록하면 된다.
ㄴ. 예
/dev/lvm0/ldata
/ldata ext3 defaults 0 0
(4) 설정2: 남은 공간인 약 800MB를
/ldata2로 구성하기
1) 설명: 남은 공간을 확인하려면 vgdisplay -v 명령을 내려 Free PE값을 확인하고 해당
PE값을
할당하는 것이 좋다. lvcreate 로 남은 PE값을 지정하고 Logical Volume을
생성한다.
2) 방법
ㄱ. [root@linux33 ~]# vgdisplay -v
=>
Free PE값을 확인한다.
ㄴ. [root@linux33 ~]# lvcreate -l 182 -n ldata2
lvm0
Logical volume "ldata2" created
=> lvm0이라는
볼륨그룹에 ldata2 이라는 Logical Volume을 생성하고 크기는 182PE
(약 728MB)를
할당한다.
ㄷ. [root@linux33 ~]# mkfs.ext3 /dev/lvm0/ldata2
=>
파일시스템을 생성한다.
ㄹ. [root@linux33 ~]# mkdir /ldata2
=>
/ldata2를 생성한다.
ㅁ. [root@linux33 ~]# mount -t ext3 /dev/lvm0/ldata2
/ldata2
=> 마운트한다.
ㅂ. mount 및 df 명령을 이용하여 확인한다.
ㅅ.
재부팅후에도 사용하려면 /etc/fstab에 등록한다.
3. 설정된 LVM
확장하기
(1) 개요: 기존의 설정된 Logical Volume을 확장하려면 Volume Group의 공간이 남아
있어야 한다.
만약 VG의 공간이 없으면 새로운 디스크 파티션을 PV로 생성하고 해당 파티션을 VG로
확장한 뒤에 LV를 늘릴 수 있다.
(2) VG확장하기
1) 설명: LV를 늘리기 위해서는 새로운
파티션을 생성한 후에 PV로 만든 후 해당 PV를 VG에
속하게 해야 한다. 약 2000MB인 /dev/hda13을
VG에 속하게 해본다.
2) 방법
ㄱ. 파티션 생성: 'fdisk /dev/hda' 실행후 파티션을 2000MB로
생성하고, 속성을 LVM으로
변경하기 위하여 t, 해당 파티션 선택, 8e, w을 누르고
재부팅한다.
ㄴ. PV 생성
[root@linux33 ~]# pvcreate
/dev/hda13
Physical volume "/dev/hda13" successfully created
ㄷ. VG 확장
[root@linux33 ~]# vgextend lvm0 /dev/hda13
Volume
group "lvm0" successfully extended
ㄹ. 확인
[root@linux33 ~]#
vgdisplay -v
=> 늘어난 Physical volumes를 확인한다.
(3) LV확장하기
1) 설명: 약 1200MB가 할당된 /ldata를 1000MB를 추가하여 크기를 2200MB로 늘린다.
2) 방법
ㄱ.
마운트가 되어 있으면 umount 한다.
[root@linux33 ~]# umount /ldata
ㄴ.
lvextend 명령을 이용하여 확장한다.
[root@linux33 ~]# lvextend -L +1000M
/dev/lvm0/ldata
Extending logical volume ldata to 2.15
GB
Logical volume ldata successfully resized
ㄷ. lvscan이나
lvdisplay 명령을 이용하여 확장된 내용을 확인한다.
[root@linux33 ~]# lvscan
ACTIVE '/dev/lvm0/ldata' [2.15 GB] inherit
ACTIVE '/dev/lvm0/ldata2' [728.00 MB] inherit
ㄹ. ext2online
명령을 이용하여 파일시스템의 크기를 늘린다.
[root@linux33 ~]# ext2online
/dev/lvm0/ldata
ext2online v1.1.18 - 2001/03/18 for EXT2FS
0.5b
=> 이전 버전의 fsck 및 resize2fs 대체하는 명령으로 마운트된 상태에서도
사용가능하나
안정성을 위해 언마운트상태에서 사용하도록 한다.
ㅁ. df명령을 이용하여
확인한다.
4. LVM 관련명령어
(1) 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를 오류 등을 무시하고 물리적 볼륨으로 생성한다.
(2) 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를 포함시킨다.
(3) 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이라는 볼륨그룹의 내용을 자세히 보여준다.
(4)
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 크기로 생성한다.
5) 참고: LV와 디바이스파일명
RHEL 4버전에서
생성되는 디바이스 파일명은 "/dev/mapper/VG이름-LV이름"이다. 즉, VG명이
lvm0이고 LV명이 ldata이면
/dev/mapper/lvm0-ldata로 생성된다. RHEL 3 이전버전에서는
/dev/lvm0/ldata형태로 디바이스파일이
생성되는데, RHEL 4에서는 이 파일을 심볼릭 링크 파일로
추가로 생성시켜주므로 이 파일을 사용해도 된다.
(5)
lvscan
1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
2) 사용법
lvscan
[option]
3) option
-v: 정보를 자세히 보여준다.
4) 사용예
lvscan
(6) lvdisplay
1) 설명: Logical Volume의 정보를 보여준다.
2)
사용법
lvdisplay [option] LV명
3) option
-v: 정보를 자세히
보여준다.
4) 사용예
[root@www root]# lvdisplay -v
/dev/lvm00/data
=> /dev/lvm00/data라는 LV의 정보를 자세히 보여준다.
(7)
vgextend
1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때
사용한다.
2) 사용법
vgextend 볼륨그룹명 새PV명
3) 사용예
[root@www
root]# vgextend lvm00 /dev/hdc1
=> lvm00이라는 볼륨그룹에 /dev/hdc1을
추가한다.
(8) 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을 삭제한다.
(9) 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를 할당한다.
(10) lvreduce
1) 설명: Logical Volume의 용량을 줄이는
명령이다. 늘이는 경우와는 다르게 줄이는 경우에는
데이터가 파괴되므로 주의해야 하고, 파괴된 경우에는 다시
mkfs해서 사용해야 한다.
2) 사용법
lvreduce 옵션 [볼륨그룹병] LV명
3)
option
-l -사이즈: 지정한 PE수만큼 용량을 줄인다.
-L -사이즈: 지정한 사이즈만큼 용량을 줄인다.
단위를 표시하지 않으면 기본 단위는 Megabytes
이고, 사이즈단위로는 kKmMgGtT를 사용할 수
있다.
4) 사용예
[root@www root]# lvreduce -L -500
/dev/lvm00/data
=> /dev/lvm00/data의 용량을 500MB 줄인다.
(11)
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로
바꾼다. 결과적으
로 바로 위의 ㄱ번 예제와 같다.
(12) lvremove
1) 설명: 논리적
볼륨을 제거하는 명령이다. 사용중인 경우에는 제거되지 않으므로 미리 umount를
해야 한다.
2)
사용법
lvremove 논리적볼륨_절대경로
3) 사용예
[root@www root]# lvremove
/dev/lvm00/lvmdata3
=> /dev/lvm00/lvmdata3라는 논리적 볼륨을 제거한다.
(13)
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개로 지정한다.
(14) vgremove
1) 설명: 볼륨그룹을 제거하는
명령이다. 사용중이면 제거가 되지 않는 umount하고 속해있는 LV를
전부 제거해야 한다.
2)
사용법
vgremove 볼륨그룹명
3) 사용예
[root@www root]# vgremove
lvm00
=> lvm00이라는 볼륨그룹을 삭제한다.
(15) 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에 그대로 이동한다.
(16)
ext2online
1) 설명: 바뀐 파일시스템의 크기를 조정하는 명령으로 예전 버전의 resize2fs 명령의 기능을
한다. resize2fs보다 더 나아진 점으로는 기본적으로 fsck를 수행하고, 또한
mount된
상태에서 사용가능하다.
2) 사용법
ext2online 디바이스 파일명
3) 사용예
[root@linux33 ~]# ext2online /dev/lvm0/ldata
=>
/dev/lvm0/ldata의 바뀐 파일시스템의 크기를 확인하여 조정해준다.