[Linux] LVM - Logical Volume ManagementLinux2022. 2. 25. 18:39
Table of Contents
728x90
✅ 들어가기 앞서
- 리눅스에서의 하드디스크
리눅스에서는 디스크를 효율적으로 관리하고 사용하는 방법으로 LVM과 RAID 기술을 사용하고 있다. - 디스크의 파티션이란 ?
디스크는 파티션이라는 논리적인 크기로 분할/통합해서 사용한다.
하나의 디스크를 여러개로 분할하기도 하며 여러개의 디스크를 하나의 파티션으로 통합하기도 한다.
파티션은 고정적이고 물리적인 개념이 강해 한번 크기를 설정하면 변경, 추가가 어렵고 OS는 각 파티션을 별도의 디스크처럼 인식한다. - 디스크의 볼륨이란 ?
정보를 저장하고 있는 디스크를 몇개로 분할해서 개별 디스크로 취급하는 것을 말한다.
쉬운 예로 파티션이 있다. 하나의 하드 디스크를 파티션으로 나누어 관리할 경우 디렉토리 관리가 쉬워지고 하나의 파티션에 바이러스가 감염되더라도 별도로 저장된 다른 파티션의 데이터를 살릴 수 있는 확률이 높아진다.
✅ LVM (Logical Volume Management)이란 ?
- 여러개의 하드디스크를 합쳐서 한개의 파일시스템으로 사용하는 것이다. 필요에 따라 다시 나눌 수 있다.
- 2TB 용량의 HDD 2개를 합친 뒤 다시 1TB, 3TB로 나눠 사용할 수 있다.
✅ LVM 용어
- Physical Volume (물리 볼륨) : /dev/sda1, /dev/sdb1 등의 파티션
- Volume Group (볼륨 그룹) : 물리 볼륨을 합쳐서 1개의 물리 그룹으로 만드는 것
- Logical Volume (논리 볼륨) : 볼륨 그룹을 1개 이상으로 나눠서 논리 그룹으로 나눈 것
이름 | 설명 |
Physical Volume | 물리 장치와 직접 매핑 다양한 장치로 생성 가능 |
Volume Group | 하나 이상의 PV로 구성 사용 가능한 PE를 LV에 할당 |
Logical Volume | 실질적인 사용 공간 VG 범위 내에서 생성 |
Physical Extent | PV를 구성하는 기본 단위 데이터 저장 단위 |
Logical Extent | LV를 이루는 기본 단위 기본적으로 PE와 1대 1매칭 |
- PE와 LE는 보통 1대 1매칭이지만 mirroring의 경우 2대 1로도 매칭된다.
- LV는 LE 단위로 구성되므로 크기도 LE 크기의 배수로 할당된다.
✅ 논리 볼륨의 구성
리눅스에서 논리 볼륨은 다음과 같이 구성된다.
1. 물리 장치를 준비하고 물리 볼륨을 만든다.
2. 물리 볼륨들을 그룹지어 볼륨 그룹을 만든다.
3. 이렇게 만든 볼륨 그룹의 사용 가능한 물리 확장 영역을 사용해 가상의 장치인 논리 볼륨을 만든다. 이는 Device Mapper를 통해 연결된다.
이렇게 만들어진 논리 볼륨은 볼륨 그룹의 용량이 허용하는 한 언제든지 확장 가능하다. 만약 볼륨 그룹의 한도가 모자라다면 새로운 PV를 만들어 VG를 증설할 수 있다.
논리 볼륨의 확장은 디스크의 Down time 없이 파티션의 크기를 얼마든지 확장할 수 있는 장점이 있다.
✅ 논리 볼륨 생성
- 논리 볼륨 만들기
- 물리적 장치 준비
- 물리볼륨과 장치 매핑
- 물리볼륨으로 볼륨그룹 생성
- 볼륨그룹에서 논리볼륨 할당
- 논리볼륨에 파일시스템 생성
- 마운트 후 사용
1. 파티션 준비
fdisk 명령어를 이용해 파티션을 나눠준다.
파티션 나누는 방법은 상단 링크에 자세히 나와있음
2. 물리 볼륨 생성
pvcreate [장치명] - fdisk를 통해 만들어진 파티션을 PV로 생성
pvdisplay [PNAME] - PV 속성 출력
pvchange [옵션] - PV 속성 변경
-u : 새로운 UUID 부여
-x : PV 활성화 여부 결정 (y/n)
pvs - PV 정보 출력
pvscan - PV의 모든 디스크를 스캔
vgcreate [VGNAME] [PVNAME] - VG 생성
-s 옵션으로 PE 사이즈 지정 ex) vgcreate vg1 /dev/sdb3 -s 8MPE
사이즈가 크면 공간 낭비가 심하고 사이즈가 작으면 I/O 시간이 길어진다.
vgdisplay - VG 속성 출력
vgremove - VG 삭제
vgreduce - VG 안의 PV 삭제
vgextend [옵션] - VG 속성 변경
-a : PV 활성화 여부 설정
-l : 해당 VG안에 생성할 수 있는 최대 LV 개수 지정
3. 논리 볼륨 생성
lvcreate [VGNAME] [옵션] [SIZE]
-L : 단위를 이용한 크기 지정
-l : LE 개수를 이용해 크기 지정
-n : 논리 볼륨의 이름을 지정해주고 싶을 때는 -n 옵션 사용 ex) lvcreate vg0 -n NAME SIZE
lvdisplay [장치명] - LV 속성 출력
lvextend [옵션] - LV 용량 확장
-L :지정한 사이즈로 용량 축소
-I : 지정한 PE 수만큼 용량 축소
-r : 확장과 동시에 포맷 진행 ex) lvextend -L +0.5G /dev/vg0/lv01 -r
lvremove [옵션] - LV 삭제
-f : 강제로 삭제
lvreduce [옵션] - LV 용량 축소
-L :지정한 사이즈로 용량 축소
-I : 지정한 PE 수만큼 용량 축소
4. 파일 시스템 생성 및 마운트
mkfs - 파일 시스템 생성 및 포맷
ex) mkfs.ext4 /dev/vg0/lv01 - 파일 시스템 타입을 ext4로 지정 후 포맷
mkfs.xfs /dev/vg1/lv02 - 파일 시스템 타입을 xfs로 지정 후 포맷
resize2fs - 파일 시스템 타입의 LV 사이즈 재조정
xfs_growfs - xfs 파일 시스템 타입의 LV 사이즈 재조정
참고
728x90
'Linux' 카테고리의 다른 글
[Linux] 부트 프로세스 (0) | 2022.03.04 |
---|---|
[Linux] LVM 명령어 실습 (0) | 2022.02.25 |
[Linux] Swap memory (0) | 2022.02.25 |
[Linux] 리눅스 명령어 - at, atd, cron, crontab (작업 스케줄링) (0) | 2022.02.24 |
[Linux] 리눅스 명령어 - 시스템 디스크 명령어 (0) | 2022.02.24 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!