-
LVM 생성 및 관리linux/centOS 2018. 6. 22. 16:20
☆ LVM이란?
: LVM(Logical Volume Manage)는 물리적인 디스크를 논리적 볼륨그룹으로 구성해서 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기 만큼의 논리볼륨을 할당하여 사용하는 방법으로, 여러 개의 디스크를 하나의 논리적인 볼륨그룹(VG)으로 구성할 수 있으며, 각 논리볼륨(LV)는 독립적이므로, 하나의 디스크에도 여러 가지의 파일 시스템을 설치할 수 있다. 또한 디스크의 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설이 가능하고, 데이터량이 감소하여 더 이상 많은 양의 저장공간이 필요 없는 경우, 볼륨그룹에 속한 물리볼륨 개수를 축소하여 용량 감소가 가능하다.
가상 볼륨 방식 장점: (ㄱ) 확장성, (ㄴ) 안정성, (ㄷ) 편의성(관리 용이)
☆ LVM 구성 요소
LVM은 PV(Physical Volume), VG(Volume Group), LV(Logical Volume)으로 구성된다
구성요소
설명
Physical Volume
PV는 하나의 물리적인 Disk에 LVM을 사용할 수 있도록 LVM 데이터 구조를 생성한 것을 말한다.
디스크에 PV가 생성되면 LVM은 디스크를 하나의 물리볼륨으로 간주하게 되고, 볼륨그룹에 포함시킬 수 있게 된다. 따라서 하나의 디스크를 몇 개의 섹션은 논리볼륨으로, 몇 개의 섹션은 전체디스크로 관리하는 등의 방법은 적용 할 수 없다.
(예) 물리적인 디스크(EX:/dev/sda) or 물리적인 파티션(EX:/dev/sda1)
Volume Group
VG는 하나 또는 그 이상의 PV를 포함하며, LV를 생성할 수 있는 Volume Group의 집합이다.
vg00은 부팅정보와 OS가 있는 root Volume Group으로 변경이 불가능하다.
관리자가 관리상의 편의를 위해 DB의 경우에는 vgdb##, 일반적인 파일시스템의 경우에는vgfil##등으로 VG이름을 지정하여 사용한다.
(예) 가상 디스크
Logical Volume
LV는 하나 또는 그 이상의 PV로 구성되어 있는 VG 공간을 전체 또는 분할하여 일반 파일시스템, swap or dump area, raw disk로 사용할 수 있도록 논리적으로 할당한공간이다.
운영 중 공간이 부족할 경우 볼륨그룹에 속해 있는 또 다른 물리볼륨을 사용하여 확장이 가능하고, 필요하다면 크기를 변경하거나 다른 디스크로 데이터를 옮길 수 있다.
Volume Group vg00에 속한 Logical Volume lvol1,lvol2,lvol3은 각각 /stand, primary swap, / 디렉토리로 변경이 불가능 하다.
(예) 가상 파티션
☆ LVM 작동 방식
■ PE (Physical Extent) : PV가 갖는 일정한 블록 (mapping 하는 단위)
디스크에 PV를 생성하게 되면, LVM은 주소를 지정할 수 있는 PE(Physical Extent)라는 단위로 각 물리 디스크를 나눈다. extent는 주소 0번부터 시작하여 1씩 증분하며 순차적으로 디스크에 할당되고, PE의 크기는 볼륨 그룹을 만들 때 구성할 수 있다. 그리고 각 PE의 크기는 default 값이 4MB이며, 이 값은 필요에 따라 볼륨 그룹을 생성 시 1MB에서 256MB 사이의 값으로 지정할 수 있다.
■ LE (Logical Extent) : LV가 갖는 일정한 블록
디스크에 PV를 생성하고, 생성된 PV를 이용하여 VG(Volume Group)을 구성한 후 이 VG에 LV(Logical Volume)를 생성할 수 있다. LV의 기본 할당 단위를 LE(Logical Extent)라고 하는데, 이 LE는 PV 생성 시 나누어진 PE 영역과 Mapping된다. 따라서 PE의 크기가 4MB이면 LE의 크기도 4MB가 된다. 그리고 LV의 크기는 구성된 LE의 개수 또는 할당할 디스크 용량에 의해 결정된다.
■ LVM과 Data Access
앞서 말한 바와 같이 LVM이 논리볼륨에 디스크 공간을 할당할 때 LVM은 주소 0에서 시작하여 각 디스크에 순차적으로 할당된 PE와 할당된 LE의 Mapping Table을 만든다. 따라서 LVM은 그림 9.3과 같이 실제 데이터가 물리 볼륨에 상주하는 위치와 상관없이 논리 볼륨을 Access 함으로써 데이터에 액세스 한다.
■ LVM과 root 파티션
논리 볼륨이 루트, 부팅, 기본 스왑 또는 덤프에 사용될 경우에는 PE영역은 연속적이어야 한다. 즉, 단일 물리 볼륨에 공백 없이 PE를 할당해야한다. 그러나 루트가 아닌 디스크의 논리 볼륨의 LE에 대응되는 PE는 물리 볼륨에서 연속적이지 않거나 전혀 다른 디스크에 상주할 수 있다. 결과적으로 한 논리 볼륨에 속한 파일 시스템이 둘 이상의 디스크에 상주할 수 있다.
■ Mirroring (two way mirroring, three way mirroring이 있다.)
미러링되거나 스트라이프된 논리 볼륨을 제외하고 각 LE는 하나의 PE에 매핑된다. 그러나 미러링된 논리 볼륨의 경우, 단일 또는 이중 미러링을 사용하는지에 따라 각 LE는 두 개 또는 세 개의 PE와 매핑된다. 예를 들어, 미러 사본이 하나인 경우에는 각 LE가 두 개의 PE에 매핑되는데 하나의 확장 영역은 원본에 대한 것이고 다른 하나는 미러 사본에 대한 것이다.
☆ LVM 구성실습
■ LVM 1 / LVM 2
LVM 1 - RHEL 3(Redhat Enterprise Linux 3)/CentOS 3.X
LVM 2 - RHEL 4(Redhat Enterprise Linux 4)/CentOS 4.X
■ LVM 최대 크기 지원(64-bits CPU) - 8 Exa Bytes 까지 지원
(B -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB)
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)[EX1] 4장의 디스크 추가 후 파티션 설정
------ VMWare 환경 -----
(ㄱ) 서버 전원 OFF
# poweroff
(ㄴ) 4장의 디스크 추가(용량: 1G)
VMWare > VM > Setting > Add > Hard Disk
> Create a new virtual disk > SCSI > 1G > .... > FINISH
4장의 디스크 추가(/dev/sdc, /dev/sdd, /dev/sde, /dev/sdf)
(ㄷ) 서버 전원 ON
-> 시스템이 부팅되고 로그인 후 확인
-> # ls -l /dev/sd?
① 디스크 확인
# ls -l /dev/sd?
brw-r----- 1 root disk 8, 0 Apr 24 17:41 /dev/sda /* OS 디스크 */
brw-r----- 1 root disk 8, 16 Apr 24 17:41 /dev/sdb /* /testmount 디스크 */
brw-r----- 1 root disk 8, 32 Apr 24 17:41 /dev/sdc /* 새로 장착된 디스크 */
brw-r----- 1 root disk 8, 48 Apr 24 17:41 /dev/sdd /* 새로 장착된 디스크 */
brw-r----- 1 root disk 8, 64 Apr 24 17:41 /dev/sde /* 새로 장착된 디스크 */
brw-r----- 1 root disk 8, 80 Apr 24 17:41 /dev/sdf /* 새로 장착된 디스크 */
② 디스크 파티션 설정(EX: /dev/sdc1, System Partition ID: 8e)
한장의 디스크를 하나의 파티션(EX: /dev/sdc1)으로 설정 한다.
LVM 설정을 위해 시스템 아이디(System Partition ID)를 8e로 설정한다.
# fdisk /dev/sdc
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): p
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): <ENTER>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): <ENTER>
Using default value 130
Command (m for help): p
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 83 Linux
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L
0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks
# fdisk /dev/sdd
-> disk를 하나의 주 파티션으로 생성(/dev/sdd1, System ID : 8e)
# fdisk /dev/sde
-> disk를 하나의 주 파티션으로 생성(/dev/sde1, System ID : 8e)
# fdisk /dev/sdf
-> disk를 하나의 주 파티션으로 생성(/dev/sdf1, System ID : 8e)
# fdisk -l /dev/sd[cdef] (# fdisk -l | grep LVM)
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 8e Linux LVM
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 130 1044193+ 8e Linux LVM
Disk /dev/sde: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 130 1044193+ 8e Linux LVM
Disk /dev/sdf: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdf1 1 130 1044193+ 8e Linux LVM
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)(1) 물리적인 볼륨 생성(PV: Physical Volume)
생성한 디스크를 LVM으로 사용하기 위한 선처리 작업으로 물리적인 볼륨으로 생성해 준다.
(명령어 형식)
■ PV 생성
# pvcreate /dev/sda1
# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
# pvcreate /dev/sd[abc]1
# pvcreate /dev/sda /dev/sdb /dev/sdc
■ PV 삭제
# pvremove /dev/sda1
# pvremove /dev/sda1 /dev/sdb1 /dev/sdc1
# pvremove /dev/sd[abc]1
■ PV 정보 확인
# pvs
# pvscan
# pvdisplay (# pvdisplay /dev/sdc1)
# lvmdiskscan
[EX] PV 생성 및 삭제 실습
① PV 생성 및 확인
# pvcreate /dev/sdc1 (# pvcreate /dev/sd[cde]1)
Writing physical volume data to disk "/dev/sdc1"
Physical volume "/dev/sdc1" successfully created
[참고] 에러메세지
# pvcreate /dev/sdc1
pvcreate /dev/sdc1
Can't open /dev/sdc1 exclusively. Mounted filesystem?
# df –h
-> /oracle 마운트 확인
# umount /oracle
# vi /etc/fstab
# pvcreate /dev/sdc1
# pvcreate /dev/sdd1
Writing physical volume data to disk "/dev/sdd1"
Physical volume "/dev/sdd1" successfully created
# pvcreate /dev/sde1
Writing physical volume data to disk "/dev/sde1"
Physical volume "/dev/sde1" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 -- 1019.72M 1019.72M
/dev/sdd1 lvm2 -- 1019.72M 1019.72M
/dev/sde1 lvm2 -- 1019.72M 1019.72M
# pvscan
PV /dev/sdc1 lvm2 [1019.72 MB]
PV /dev/sdd1 lvm2 [1019.72 MB]
PV /dev/sde1 lvm2 [1019.72 MB]
Total: 3 [2.99 GB] / in use: 0 [0 ] / in no VG: 3 [2.99 GB]
# pvdisplay /dev/sdc1 (# pvdisplay)
"/dev/sdc1" is a new physical volume of "1019.72 MB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 1019.72 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 75kFvq-OwJC-rAAj-lCet-XBpL-M0JS-30xqZa
# lvmdiskscan
/dev/ramdisk [ 16.00 MB]
/dev/ram [ 16.00 MB]
/dev/root [ 16.54 GB]
/dev/ram2 [ 16.00 MB]
/dev/sda2 [ 1.00 GB]
/dev/ram3 [ 16.00 MB]
/dev/sda3 [ 502.03 MB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/sda5 [ 502.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/sda6 [ 502.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/sda7 [ 502.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/sda8 [ 502.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb1 [ 1019.72 MB]
/dev/sdc1 [ 1019.72 MB] LVM physical volume
/dev/sdd1 [ 1019.72 MB] LVM physical volume
/dev/sde1 [ 1019.72 MB] LVM physical volume
/dev/sdf1 [ 1019.72 MB]
3 disks
22 partitions
0 LVM physical volume whole disks
3 LVM physical volumes
② PV 삭제 및 확인
# pvremove /dev/sdc1 /dev/sdd1 /dev/sde1 (# pvremove /dev/sd[cde]1)
Labels on physical volume "/dev/sdc1" successfully wiped
Labels on physical volume "/dev/sdd1" successfully wiped
Labels on physical volume "/dev/sde1" successfully wiped
# pvs
#
-> 구성된 정보가 없다.
③ PV 다시 생성
# pvcreate /dev/sd[cde]1 (# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1)
Writing physical volume data to disk "/dev/sdc1"
Physical volume "/dev/sdc1" successfully created
Writing physical volume data to disk "/dev/sdd1"
Physical volume "/dev/sdd1" successfully created
Writing physical volume data to disk "/dev/sde1"
Physical volume "/dev/sde1" successfully created
[참고] PV 생성시 PV 개수가 많은 경우의 예
# pvcreate /dev/sd[abcde][12]
or
# pvcreate /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 .....
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)(2) 물리적인 볼륨 그룹생성(VG: Volume Group)
물리적인 볼륨을 생성하였으면 각각의 물리적인 볼륨을 하나의 그룹으로 생성해 준다.
(명령어 형식)
■ VG 생성
# vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1
# vgcreate vg1 /dev/sd[cde]1
■ VG 삭제
# vgremove vg1
# vgremove /dev/vg1
■ VG에 디스크 추가/제거
# vgextend vg1 /dev/sdf1
# vgreduce vg1 /dev/sdf1
■ VG 이름 변경
# vgrename /dev/vg1 /dev/vg1_backup
# vgrename vg1 vg1_backup
■ VG 정보 확인
# vgs
# vgscan
# vgdisplay (# vgdisplay vg1)
[EX] VG 생성 및 삭제 실습
① VG(EX: vg1) 생성 및 확인
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 a-- 1016.00M 1016.00M
/dev/sdd1 lvm2 a-- 1016.00M 1016.00M
/dev/sde1 lvm2 a-- 1016.00M 1016.00M
# vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1 (# vgcreate vg1 /dev/sd[cde]1)
Volume group "vg1" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M
# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 0 0 wz--n- 2.98G 2.98G
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
# vgdisplay (# vgdisplay vg1)
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 2.98 GB
PE Size 4.00 MB
Total PE 762 /* 762 X 4M = 2.98GB */
Alloc PE / Size 0 / 0
Free PE / Size 762 / 2.98 GB
VG UUID y0kBYP-Txeh-a2J0-WjgK-EN3f-0027-MEEhU7
② 생성된 VG(EX: vg1) 삭제 및 확인
# vgremove vg1 (# vgremove /dev/vg1)
Volume group "vg1" successfully removed
# vgs
No volume groups found
-> 구성된 정보가 없다.
③ VG(EX: vg1) 다시 생성
# vgcreate vg1 /dev/sd[cde]1
Volume group "vg1" successfully created
# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 0 0 wz--n- 2.98G 2.98G
■ 현재 디스크 구성
/dev/sdc1 - PV ------+
/dev/sdd1 - PV +-----> vg1
/dev/sde1 - PV ------+
/dev/sdf1 - ?
④ 새로운 PV(EX: /dev/sdf1) 생성후 VG(EX: vg1)에 추가 및 확인
# fdisk -l | grep LVM
/dev/sdc1 1 130 1044193+ 8e Linux LVM
/dev/sdd1 1 130 1044193+ 8e Linux LVM
/dev/sde1 1 130 1044193+ 8e Linux LVM
/dev/sdf1 1 130 1044193+ 8e Linux LVM
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg1 lvm2 a-- 1016.00M 1016.00M
/dev/sdd1 vg1 lvm2 a-- 1016.00M 1016.00M
/dev/sde1 vg1 lvm2 a-- 1016.00M 1016.00M
# pvcreate /dev/sdf1
Writing physical volume data to disk "/dev/sdf1"
Physical volume "/dev/sdf1" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdf1 lvm2 -- 1019.72M 1019.72M
# vgextend vg1 /dev/sdf1
Volume group "vg1" successfully extended
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdf1 vg1 lvm2 a- 1016.00M 1016.00M
# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 3.97 GB
PE Size 4.00 MB
Total PE 1016
Alloc PE / Size 0 / 0
Free PE / Size 1016 / 3.97 GB
VG UUID NHG3Mo-boPO-5z8j-XBYb-K5zJ-vtuy-6wnejz
⑤ VG(EX: vg1)에서 PV(EX: /dev/sdf1) 삭제 및 확인
# vgreduce vg1 /dev/sdf1
Removed "/dev/sdf1" from volume group "vg1"
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M
/dev/sdf1 lvm2 -- 1019.72M 1019.72M
⑥ VG 이름 변경 및 확인
# vgrename vg1 vg2
Volume group "vg1" successfully renamed to "vg2"
# vgs
VG #PV #LV #SN Attr VSize VFree
vg2 3 0 0 wz--n- 2.98G 2.98G
# vgrename /dev/vg2 /dev/vg1
Volume group "vg2" successfully renamed to "vg1"
# vgs
Volume group "vg2" successfully renamed to "vg1"
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)(3) 논리 볼륨 생성(LV: Logical Volume)
논리 볼륨은 LVM에서 생성하는 파티션이므로 단일 파티션 또는 다중 파티션으로 나눌 수 있는데, 이때 논리 볼륨을 생성하는 방법은 용량 단위 또는 PE수를 통해 생성해 줄 수 있다.
(명령어 형식)
■ LV 생성
# lvcreate -L 10G vg1 /* LV 이름 자동 생성 : lvol#(용량 10G) */
# lvcreate -L 1500M -n lv1 vg1
# lvcreate -L 1500 -n lv1 vg1 /* 용량 단위가 없으면 MB */
# lvcreate -l 60%VG -n lv1 vg1
# lvcreate -l 100%FREE -n lv1 vg1
■ LV 삭제
# lvremove /dev/vg1/lv1
■ LV 이름 변경
# lvrename /dev/vg1/lv1 /dev/vg1/lv2
# lvrename vg1 lv1 lv2 /* vg1(lv1 -> lv2) */
■ LV 공간 늘리기/줄이기
# lvextend -L 12G /dev/vg1/lv1 /* lv1 용량을 12G로 맞춤 */
# lvextend -L +1G /dev/vg1/lv1 /* lv1 용량을 1G 만큼 추가 */
# lvextend -l +100%FREE /dev/vg1/lv1
# lvreduce -L -3G /dev/vg1/lv1
# lvreduce -l -3 /dev/vg1/lv1 /* lv1 용량을 3 LE(Logical Extend)만큼 감소 */
■ LV 정보 확인
# lvs
# lvscan
# lvdisplay
[EX] LV 생성 및 삭제
① LV 생성 및 확인
# vgdisplay (# vgs)
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 2.98 GB
PE Size 4.00 MB
Total PE 762
Alloc PE / Size 0 / 0
Free PE / Size 762 / 2.98 GB
VG UUID NHG3Mo-boPO-5z8j-XBYb-K5zJ-vtuy-6wnejz
# lvcreate -L 1G -n lv1 vg1
Logical volume "lv1" created
# lvcreate -L 1G -n lv2 vg1
Logical volume "lv2" created
# lvcreate -l 100%FREE -n lv3 vg1
Logical volume "lv3" created
[참고] -L 옵션으로 잘못 사용하는 경우
# lvcreate -L 100%FREE -n lv3 vg3
Invalid argument 100%FREE
Error during parsing of command line.
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.00G
lv2 vg1 -wi-a- 1.00G
lv3 vg1 -wi-a- 1000.00M
# lvscan
ACTIVE '/dev/vg1/lv1' [1.00 GB] inherit
ACTIVE '/dev/vg1/lv2' [1.00 GB] inherit
ACTIVE '/dev/vg1/lv3' [1000.00 MB] inherit
# lvdisplay /dev/vg1/lv3 (# lvdisplay)
--- Logical volume ---
LV Name /dev/vg1/lv3
VG Name vg1
LV UUID CgQVDH-bxfR-qI21-RHd4-WJYz-CTsx-YVWr27
LV Write Access read/write
LV Status available
# open 0
LV Size 1000.00 MB
Current LE 250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
② LV 삭제 및 확인
# lvremove /dev/vg1/lv3
Do you really want to remove active logical volume lv3? [y/n]: y
Logical volume "lv3" successfully removed
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.00G
lv2 vg1 -wi-a- 1.00G
-> lv3 삭제
③ LV 이름 변경
# lvrename /dev/vg1/lv2 /dev/vg1/lv2_backup
Renamed "lv2" to "lv2_backup" in volume group "vg1"
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.00G
lv2_backup vg1 -wi-a- 1.00G
# lvrename vg1 lv2_backup lv2 (# lvrename --help)
Renamed "lv2_backup" to "lv2" in volume group "vg1"
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.00G
lv2 vg1 -wi-a- 1.00G
④ LV 용량 늘리기 및 확인
# vgs (# vgdisplay | grep PE)
VG #PV #LV #SN Attr VSize VFree
vg1 3 2 0 wz--n- 2.98G 1000.00M
-> vg1 남은 공간 확인
# lvextend -L +500M /dev/vg1/lv1 (# lvextend -L 1500M /dev/vg1/lv1)
Extending logical volume lv1 to 1.49 GB
Logical volume lv1 successfully resized
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.49G
lv2 vg1 -wi-a- 1.00G
⑤ LV 크기 줄이기
(주의) LV 크기를 줄이기 위해서는 백업 과정을 거친다.
# lvreduce -L -500M /dev/vg1/lv2
WARNING: Reducing active logical volume to 524.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv2? [y/n]: y
Reducing logical volume lv2 to 524.00 MB
Logical volume lv2 successfully resized
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.49G
lv2 vg1 -wi-a- 524.00M
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)(4) 논리 볼륨 ext3으로 파일시스템 생성
논리 볼륨에 대해 ext3파일 시스템을 갖도록 mkfs.ext3로 포맷한다.
[EX] 파일시스템 생성 실습
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi-a- 1.49G
lv2 vg1 -wi-a- 524.00M
# mkfs.ext3 /dev/vg1/lv1 (# mkfs -t ext3 /dev/vg1/lv1)
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
195072 inodes, 390144 blocks
19507 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=402653184
12 block groups
32768 blocks per group, 32768 fragments per group
16256 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mkfs -t ext3 /dev/vg1/lv2
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
67200 inodes, 134144 blocks
6707 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=138412032
5 block groups
32768 blocks per group, 32768 fragments per group
13440 inodes per group
Superblock backups stored on blocks:
32768, 98304
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
■ LVM 작업 순서
System Partition ID 변경(fdisk CMD)
-> PV 생성(pvcreate CMD)
-> VG 생성(vgcreate CMD)
-> LV 생성(lvcreate CMD)
-> F/S 생성(mkfs CMD)
-> 마운트(mount CMD, /etc/fstab)(5) 마운트 작업
생성된 LV를 마운트 한다.
[EX] 마운트 실습
# mkdir /lv1 /lv2
# mount /dev/vg1/lv1 /lv1
# mount /dev/vg1/lv2 /lv2
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 17G 3.4G 12G 22% /
/dev/sda8 487M 11M 451M 3% /data1
/dev/sda7 487M 11M 451M 3% /data2
/dev/sda6 487M 11M 451M 3% /data3
/dev/sda5 487M 11M 451M 3% /data4
/dev/sda3 487M 11M 451M 3% /home
tmpfs 506M 0 506M 0% /dev/shm
/dev/sdb1 1004M 49M 904M 6% /testmount
/dev/mapper/vg1-lv1 1.5G 35M 1.4G 3% /lv1
/dev/mapper/vg1-lv2 516M 17M 474M 4% /lv2
# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/data1 /data1 ext3 defaults 1 2
LABEL=/data2 /data2 ext3 defaults 1 2
LABEL=/data3 /data3 ext3 defaults 1 2
LABEL=/data4 /data4 ext3 defaults 1 2
LABEL=/home /home ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
#
# (1) DISK Configuration
#
#/dev/sdb1 /testmount ext3 defaults 1 3
#LABEL=/testmount /testmount ext3 defaults 1 3
#
# (2) LVM Configuration
#
/dev/mapper/vg1-lv1 /lv1 ext3 defaults 1 3
/dev/vg1/lv2 /lv2 ext3 defaults 1 3
# umount /lv1
# umount /lv2
# mount /lv1
# mount /lv2
# mount
/dev/sda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
..... (중략) .....
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/mapper/vg1-lv1 on /lv1 type ext3 (rw)
/dev/mapper/vg1-lv2 on /lv2 type ext3 (rw)
# df –h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 17G 3.4G 12G 22% /
/dev/sda8 487M 11M 451M 3% /data1
..... (중략) .....
/dev/mapper/vg1-lv1 1.5G 35M 1.4G 3% /lv1
/dev/mapper/vg1-lv2 516M 17M 474M 4% /lv2
■ 물리적인 파티션 작업과 LVM 작업 비교
[이전 작업 방식]
[ LVM 작업 방식]
(ㄱ) 파티션 작업
# fdisk /dev/sdc
(ㄴ) 파일시스템 작업
# mkfs.ext3 /dev/sdc1
(ㄷ) 마운트 작업
# vi /etc/fstab
# mkdir /oracle
# mount /oracle
(ㄱ) 파티션 작업(Partition ID (83 -> 8e))
# fdisk /dev/sdc
# pvcreate /dev/sdc1
# vgcreate vg1 /dev/sdc1
# lvcreate -l 100%FREE -n lv1 vg1
(ㄴ) 파일시스템 작업
# mkfs.ext3 /dev/vg1/lv1
(ㄷ) 마운트 작업
# vi /etc/fstab
# mkdir /oracle
# mount /oracle
☆ LVM 관리
(1) LVM 설정 방법 종류
(GUI) # system-config-lvm
(TUI) pvcreate CMD, vgcreate CMD, lvcreate CMD
[EX] LVM 관리를 위한 관리 툴 및 명령어 확인
① (GUI) system-config-lvm 툴
(필요하면 명령어 수행)
# yum install system-config-lvm
(2) 정보를 자세히 보는 방법
(ㄱ) -v, -vv, -vvv, -vvvv 옵션 사용
# lvcreate -L 50MB new_vg
# lvcreate -v -L 50MB new_vg
# lvcreate -vvvv -L 50MB new_vg
(ㄴ) command --help
# pvcreate --help
# vgcreate --help
# lvcreate --help
(ㄷ) manual page
# man pvcreate
# man vgcreate
# man lvcreate