출처 : 유튜브 따라하면서 배우는 it - 리눅스 고급과정
Logical Volume Manager : LVM
여러 개의 물리적인 하드 디스크를 논리적으로 하나로 합친 것. 파티션의 반대.
논리적인 볼륨을 관리해주는 프로그램이라고 생각하면 된다.
파티션을 만드는 거다. 라고 생각하면 된다.
리눅스에 기본적으로 탑재. 처음 하드디스크 파티션을 LVM으로 만든다.
논리 볼륨
을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램
기존 방식에서는 파일 시스템이 블록 장치에 직접 접근해서 읽고/ 쓰기를 했다.
LVM을 사용하면, 파일 시스템이 LVM이 만든 가상의 블록 장치에 읽고/쓰기 수행
이를 통하여 다양한 기능 제공
유연한 용량, 크기 조정 가능한 스토리지 풀(Pool), 온라인 데이터 재배치
편의에 따라 장치 이름 지정, 디스크 스트라이핑, 미러 볼륨, 볼륨 스냅샷
물리적인 하드디스크를 PE라는 작은 단위로 다 쪼갠다. PE를 원하는만큼만, 묶어서 사용할 수 있다.
장점이 뭐냐면, 언제든지 내가 더 늘려서 쓸 수 있다.
기존의 파티션은 한 번 만들고, 용량 바꾸려면 파티션을 새로 만들어야 함. 기존 내용 날라가거나 하는 위험이 있음.
하드디스크를 하나 더 추가해서 똑같은 단위로 추가해서 그대로 사용할 수 있음.
논리적으로 인식된 디스크에다가 얼마든지 늘릴 수 있다. 계속 늘려서 쓸 수 있다.
만약 용량이 남아돌면 줄일 수도 있다.
-👍 원하는만큼 떼어가면 됨. VG으로 묶어놨으니까!
lvscan
: 처음에 설치한 lv가 보임.- /dev/cs/root : cs라는 볼륨 그룹에, root라는 lv가 생성됨. (47GB를 뗌) 각각 파일시스템 만들어서 마운트 해서 씀.
fdisk -l
쳐서 나오는 정보값들이
실제 디스크가 아니라 만들어진 애들 (cs-root / cs-swap 등)
PE는 우리가 쪼개는 게 아니라, 물리적인 하드디스크를 PV라는 것으로 만들어주면 PE 단위로 잘개잘개 쪼개놓는 것이 가능하다.
PV를 묶어서, 볼륨 그룹 VG으로 만듬
하드디스크 1-> PV (원래있던 볼륨 그룹에 추가해주면 된다.)
pvscan
/dev/nvme0nlp2에 맨 처음 설치할 때 50GB 하드디스크에 physical volume
이 만들어짐.
이런 볼륨 그룹(VG cs)에 속해있음.
cs라는 볼륨 그룹이 하나 있고, /dev/nvme0nlp2 파티션이 PV로 추가되어 있음.
- PV의 용량이 적으면 해당 하드디스크를 PV로 만들고, VG에 추가해서 용량 늘림(한 단계가 더 필요하긴 함)
기존에 썼던 방식은, 원래있던 곳에서 늘어나는 게 아니라, 다른 경로에서 늘어났었다.
47GB를 쓰고 있었는데, 80GB 짜리 파일을 넣으려면.. 20GB 두개 남아서 추가를 함. 47에 넣을 수는 없음. -> LVM은 47GB 자체가 늘어나게 됨.
큰 파일도 저장할 수 있게 됨.
pvscan
: pv 보려면vgscan
: VG 볼륨 그룹 보려면lvscan
: LV 보려면 10GB 하드디스크 추가 (SCSI 타입)
하드디스크를 처음 추가하면 인식이 안 됨.
rescan-scsi-bus.sh
실행하거나,scsi_rescan
echo "- - -" > /sys/class/scsi_host/host
이 중 하나 실행
/dev/sdd 이름으로 10GB 하드디스크 추가.
원래대로라면, 파티션 생성, 파일시스템 생성, 마운트 생성 순이다.
중간에 LVM 이라고 하는 작업이 추가가 되는 것.
fdisk /dev/sdd 이름으로 파티션 만듦
원래 쓰던거랑 다름 없음.
그러나 PV로 만들려면, -> Linux LVM으로 바꿔줘야 함.
fdisk /dev/ssdd
기본 타입의 파티션 만들어지는데, 이후 t
대문자 L : 어떤 타입인지 선택할 수 있음. 8e
w
로 저장하고 나오면 된다. fdisk /dev/sdd
n (새로운 파티션)
p (주 파티션)
enter (몇 번째 파티션으로)
enter (몇 번 섹터부터)
enter (몇 번 섹터까지)
t (타입 변경)
8e (linux lvm)
w (저장)
▶lvm용 파티션이 만들어지게 된다.
기존이라면 (파란색 LVM 작업)
추가 - 인식 - 파티션 - PV - VG - LV - 파일시스템 - 마운트
- 클라우드에서 유연하게 사용하다. elastic
- 하드디스크 용량을 유연하게 사용한다.
pvcreate /dev/sdd1
(파티션 이름, 디스크 이름 x)
pvscan
/dev/sdd1는 아직 볼륨그룹에 추가되어있지 않아서 VG에 나타나있지 않는 것임.
다른 볼륨 그룹에 새로 만들어서 해볼 것. (기존은 건들지 말것. 운영체제 최대한 안건드려보려고)
볼륨그룹 새로 만듦
vgcreate myvg(이름 자유) /dev/sdd1(PV로 추가했던 얘를)
여기에 추가하겠다. PV 남는게 있으면 추가해도 됨.
볼륨 그룹에서 원하는 만큼 떼어가면 된다. 얼마나 남아있는지 확인하려면,
vgdisplay
-> 더 자세한 정보 (scan은 목록만 보는 것)
PE size : 4MB 단위로 쪼갬
총 10GB 사용 가능
lvcreate -L +8G -n(n 옵션 설정) mylv1(이름 자유) myvg(어떤 볼륨그룹에서 8GB만큼 떼어갈것)
여기에 파일 시스템 생성, 디렉토리 만들고 마운트까지 해봄
mkfs -t xfs /dev/myvg/mylv1
mkdir /test3
mount /dev/myvg/mylv1 /test3
df -h
8GB짜리 저장소가 생김
fdisk /dev/sde
로 파티션 생성, PV까지 만듦vgextend myvg /dev/sde1
를 추가. (10GB 늘어날 것임)lvscan
lvextend -1 +100%FREE(남아있는용량 다써버리겠음) /dev/myvg/mylv1
df -h로 보면, 그대로임을 알 수 있는데,
왜? 가상의 하드디스크 자체는 늘어나기는 했는데, 파일시스템 자체는 8GB짜리로 생성이 되어 있는 것임. 파일 시스템 자체를 늘려주는 작업도 필요하다.
xfs (기존 ext4 resize이런 명령어임)
xfs_growfs /dev/myvg/mylv1
명령 한 번만 실행해주면
마운트 해제한 적 없음, 연결은 계속되어 있는 상태에서 용량만 늘려줌.
fdisk [장치명]
n-> p(주 파티션) -> 첫 번째 섹터 -> 마지막 섹터 -> t타입 변경 -> 8e LVM 타입으로 변경 -> w 저장
pvcreate [파티션명]
- ex) pvcreate /dev/sdb1
pvscan
pvdisplay [파티션명]
- vgcreate [볼륨그룹명][파티션명1] [파티션명2][파티션명3]....
- ex) vgcreate vg_test /dev/sdb1 /dev/sdc1
- vgscan
- vgdisplay [볼륨그룹명]
- lvcreate -L [볼륨크기] -n [볼륨명][볼륨그룹명]
- ex) lvcreate -L 5G -n lv_test vg_test
- lvscan
- lvdisplay [볼륨명]
- ex) lvdisplay /dev/vg_test/lv_test
- mkfs -t [파일시스템 타입][볼륨명]
- ex) mkfs -t xfs /dev/vg_test/lv_test
mount [볼륨명][마운트 포인트]
VG 확장
디스크 추가 → 파티션 생성 → PV 생성 → vgextend [볼륨그룹명][파티션명]
LV 확장
- lvextend -L + [용량][볼륨명]