Profile picture

[Linux] 볼륨 추가하여 root 파티션 용량 늘리기 - LVM

JaehyoJJAng2023년 06월 19일

▶︎ 개요

물리적인 DISK를 서버에 추가하여 /mnt/data와 같은 마운트 포인트를 생성하고

해당 마운트 포인트(/mnt,/data ..)에 장착한 디스크를 마운트해서 용량을 많이들 증가시키는데,

루트(/) 디렉토리의 용량을 증가 시키고 싶을 때에는 아래 방법들을 따라하면 된다.


▶︎ 볼륨 확장

현재 서버에 10G 디스크가 추가로 장착되어 아래와 같이 sdb 디스크가 lsblk에 출력되는 것을 확인할 수 있다

$ lsblk
sda               8:0    0   50G  0 disk
├─sda1            8:1    0    3G  0 part /boot
└─sda2            8:2    0   47G  0 part
  ├─centos-root 253:0    0   36G  0 lvm  /
  ├─centos-swap 253:1    0    1G  0 lvm  [SWAP]
  └─centos-home 253:2    0   10G  0 lvm  /home
sdb               8:16   0   10G  0 disk

이제 sda2 파티션에서 논리적으로 분리된 3개의 Logical Volume 중에 centos-root LV의 용량을 sdb 디스크의 파티션을 LVM으로 생성해 합쳐볼 거다.


‣ 파티션 생성

sdb 디스크의 파티션을 생성해보자.

$ sudo fdisk /dev/sdb

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xd2906803

   Device Boot      Start         End      Blocks   Id  System

# 파티션 생성
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): 1 # 1번으로 파티션 번호 지정 (sdb1 , sdb2 , sdb3 ,sdb4)
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): t # 파티션 타입 변경
Selected partition 1
Hex code (type L to list all codes): 8e # LVM 으로 변경
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w # 설정 저장
The partition table has been altered!

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

‣ pvcreate

sdb1 파티션을 Physical Volume으로 생성하도록 하자.

$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

‣ vgextend

기존 centos-root LV이 어떤 VG에 속해져있는지 확인해야 한다.

$ sudo vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
...

centos라는 VG에 sdb1 파티션을 넣어주자.

$ sudo vgextend centos /dev/sdb1

sdb1 파티션이 centos VG에 정상적으로 추가되었는지 확인해보자

$ sudo pvdisplay

...
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               centos # 현재 소속된 VG
  PV Size               <10.00 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               65Gj6v-ogmW-4CWo-tyjF-4cpW-hPr9-KluX6i

‣ lvextend

이제 거의 다왔다.
먼저 lsblk 커맨드로 LVM 목록을 다시 봐보자.

$ lsblk
└─sda2            8:2    0   47G  0 part
  ├─centos-root 253:0    0   36G  0 lvm  /
  ├─centos-swap 253:1    0    1G  0 lvm  [SWAP]
  └─centos-home 253:2    0   10G  0 lvm  /home

sdb1을 centos VG에 추가해주었으니 해당 VG을 root LV에 확장 시켜주기만 하면 끝이다.


기존 LV 크기를 확장 시키기 위해 아래 명령어를 입력하도록 하자.
-l +100%FREE 옵션을 사용하여 남은 모든 사용 가능한 용량을 확장하도록 하였음

$ sudo lvextend -l +100%FREE /dev/centos/root

위 명령은 'centos' VG 내의 'root' LV를 가능한 모든 용량으로 확장한다. 이렇게 하면 사용 가능한 모든 용량을 'root' LV에 할당할 수 있게된다.


만약 특정 크기를 할당하고 싶다면 -L 옵션을 사용하여 크기를 직접 지정할 수도 있다. 예를 들어, 8GB로 LV를 확장하려면 다음과 같이 사용하면 된다

$ lvextend -L +8G /dev/centos/root

‣ 확장 결과

lsblk 명령어로 36G이었던 디스크 용량이 46G로 늘어났는지 확인해보도록 하자.

$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk
├─sda1            8:1    0    3G  0 part /boot
└─sda2            8:2    0   47G  0 part
  ├─centos-root 253:0    0   46G  0 lvm  /
  ├─centos-swap 253:1    0    1G  0 lvm  [SWAP]
  └─centos-home 253:2    0   10G  0 lvm  /home
sdb               8:16   0   10G  0 disk
└─sdb1            8:17   0   10G  0 part
  └─centos-root 253:0    0   46G  0 lvm  / # 정상적으로 늘어난 것을 확인할 수 있다.

▶︎ df 용량 미반영 이슈

df 커맨드로 디스크 용량 확인 했을 때 용량이 안 늘어나 있다면 아래 방법을 시도해보자.

LV의 파일 시스템이 ext4이면 resize2fs이고, xfvs 파일 시스템인 경우 xfs_growsfs를 사용하면 된다.

$ sudo xfs_growfs /dev/mapper/centos-root

증가시키고 싶은 파일시스템 경로를 입력하면 파일시스템 증가가 완료된다.


df 커맨드로 확인해보자

$ df -h | grep "/$"
/dev/mapper/centos-root   46G  1.6G   45G   4% /

정상적으로 디스크 용량이 늘어났다!


▶︎ pv | vg | lv display

Physical Volume, Volume Group, Logical Volume 의 상세정보를 display를 사용하여 확인해 볼수 있다.

# PV 상세정보
$ sudo pvdisplay

# VG 상세정보
$ sudo vgdisplay

# LV 상세정보
$ sudo lvdisplay

Loading script...