박종훈 기술블로그

[Linux] 디스크는 충분한데 실제 용량이 부족해요 - 논리 볼륨(Logical Volume, LV)

회사에서 개인 개발용으로 쓰고있는 ubuntu 서버가 있는데 디스크 용량은 500gb 정도로 충분한데 막상 운영체제 내에서 확인해보면 100gb 정도로 용량이 훨씬 부족하게 나와서 시간되면 확인해봐야겠다 생각하다가 오늘 드디어 확인을 해보았다.

처음에는 설치할 때 파티션을 잘못 잡아뒀나 싶어서 확인해봤는데 파티션 문제는 아니였다. 파티션은 정상적으로 풀로 설정이 되어 있었다.

그래서 그럼 문제가 뭐지? 하고 많은 삽질과 함께 내가 겪고 있는 현상에 대해서 찾아보았는데

문제는 논리 볼륨(LV) 이란 애 때문이였다. 설치중에 기본값으로 잡혀 들어간건지 나는 설정한 기억이 없는데 얘가 100기가로 설정되어 있었다.

논리 볼륨?

논리 볼륨에 대해 간단하게 소개를 하자면 다음과 같다.

논리 볼륨(Logical Volume)은 컴퓨터의 저장 관리에서 물리적인 저장 장치를 추상화하고 더 유연하게 사용할 수 있도록 하는 개념이다.

디스크의 한계를 넘어서 유연하게 관리할 수 있는 것이 특징이다.

lvm architecture

LVM architecture 에는 세가지 볼륨 타입이 있다.

  • 물리 볼륨(Physical Volume, PV): 물리적 파티션 또는 전체 디스크
  • 볼륨 그룹(Volume Group, VG): 물리 볼륨(PV)의 모음, 논리 볼륨을 할당할 수 있는 디스크 공간 풀
  • 논리 볼륨(Logical Volume, LV): 볼륨 그룹(VG)에서 할당된 논리적인 저장 공간. 운영체제에 의해 마치 단일 디스크 파티션처럼 인식

출처: oracle

문제 해결하기

정리해보면 나의 경우에는 물리 볼륨은 정상적으로 생성되어 있었기 때문에, 외부에서 봤을 때는 정상적으로 보였던 것이고, 그 안에서 논리 볼륨이 작게 잡혀있었기 때문에 용량이 부족하다고 느낀 것이였다.

해결 전 df -h 를 해보면 다음과 같이 나온다.

jonghoonpark@jonghoonpark:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              6.3G  2.1M  6.3G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   98G   82G   12G  88% /
tmpfs                               32G     0   32G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  426M  1.4G  24% /boot
/dev/sda1                          1.1G  6.1M  1.1G   1% /boot/efi
tmpfs                              6.3G  8.0K  6.3G   1% /run/user/1000

현재 내 컴퓨터의 볼륨 구성은 lsblk 명령어로 확인해 볼 수 있다.

jonghoonpark@jonghoonpark:~$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
... 생략 ...
sda                         8:0    0 476.9G  0 disk
├─sda1                      8:1    0     1G  0 part /boot/efi
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0 473.9G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0   100G  0 lvm  /

ubuntu--vg-ubuntu--lv 를 보면 사이즈가 100G로 잡혀있는 것을 볼 수 있다.

다음과 같은 명령어로 용량을 확장 할 수 있다. 나의 경우에는 전부 확장되기를 바랬기 때문에 아래와 같이 명령어를 작성하였다. (다르게 적용하고 싶으면 lvextend 명령어에 대해서 찾아보면 된다.)

jonghoonpark@jonghoonpark:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

논리 볼륨을 확장했으면, 마지막으로 파일 시스템도 확장하여 추가된 공간을 사용할 수 있게 해야 한다.

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

이렇게 하면 정상적으로 용량이 확장되어 적용되어 있는 것을 확인할 수 있다.

해결 후 다시 df -h 를 해보면 다음과 같이 나온다.

jonghoonpark@jonghoonpark:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              6.3G  2.1M  6.3G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  466G   83G  363G  19% /
tmpfs                               32G     0   32G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  426M  1.4G  24% /boot
/dev/sda1                          1.1G  6.1M  1.1G   1% /boot/efi
tmpfs                              6.3G  8.0K  6.3G   1% /run/user/1000