LVM (Logical Volume Manager)
- Disk 파티션을 효율적으로 관리하고 사용할 수 있는 방식
- VLM2(Divice Mapper)를 이용
PV (Physical Volume, 물리 볼륨)
/dev/sdb1, /dev/sdb2 같은 실제 하드디스크의 파티션을 의미
VG (Volume Group, 볼륨 그룹)
여러개의 PV를 그룹으로 묶은 것을 뜻한다.
예를 들어 /dev/sdb1, /dev/sdb2가 GRP1이라는 그룹을 만들때, GRP1을 VG라고 함
LV (Logical Volume, 논리 볼륨)
VG를 다시 적절한 크기의 파티션으로 나눈 때 각 파티션을 LV라고 함
PE (Physical Extent)
PV가 가진 일정한 블록을 의미
LE (Logical Extent)
LV가 가진 일정한 블록을 의미
LVM 명령어
(1) vgscan
1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일을 생성한다.
fdisk를 이용하여 파티션을 속성을 LVM으로 지정한 후에 이 명령을 사용한다.
2) 사용법
vgscan
(2) pvcreate
1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을 분할하고 LVM 속성으로 지정한 뒤에
해당 파티션을 PV 로 만들 때 사용하는 명령이다.
2) 사용법
pvcreate 디바이스명
3) 사용예
pvcreate /dev/hdb1
(3) vgcreate
1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
2) 사용법
vgcreate 볼륨그룹명 디바이스명 디바이스명
3) 사용예
vgcreate lvm /dev/hda7 /dev/hdb1
=> lvm 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
(4) vgdisplay
1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
2) 사용법
vgdisplay [option] [볼륨그룹명]
3) option
-v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 gical Volume과 Physical Volume도 같이 보여준다.
4) 사용예
ㄱ. [root@xxx root]# vgdisplay
=> Volume Group의 내용을 보여준다.
ㄴ. [root@xxx root]# vgdisplay -v lvm
=> lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
(5) lvcreate
1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
2) 사용법
lvcreate 옵션 볼륨그룹명
3) option
-L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabytes) 단위를 붙여 지정가능하다.
-l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB 이다.
-n: LV의 이름을 지정하는 옵션이다.
4) 사용예
ㄱ. [root@xxx root]# lvcreate -L 2000M -n backup lvm
=> lvm이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
ㄴ. [root@xxx root]# lvcreate -l 250 -n data lvm
=> lvm이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
(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@xxx root]# lvdisplay -v /dev/lvm/data
=> /dev/lvm/data라는 LV의 정보를 자세히 보여준다.
(8) vgextend
1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
2) 사용법
vgextend 볼륨그룹명 새PV명
3) 사용예
[root@xxx root]# vgextend lvm /dev/hdc1
=> lvm이라는 볼륨그룹에 /dev/hdc1을 추가한다.
(9) vgreduce
1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다.
2) 사용법
vgreduce 볼륨그룹명 PV명
3) 사용예
[root@xxx root]# vgreduce lvm /dev/hdc1
=> lvm이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
(10) lvextend
1) 설명: Logical Volume의 용량을 확장하는 명령이다.
2) 사용법
lvextend 옵션 [볼륨그룹명] LV명
3) option
-l +사이즈: 지정한 PE수만큼 용량을 늘린다.
-L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes 단위이다.
4) 사용예
[root@xxx root]# lvextend -L +200M /dev/lvm/data
=> 기존의 용량에 추가로 200MB를 할당한다.
(11) lvreduce
1) 설명: Logical Volume의 용량을 줄이는 명령이다.
2) 사용법
lvreduce 옵션 [볼륨그룹병] LV명
3) option
-l -사이즈: 지정한 PE수만큼 용량을 줄인다.
-L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes 이다.
4) 사용예
[root@xxx root]# lvreduce -L -500 /dev/lvm/data
=> /dev/lvm/data의 용량을 500MB 줄인다.
(12) vgchange
1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경 할 수 있다.
2) 사용법
vgchange 옵션 볼륨그룹명
3) option
-a y|n : 볼륨그룹의 사용여부를 지정한다.
-l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
4) 사용예
ㄱ. [root@xxx root]# vgchange -a y lvm
=> lvm이라는 볼륨그룹을 활성화시킨다.
ㄴ. [root@xxx root]# vgchange -a n lvm
=> lvm이라는 볼륨그룹을 비활성화시킨다.
ㄷ. [root@xxx root]# vgchange -l 100 lvm
=> lvm이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
(13) vgremove
1) 설명: 볼륨그룹을 제거하는 명령이다.
2) 사용법
vgremove 볼륨그룹명
3) 사용예
[root@xxx root]# vgremove lvm
=> lvm이라는 볼륨그룹을 삭제한다.
LVM 생성 과정
Linear LVM
1. 스냅샷(초기상태), 1GB Disk 2EA 추가, reboot
#fdisk -l //추가한 Disk 확인
2. LVM (LVM2) 패키지 설치
#yum -y install lvm2 //LVM 패키지 설치
3. fdisk 이용 하티션 생성 (/dev/sdb1 /dev/sdc1)
"n" add a new partition //새로운 파티션
"p" primary partition //주파티션 선택
partition number1 //파티션 번호 1
first cylinder //처음 실런터 부터
last cylinder //마지막 실린더 까지 모두 사용
t change a partition's system id //파티션 타입 지정
8e Linux LVM //LVM 선택
p print the partition's table //설정 내용 확인
w write table to disk and exit //저장 후 종료 확인
4. PV (Physical Volume) 생성
#pvcreate [파티션명]
#pvcreate /dev/sdb1 //물리 볼륨 생성
#pvcreate /dev/sdc1 //물리 볼륨 생성
#pvremove [파티션명] //물리 볼륨 제거
5. VG (Volume Group) 생성
#vgcreate [볼륨그룹명] [파티션] … [파티션]
#vgcreate PracticeVG /dev/sdb1 /dev/sdc1 //PracticeVG VG생성
#vgchange -a y PracticeVG //Active Yes
VG 제거
#vgchange -n PracticeVG //VG 중지
#vgremove PracticeVG //VG 제거
6. VG 구성 확인
#vgdisplay [VG명] //볼륨 그룹 확인
#vgdisplay //전체 볼륨 그룹 확인
VG Name PracticeVG // 볼륨 그룹 명 확인
VG Size 1.98 GiB // VG 크기
PE Size 4.00 MiB // PE 크기
Total PE 508 // 총 PE의 갯수
Alloc PE / Size 0 / 0 // 할당된 PE
Free PE / Size 508 / 1.98 GiB // 할당되지 않은 PE
7. VG(Volume Group)파티션 LV(Logical Volume)생성
#lvcreate --size [용량크기] --name [LV명] [VG명]
#lvcreate -L [크기] -n [LV명] [VG명]
#lvcreate --size 500M --name PracticeLV1 PracticeVG
#lvcreate --size 1.4G --name PracticeLV2 PracticeVG
#lvcreate --extents 100%FREE --name PracticeLV3 PracticeVG
#lvdisplay
8. 파일 시스템 생성 및 마운트
#mkfs -t ext4 /dev/PracticeVG/PracticeLV1
#mkfs -t ext4 /dev/PracticeVG/PracticeLV2
#mkfs -t ext4 /dev/PracticeVG/PracticeLV3
#mkdir /LV{1,2,3}
#mount /dev/PracticeVG/PracticeLV1 /LV1
#mount /dev/PracticeVG/PracticeLV1 /LV2
#mount /dev/PracticeVG/PracticeLV1 /LV3
9. fstab 수정
#blkid //LV UUID 확인
#vi /etc/fstab //수정 후 rebooting
#df -h //마운트 확인
LV (Logical Volume) 삭제 및 용량 추가
#umount /LV3
#lvchange -an /dev/PracticeVG/PracticeLV3 //LV 비활성
#lvremove /dev/PracticeVG/PracticeLV3 //LV 제거
#lvdisplay //LV 제거 확인
#lvextend --size +90M /dev/PracticeVG/PracticeLV2 //90메가 추가
#lvcreate --extents
(size는 크기, extents는 PE의 개수)
#lvcreate --extents 1 --name PracticeLV3 PracticeVG
//PE 개수를 이용하여 LV 생성
#mkfs -t ext4 /dev/PracticeVG/PracticeLV3
VG (Volume Group) 용량 추가 후 LV용량 추가
1G Disk 추가 및 fdisk, LVM 타입 선택
#vgdisplay //추가전 용량 확인
#pvcreate /dev/sdd1 //PV생성
#vgextend PracticeVG /dev/sdd1 //생성한 PV를 VG추가
#vgdisplay //추가 후 용량 확인
#vgdisplay
FREE PE / Size 254 / 1016.00 MiB
#lvextend --extents +254 /dev/PracticeVG/PracticeLV3
#lvdisplay
#mount /dev/PracticeVG/PracticeLV3
#df -h
#resize2fs /dev/PracticeVG/PracticeLV3
//파일시스템 크기 변경 적용
LV 용량 축소
#umount /LV1 //축소 시에는 umount 필수
#e2fsck -f /dev/PracticeVG/PracticeLV1
//축소 전 파일 시스템 점검
#resize2fs -f /dev/PracticeVG/PracticeLV1 377M
#lvreduce --size -100M /dev/PracticeVG/PracticeLV1
#lvdisplay
#lvextend --extents 100 /dev/PracticeVG/PracticeLV1
// practiceLV1 PE개수를 100로 지정
#lvextend --extents +25 /dev/PracticeVG/PracticeLV1
// practiceLV1 PE개수에서 25개를 추가
Stripe LV
1. 스냅샷 초기화
2. 1GB Disk 2EA 추가
3. 파티션 생성, LVM 파티션 생성
4. PV생성
5. VG생성
#vgcreate STRIPE_VG /dev/sdb1 /dev/sdc1
6. LV생성
-i Disk 수를 지정
#lvcreate -i 2 --extents 100%FREE --name STRIPE_LV STRIPE_VG
#lvcreate -i 2 --extents 508 --name STRIPE_LV STRIPE_VG
Mirror LV
1. 스냅샷 초기화
2. 1GB Disk 2EA 추가
3. 파티션 생성, LVM 파티션 생성
4. PV생성
5. VG 생성
#vgcreate Mirror_VG /dev/sdb1 /dev/sdc1 /dev/sdd1
6. LV생성
#lvcreate [크기] [-m 사본개수] [LV명] [VG명] [PV원본, PV사본, PV로그]
#lvcreate --extents 254 -m1 --name Mirror_LV Mirror_VG /dev/sdb1 /dev/sdc1 /dev/sdd1
7. LV확인
#lvs
#lvscan
#lvdisplay
#lvs -a -o+devices // LV가 어느 장치에 할당되었는지 확인 가능
8. 파일시스템
mkfs -t ext4 /dev/Mirror_VG/Mirror_LV
9. 마운트
mkdir /LVM-mirror
mount /dev/Mirror_VG/Mirror_LV /LVM-mirror
10. 장애테스트
#cat > test
#touch test1
#cp /boot/vm* ./test2
#dd if=/dev/zero of=/dev/sdb1 bs=1024 count=10
dd - 블록 단위로 파일을 복사하거나 파일 변환을 할 수 있는 명령
(백업할때 사용하는 명령어)
/dev/zero : 0 갑을 가지는 특수 장치 파일
if=FILE : 표준 입력대신 지정한 파일을 입력으로 받는다.
of=FILE : 표준 출력대신 지정된 파일에 출력한다.
bs=BYTES : 한번에 BYTES씩 읽어 들이고 출력
count=BLOCKS : 입력한 회수 만큼 반복(복사)한다.
장애확인
#pvscan
#pvs
#pvdisplay
#vgreduce --removemissing --force Mirror_VG
// Mirror_VG 문제가 있는 PV제거하고 VG정보를 갱신
#vgextend Mirror_VG /dev/sdb1
#lvconvert /dev/Mirror_VG/Mirror_LV -m1 /dev/sdb1 /dev/sdc1 /dev/sdd1
'Linux' 카테고리의 다른 글
Day-20 소프트 웨어 관리하기 (0) | 2017.01.14 |
---|---|
Day-19 부팅 프로세스 (0) | 2017.01.13 |
Day-17 파일 시스템 관리 4 (0) | 2017.01.10 |
Day-16 파일 시스템 관리 3 (0) | 2017.01.09 |
Day-15 파일 시스템 관리 2 (0) | 2017.01.09 |