본문 바로가기
AWS Cloud School 8기/서버가상화_클라우드 이미지

LVM

by YUNZEE 2025. 1. 31.
728x90

📌LVM (Logical Volume Manager)

  • 논리적 볼륨 관리자
  • 디스크 파티션을 유연하게 관리할 수 있도록 도와주는 기술
  • 확장성과 유연성이 뛰어난 저장소 관리 방법
  • 디스크의 크기를 증가 or 감소 가능

💡기존의 파티션은?

  • 디스크 크기를 변경하기 어려움
  • 여러 개의 디스크를 하나처럼 사용할 수 없음
  • 디스크 공간을 동적으로 관리하기 어려움

💡LVM을 사용하면?

  • 여러 개의 물리 디스크(PV)를 하나의 논리적 볼륨(LV)으로 묶을 수 있음
  • 디스크 크기를 동적으로 조정 가능(확장/ 축소 가능)
  • 볼륨을 쉽게 이동 및 복사가 가능 

💡 LVM의 기본 개념

1️⃣ PV (Physical Volume, 물리 볼륨)

  • 실제 물리적 디스크 또는 디스크 파티션을 의미
  • fdisk, parted 등을 사용해 디스크를 초기화한 후, pvcreate 명령어로 LVM에서 사용할 수 있도록 변환

2️⃣ VG (Volume Group, 볼륨 그룹)

  • 여러 개의 PV(물리 볼륨)를 하나로 묶어서 관리하는 단위
  • 디스크 용량을 논리적으로 확장 가능

3️⃣ LV (Logical Volume, 논리 볼륨)

  • VG에서 특정 크기를 할당하여 만든 가상의 파티션
  • lvcreate 명령어를 사용하여 생성 가능
  • 파일 시스템(ext4, xfs 등)을 생성하여 마운트 가능
실습) 디스크를 3개 추가한다. 각각 1GB, 2GB, 3GB

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-2097151, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x631c871f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

- 찾아볼 수 있음

8e: Linux LVM

- 패키지 검색 

- 설치 목록 볼 수 있음

 

[root@PxE ~]# yum install -y lvm2

- 설치

 

[root@PxE ~]# pvcreate /dev/sdb1
[root@PxE ~]# pvcreate /dev/sdc1
[root@PxE ~]# pvcreate /dev/sdd1

- 물리디스크 PV로 선언

- 내가 만든 PV 목록

- myvg라는 볼륨그룹에 mylv1인 이름을 갖는 lv를 1GB 정도로 만들어주자

 

[root@PxE ~]# lvcreate --size 1G --name mylv1 myvg
  Logical volume "mylv1" created.
[root@PxE ~]# lvcreate --size 1G --name mylv2 myvg
  Logical volume "mylv2" created.
[root@PxE ~]# lvcreate --extents +100%FREE --name mylv3 myvg
  Logical volume "mylv3" created.

- myvg의 남은공간 전부(+100%FREE) 할당하여 mylv3이라는 lv를 만들겠다.

- ivdisplay로 확인가능

- 내가 갖고있는 lv의 장치명 확인

mkfs.ext4 /dev/myvg/mylv1

[root@srv1 ~]# mkfs.ext4 /dev/myvg/mylv2

[root@srv1 ~]# mkfs.ext4 /dev/myvg/mylv3

# 파일시스템 생성

 

[root@srv1 ~]# mkdir /lv1

[root@srv1 ~]# mkdir /lv2

[root@srv1 ~]# mkdir /lv3

# 마운트 포인트 생성

 

[root@srv1 ~]# mount /dev/myvg/mylv1 /lv1

[root@srv1 ~]# mount /dev/myvg/mylv2 /lv2

[root@srv1 ~]# mount /dev/myvg/mylv3 /lv3

#마운트

실습) 디스크를 추가하여 VG와 LV를 늘려보자.

- 7GB짜리 디스크 추가

 

(vm에서 해도 상관없지만 실수로 했기 때문에 xshell로 넘어감)

- 볼륨그룹에 방금 만든 pv인 /dev/sde를 추가 

 

- 추가된 사이즈와 기존에 이미 할당된 사이즈, 남은 공간 확인

 

- mylv2를5G로 재설정하겠음 

- 사이즈 그대로임

- 파일 시스템에서는 늘어난 용량을 인지하지 못함

[root@PxE ~]# resize2fs /dev/myvg/mylv2

- 파일 시스템 리사이징

 

- 반영된 걸 확인 가능

 

실습) lv를 줄여보자

 

1. 마운트해제
[root@PxE ~]# umount /lv2
2. 파일시스템 체크
[root@PxE ~]# e2fsck -f /dev/myvg/mylv2

 

3. 줄일 용량 만큼 fs감소
[root@PxE ~]# resize2fs /dev/myvg/mylv2 2G

4. lvreduce 명령으로 사이즈 감소
[root@PxE ~]# lvreduce --size 2G /dev/myvg/mylv2

- 감소하는 만큼 용량안에 있는 데이터에 손실이 있을 수 있음이라고 알려줌

 

5. 다시 마운트
[root@PxE ~]# mount /dev/myvg/mylv2 /lv2

 

문제 1) mylv1을 2GB로 확장하고 mylv2는 1GB로 감소시킨 후 남은 VG공간 전체를 mylv3에 할당해 보세요

 

mylv1을 2GB로 확장

[root@srv1 ~]# lvextend --size 2G /dev/myvg/mylv1

[root@srv1 ~]# resize2fs /dev/myvg/mylv1

 

[root@srv1 ~]# umount /lv2

[root@srv1 ~]# e2fsck -f /dev/myvg/mylv2

 mylv2는 1GB로 감소

[root@srv1 ~]# resize2fs /dev/myvg/mylv2 1G

[root@srv1 ~]# lvreduce --size 1G /dev/myvg/mylv2

[root@srv1 ~]# lvreduce --size 1G /dev/myvg/mylv2

[root@srv1 ~]# mount /dev/myvg/mylv2 /lv2

 VG공간 전체를 mylv3에 할당

[root@srv1 ~]# lvextend --extents +100%FREE /dev/myvg/mylv3

문제 2) 현재 사용 중인 서버의 최상위 디렉터리 용량을 10G 정도 늘려보세요.

 

- xfs 파일시스템의 경우엔 xfs_growfs라는 명령으로 리사이징을 하셔야 함

 

[root@PxE ~]# vgdisplay

내가 확장하고싶은 VG의 이름을 확인

[root@srv1 ~]# pvcreate /dev/sdf

- pv 생성

[root@srv1 ~]# vgextend centos /dev/sdf

- 생성한 pv를 centos라는 이름의 vg에 추가

- 추가된 걸 확인할 수 있음

 

[root@PxE ~]# lvdisplay

- lv의 다른 이름 

[root@PxE ~]# lvextend --extents +100%FREE /dev/centos/root
[root@PxE ~]# xfs_growfs /dev/centos/root
[root@PxE ~]# df -h | grep root

728x90