10. LVM으로 디스크 관리

2022. 9. 24. 15:10Linux

LVM(Logical Volume Manager)이란?

LV(Logical Volume)을 유연하고 효율적으로 관리하기 위한 커널의 한 부분입니다.

 

기존 디스크 관리 방법은 저장 공간의 크기가 고정돼 증설/축소가 어렵지만,

LVM은 용량 조절이 가능하여 유연하게 스토리지를 관리할 수 있습니다.

 

  • PV(Physical Volume)
    • 실제 디스크 장치를 분할하여 파티션이 된 상태를 의미합니다.
    • PV는 일정한 크기의 PE들로 구성됩니다.
  • PE(Physical Extent)
    • PV를 구성하는 일정한 크기의 Block입니다.
    • 보통 1PE는 4MB에 해당합니다.
    • PE와 LE(Logical Extent)는 1:1로 대응합니다.
  • VG(Volume Group)
    • PV들이 모여서 생성되는 단위입니다.
    • 사용자는 VG를 원하는 대로 나누어 LV로 만들 수 있습니다.
  • LV(Logical Volume)
    • 사용자가 사용하는 단위로, VG에서 필요한 만큼 할당받아 LV를 생성합니다.

이제 LVM을 실습하며 다뤄보겠습니다.

 

여기 10G sdb, 5G sdc가 있습니다.

 

fdisk로 sdb에 파티션 하나 만들어 줍니다. 그리고 : t 명령어로 파티션 타입을 Linux에서 Linux LVM으로 바꿔주겠습니다.

 

만든 파티션을 pv로 선언하겠습니다. 

# pvcreate /dev/sdb1

이렇게 선언한 pv를 pvs, pvscan, pvdisplay로 확인할 수 있습니다.

 

그리고 선언한 pv로 vg 생성을 하겠습니다.

# vgcreate vghmh /dev/sdb1

생성한 vg 역시 vgs, vgscan, vgdisplay로 확인할 수 있습니다.

 

생성한 vg로 lv 두개를 만들겠습니다.

# lvcreate -L 4G -n lvhmh1 vghmh

# lvcreate -L 6G -n lvhmh2 vghmh

10G라서 10-4=6G를 할당하려 했더니 할당에 오차범위가 있어 실제 디스크 용량을 넘어 할당되지 않습니다.

# lvcreate -L 5.9G -n lvhmh2 vghmh

lv 역시 lvs, lvscan, lvdisplay로 확인할 수 있습니다.

 

각각 ext4와 xfs로 할당하겠습니다.

# mkfs.ext4 /dev/vghmh/lvhmh1

# mkfs.xfs /dev/vghmh/lvhmh1

 

그리고 /lv1과 /lv2 마운트 포인트에 마운트 하고 df 명령어로 확인했습니다.

 

이제 sdc 디스크 용량을 이용해 lvhmh1과 lvhmh2의 용량을 증설해보겠습니다.

먼저 위와 같은 방법으로 파티션을 하나 만듭니다.

 

/dev/sdc1으로 pv 생성해줍니다.

 

vghmh에 /dev/sdc1을 추가하여 vg의 용량을 늘려줍니다. 5GB가 늘은 것을 확인할 수 있습니다.

# vgextend vghmh /dev/sdc1

 

lvhmh1과 lvhmh2의 용량을 각각 2GB씩 증설하겠습니다.

# lvextend -L 6G /dev/vghmh/lvhmh1

# lvextend -L 6G /dev/vghmh/lvhmh1

4->6, 5.9->7.9 로 용량이 증설된 걸 lvs로 확인할 수 있습니다.

 

다만 df -Th에서는 용량증설이 반영되지 않은 모습입니다.

 

이 경우 .ext3,4는 resize2fs로, xfs는 xfs_growfs 명령어로 반영시킬 수 있습니다.


lv를 축소시키는 lvreduce 명령어는 데이터를 깨뜨릴 위험이 있기 때문에 사용하지 말아야 합니다.


끝!