3. LVM(논리 볼륨 관리자) 설정관리 - 1. LVM Disk 관리
[1]. 디스크 종류
- IDE
- SATA
- SCSI(SAS)
- SSD(메모리)
[2]. 디스크 디바이스 이름
- 디스크 타입 : IDE
Disk0 : /dev/hda
Disk1 : /dev/hdb
Disk2 : /dev/hdc
Disk3 : /dev/hdd
- 디스크 타입 : SCSI, SATA, SSD
Disk0 : /dev/sda
Disk1 : /dev/sdb
Disk2 : /dev/sdc
Disk3 : /dev/sdd
[3]. 파티션 구성
- Primary Partition 주 영역 파티션
최대 4개까지(확장 파티션 포함) 만들 수 있으며 기본 파티션으로 더 이상 분할 할수 없는 파티션
- Extend Partition 확장 영역 파티션
최대 1개까지 만들 수 있고 여러 개의 파티션이 필요할 때 만드는 파티션으로 직접 저장공간은 없지만 그 안에
논리 파티션으로 저장한다, 확장 파티션이 삭제 되면 그 안에 논리 파티션 모두가 삭제됨
- Ligical Partition 논리 영역 파티션
확장 파티션 안에 만들 수 있는 파티션으로 15개를 넘지 않는 범위에서 자유롭게 만들어서 사용할 수 있습니다.
[4]. 파티션 작업
- 2TB 이상의 하드디스크 : parted
[root@localhost ~] parted /dev/sd[Device]
[root@localhost ~] parted>print
[root@localhost ~] parted>mklabel gpt # 2TB 이상의 스토리지를 사용할 때는 MBR 방식 대신 GPT 방식을 사용해주어야 합니다
[root@localhost ~] parted>unit GB # 최소 용량단위를 GB 또는 TB 로 변경 (기본값은 MB)
[root@localhost ~] parted>mkpart primary 0 50 # 0 ~ 50 GB [최대용량] 또는 ( mkpart primary 0 100% )
[root@localhost ~] parted>set 1 lvm on # parted에서 파티션 생성 후 종료하기 전에 다음의 명령어로 lvm 설정을 켜준다
- 2TB 이하의 하드디스크 : fdisk
[root@localhost ~] fdisk /dev/sd[Device]
[root@localhost ~] fdisk>n # (new partition)
[root@localhost ~] fdisk>p # (primary)
[root@localhost ~] fdisk>1 # (partition number)
[root@localhost ~] fdisk>t # (new type)
[root@localhost ~] fdisk>8e # (linux LVM)
[root@localhost ~] fdisk>w # (write)
[5]. LVM 관리 명령어
- PV(Physical Volume) 관련 명령어
1. 설명 : 물리적 볼륨(Physical Volume)을 생성하는 명령어이다. fdisk 또는 parted를 이용하여 파티션을 분할하고 LVM 속성으로 지정한 뒤에 해당 파티션을 PV로 만들 때 사용하는 명령이다.
2. 사용법 : pvcreate 디바이스명
3. option
4. 사용예
[root@localhost ~] pvcreate /dev/hdb1
[root@localhost ~] pvcreate /dev/sda1
[root@localhost ~] pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 # PV 생성시 PV 개수가 많은 경우 순서대로 나열해서생성
[root@localhost ~] pvcreate /dev/sda /dev/sdb /dev/sdc # PV 생성시 파티션 분할 없이 디스크 자체로도 생성 가능
[root@localhost ~] pvcreate /dev/sd[abc]1 # PV 생성시 PV 개수가 많은 경우 []안에 드라이브 문자/파티션 번호 로 일괄생성
[root@localhost ~] pvcreate /dev/sd[abcde][12] # PV 생성시 PV 개수가 많은 경우 []안에 드라이브 문자/파티션 번호 로 일괄생성
[root@localhost ~] pvcreate /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 ..... # PV 생성시 PV 개수가 많은 경우 순서대로 나열해서 일괄 생성
1. 설명 : 물리적 볼륨(Physical Volume)을 삭제하는 명령어이다.
2. 사용법 : pvremove 디바이스명
3. option
4. 사용예
[root@localhost ~] pvremove /dev/sda1 # PV를 삭제 한다.
[root@localhost ~] pvremove /dev/sda1 /dev/sdb1 /dev/sdc1 # 나열된 PV를 일괄 삭제 한다
[root@localhost ~] pvremove /dev/sd[abc]1 # []안에 표시된 드라이브 문자와 파티션 번호를 일괄 삭제한다
1. 설명 : 물리 볼륨의 속성을 바꾼다
2. 사용법 : pvchange 옵션 pv디바이스
3. option
- a : 물리 볼륨 경로가 명령 행에 지정되지 않은 경우 모든 물리 볼륨을 검색하고 사용
- u : 물리 볼륨에 새로운 uuid를 부여
- x : 물리 볼륨의 물리 볼륨 영역을 활성화하거나 비활성화 한다
4. 사용예
[root@localhost ~] pvchange -x n /dev/sdc # 할당해재(Locking) => 물리 볼륨의 여유 공간에 있는 물리 익스텐트의 할당을 허용 하지 않음 (디스크 오류가 있을 경우나 물리 볼륨을 삭제할 경우 이러한 작업이 필요)
[root@localhost ~] pvchange -x y /dev/sdc # 사용가능
1. 설명 : 현재 할당된 디스크 공간에 맞게 파티션 크기를 조정하려면 Physical Volume Resize (pvresize) 명령 다음에 PV Name을 입력합니다.
2. 사용법 : pvresize 옵션 pv디바이스
3. option
4. 사용예
[root@localhost ~] pvresize /dev/sdb1
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
1. 설명 : 물리볼륨의 메타데이터를 체크
2. 사용법 : pvck 옵션 pv디바이스
3. option
4. 사용예
[root@localhost ~] pvck /dev/sdc
Found label on /dev/sdc, sector 1, type=LVM2 001
Found text metadata area: offset=4096, size=1044480
[root@localhost ~] pvs
[root@localhost ~] pvscan
[root@localhost ~] pvdisplay
[root@localhost ~] pvdisplay /dev/sdc1
[root@localhost ~] lvmdiskscan
- pvs
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_root lvm2 a-- <149.51g 8.00m
/dev/sdb1 vg_data lvm2 a-- <5.00g 0
[root@localhost ~]#
- pvscan
[root@localhost ~]# pvscan
PV /dev/sda2 VG vg_root lvm2 [<149.51 GiB / 8.00 MiB free]
PV /dev/sdb1 VG vg_data lvm2 [<5.00 GiB / 0 free]
Total: 2 [154.50 GiB] / in use: 2 [154.50 GiB] / in no VG: 0 [0 ]
[root@localhost ~]#
- pvdisplay
[root@localhost ~]# pvdisplay
PV Name /dev/sda2
VG Name vg_root
PV Size <149.51 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 38274
Free PE 2
Allocated PE 38272
PV UUID 1nArKD-lija-iyAB-LtmS-gwGH-fhUP-KbQlCl
PV Name /dev/sdb1
VG Name vg_data
PV Size <5.00 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID FfGKKl-M8R1-FOcG-KGTB-mTzt-b4Gc-d0a2z1
[root@localhost ~]#
- lvmdiskscan
[root@localhost ~]# lvmdiskscan
/dev/loop0 [ 3.78 GiB]
/dev/vg_root/root [ 15.00 GiB]
/dev/sda1 [ 500.00 MiB]
/dev/vg_root/swap [ 4.00 GiB]
/dev/sda2 [ 149.51 GiB] LVM physical volume
/dev/vg_root/usr [ 50.00 GiB]
/dev/vg_root/var [ 10.00 GiB]
/dev/vg_root/home [ 70.50 GiB]
/dev/vg_data/data [ <5.00 GiB]
/dev/sdb1 [ <5.00 GiB] LVM physical volume
6 disks
2 partitions
0 LVM physical volume whole disks
2 LVM physical volumes
[root@localhost ~]#
- VG(Volume Group) 관련 명령어
1. 설명 : 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
2. 사용법 : vgcreate 볼륨그룹명 디바이스명 디바이스명
3. 사용예
[root@localhost ~] vgcreate vg_data /dev/sdc1 /dev/sdd1 /dev/sde1 # vg_data이라는 볼륨그룹을 생성하고 /dev/sdc1 /dev/sdd1 /dev/sde1 PV를 포함시킨다
[root@localhost ~] vgcreate vg_data /dev/sd[cde]1 # vg_data이라는 볼륨그룹을 생성하고 []안에 드라이프 문자와 파티션 번호를 일괄 포함 시킨다
1. 설명 : 볼륨그룹을 삭제하는 명령어
2. 사용법 : vgremove 볼륨그룹명
3. 사용예
[root@localhost ~] vgremove vg_data
[root@localhost ~] vgremove /dev/vg_data
1. 설명 : 볼륨그룹에 디스크를 추가 합니다.
2. 사용법 : vgextend 볼륨그룹명 디바이스명
3. 사용예
[root@localhost ~] vgextend vg_data /dev/sdc1
1. 설명 : 볼륨그룹에 디스크를 제거 합니다.
2. 사용법 : vgreduce 볼륨그룹명 디바이스명
3. 사용예
[root@localhost ~] vgreduce vg_data /dev/sdc1
1. 설명 : 볼륨그룹에 디스크를 추가 합니다.
2. 사용법 : vgrename 변경전 볼륨그룹명 변경후 볼륨그룹명
3. option
4. 사용예
[root@localhost ~] vgrename /dev/vg_data /dev/vg_backup
[root@localhost ~] vgrename vg_data vg_backup
1. 설명 : 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경 할 수 있다.
2. 사용법 : vgchange option 볼륨그룹명
3. option
- A : 자동으로 백업 진행
- a y : 볼륨그룹의 활성(사용)
- a n : 볼륨그룹의 비활성(사용 중지)
- l 갯수 : 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수 지정
- c : 클러스터 잠금 활성화, 볼륨 그룹의 클러스터 잠금이 설정되면 볼륨 그룹이 클러스터하거나 다른 노드에 표시되지 않음
- u : 볼륨 그룹에 새로운 uuid를 부여
- p : 볼륨 그룹에 속할 수있는 물리적 볼륨의 최대 수를 변경
- s : 볼륨 그룹의 물리 볼륨 PE Size를 변경
- x : 볼륨 그룹의 확장 / 축소, 물리 볼륨의 활성화 / 비활성를 설정
4. 사용예
[root@localhost ~] vgchange -a y vg_data # vg_data이라는 볼륨그룹을 활성화시킨다.
[root@localhost ~] vgchange -a n vg_data # vg_data이라는 볼륨그룹을 비활성화시킨다.
[root@localhost ~] vgchange -l 100 vg_data # vg_data이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
1. 설명 : 볼륨 그룹의 메타데이터를 체크
- vgconvert (VG의 메타데이터 형식을 변환)
1. 설명 : 볼륨 그룹의 메타데이터 형식을 변환
1. 설명 : 볼륨그룹의 속설을 출력
1. 설명 : 시스템이 볼륨 그룹을 알 수 없도록 만든다(활성/비활성/제거/이동)
1. 설명 : 시스템이 볼륨 그룹을 알 수 있도록 만든다(활성/비활성/제거/이동)
- vgimportclone (중복된 이름의 볼륨그룹을 바꾸고 가져온다)
1. 설명 : 중복된 이름의 볼륨 그룹을 바꾸고 가져온다
- vgmknodes (VG의 디렉토리와 논리 볼륨의 특정파일을 다시 생성)
1. 설명 : 볼륨 그룹의 디엑토리와 논리 볼륨의 특정파일을 다시 생성한다.
1. 설명 : 두개의 볼륨 그룹을 합친다
1. 설명 : 전체 물리 볼륨을 이동하여 하나의 볼륨그룹에서 다른 볼륨그룹으로 논리 볼륨을 이동하여 볼륨그룹을 2개로 분할
[root@localhost ~] vgs
[root@localhost ~] vgscan
[root@localhost ~] vgdisplay
[root@localhost ~] vgdisplay vg_data
- vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_data 1 1 0 wz--n- <5.00g 0
vg_root 1 5 0 wz--n- <149.51g 8.00m
[root@localhost ~]#
- vgscan
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group "vg_root" using metadata type lvm2
Found volume group "vg_data" using metadata type lvm2
[root@localhost ~]#
- vgdisplay
[root@localhost ~]# vgdisplay
VG Name vg_root
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 16
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 5
Open LV 5
Max PV 0
Cur PV 1
Act PV 1
VG Size <149.51 GiB
PE Size 4.00 MiB
Total PE 38274
Alloc PE / Size 38272 / 149.50 GiB
Free PE / Size 2 / 8.00 MiB
VG UUID 4VQFwC-vNTs-Im3r-ecj1-1ujj-KoVw-PuexWN
VG Name vg_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <5.00 GiB
PE Size 4.00 MiB
Total PE 1279
Alloc PE / Size 1279 / <5.00 GiB
Free PE / Size 0 / 0
VG UUID 3kZS0j-QYhW-vZwE-RT38-dVLU-O4SW-2blZ6n
[root@localhost ~]#
- LV(Logical Volume) 관련 명령어
1. 설명 : 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
2. 사용법 : lvcreate 옵션 LV이름 VG이름
3. option
- L : LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt es) 단위 사용
- l : LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB 이다.
- I : 스트라이프 사이즈 -I4는 PE를 4KB로 쪼개서 PV들 에게 저장한다는 것 옵션에는 2^n (0 <= n <= 7), 즉 1, 2, 4, 8, 16, 32, 64, 128 의 숫자를 쓸 수 있다.)
- i : 스트라이프 개수 지정
- m : 미러 개수 지정
- R : regionsize Size
- n : LV의 이름을 지정하는 옵션이다.
4. 사용 예시
- Linear Mapping LV(선형)
[root@localhost ~] lvcreate -L 10G vg_data
[root@localhost ~] lvcreate -L 1500M -n lv_data vg_data
[root@localhost ~] lvcreate -L 1500 -n lv_data vg_data
[root@localhost ~] lvcreate -l 60%VG -n lv_data vg_data
[root@localhost ~] lvcreate -l 100%FREE -n lv_data vg_data
- Striped Mapping LV(스트라이프)
[root@localhost ~] lvcreate -I 4 -L 150G -i2 -n lv_striped vg_data # vg_data볼륨 안에 lv_striped이름으로 2개의 PV로 스트라이프 설정 크기는 150G
[root@localhost ~] lvcreate -l 100 -i2 -n lv_striped vg_data /dev/sda1:0-49 /dev/sdb1:50-99 # vg_data볼륨 안에 lv_striped이름으로 2개의 PV로 스트라이프 설정 PE사이즈는 100(스트라이프1:/dev/sda1(0-49까지), 스트라이프2:/dev/sdb1(50-99까지))
- Mirrored Mapping LV(미러)
[root@localhost ~] lvcreate -L 50G -m1 -n lv_mirror vg_data # 50GB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성
[root@localhost ~] lvcreate -L 2T -R 2 -m1 -n lv_mirror vg_data # 2TB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(2MB의 영역 크기로)
[root@localhost ~] lvcreate -L 12MB -m1 --mirrorlog core -n lv_mirror vg_data # 12MB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(core이름으로 미러 로그 생성)
[root@localhost ~] lvcreate -L 12MB -m1 --mirrorlog mirrored -n lv_mirror vg_data # 12MB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(mirrored이름으로 미러 로그 생성)
[root@localhost ~] lvcreate -L 500M -m1 -n lv_mirror -alloc anywhere vg_data # 500MB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(미러 log는 미러 볼륨과 동일한 위치에 생성)
[root@localhost ~] lvcreate -L 500M -m1 -n lv_mirror vg_data /dev/sda1 /dev/sdb1 /dev/sdc1 # 500MB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(미러데이터1:/dev/sda1, 미러데이터2:/dev/sdb1, 미러로그:/dev/sdc1)
[root@localhost ~] lvcreate -L 500M -m1 -n lv_mirror vg_data /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0 # 500MB의 1개의 미러 볼륨을 vg_data볼륨 안에 lv_mirror이름으로 생성(미러데이터1:/dev/sda1(0-499까지), 미러데이터2:/dev/sdb1(0-499까지), 미러로그:/dev/sdc1(0부터 시작))
1. 설명 : Logical Volume 을 삭제 한다
2. 사용법 : lvremove /dev/VG이름/LV이름
3. option
4. 사용예
[root@localhost ~] lvremove /dev/vg_data/lv_data
1. 설명 : Logical Volume이름을 변경 한다
2. 사용법 : lvrename /dev/VG이름/변경전 LV이름 /dev/VG이름/변경후 LV이름
3. option
4. 사용예
[root@localhost ~] lvrename /dev/vg_data/lv_data /dev/vg_data/lv_user # lv_data을 lv_user로 변경
[root@localhost ~] lvrename vg_data lv_data lv_user # lv_data을 lv_user로 변경
1. 설명 : Logical Volume 공간을 확장한다
2. 사용법 : lvextend 옵션 LV이름
3. option
4. 사용예
[root@localhost ~] lvextend -L 12G /dev/vg_data/lv_data
[root@localhost ~] lvextend -L +1G /dev/vg_data/lv_data
[root@localhost ~] lvextend -l +100%FREE /dev/vg_data/lv_data
1. 설명 : Logical Volume 공간을 축소 한다
2. 사용법 : lvreduce 옵션 LV이름
3. option
4. 사용예
[root@localhost ~] lvreduce -L -3G /dev/lv_data/lv_data # lv_data 용량을 3GB 만큼 감소
[root@localhost ~] lvreduce -l -3 /dev/lv_data/lv_data # lv_data 용량을 3 LE(Logical Extend)만큼 감소
1. 설명 : LV 볼륨의 속성을 변경
2. 사용법 : lvchange option LV디바이스
3. option
- a y : LV볼륨의 활성(사용)
- a n : LV볼륨의 비활성(사용 중지)
4. 사용예
[root@localhost ~] lvchange -a y /dev/vg_data/data # data이라는 lv를 활성화시킨다.
[root@localhost ~] lvchange -a n /dev/vg_data/data # data이라는 lv를 비활성화시킨다.
1. 사용예
[root@localhost ~] lvs
[root@localhost ~] lvscan
[root@localhost ~] lvdisplay
[root@localhost ~] lvdisplay /dev/vg_data/data
- lvs
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data vg_data -wi-ao
home vg_root -wi-ao
root vg_root -wi-ao
swap vg_root -wi-ao
usr vg_root -wi-ao
var vg_root -wi-ao
- lvscan
[root@localhost ~]# lvscan
ACTIVE '/dev/vg_root/root' [15.00 GiB] inherit
ACTIVE '/dev/vg_root/swap' [4.00 GiB ] inherit
ACTIVE '/dev/vg_root/usr' [50.00 GiB] inherit
ACTIVE '/dev/vg_root/var' [10.00 GiB] inherit
ACTIVE '/dev/vg_root/home' [70.50 GiB] inherit
ACTIVE '/dev/vg_data/data' [<5.00 GiB] inherit
- lvdisplay
[root@localhost ~]# lvdisplay /dev/vg_data/data
--- Logical volume ---
LV Path /dev/vg_data/data
LV Name data
VG Name vg_data
LV UUID euEbVA-L2ck-pZh9-zWUc-IBTz-i4BX-LBM9ND
LV Write Access read/write
LV Creation host, time loaclhost, 2021-03-09 00:38:28 +0900
LV Status available
# open 1
LV Size <5.00 GiB
Current LE 1279
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5