[Linux] 디스크 확장

리눅스의 저장용량을 늘리는 방법을 알아보자.


1. 디스크 확장

가. 병목 확인

417MB 밖에 남지 않은 상황

VM에 417MB 밖에 남지 않은 상황이었다.

실제 올려야할 데이터의 크기가 700MB를 넘기니 문제가 생길 수 밖에 없다.

Proxmox VE 디스크 크기 조정

넉넉하게 5GB 정도 확장한다.

디스크 / 파티션 / FS 중 어디가 병목인지 확인한다.

lsblk
df -h
fdisk -l
파티션 상태

리눅스가 용량을 못 읽는 것이 아니라, 확장 단계를 하나도 안 밟은 전형적인 LVM 케이스다.

파티션이 확장되지 않아서 LVM, 파일시스템도 그대로다.

growpartpvresizelvextendresize2fs 순서를 따라서 확장해야 한다.


나. 파티션 확장

# install
sudo apt update
sudo apt install cloud-guest-utils
Code language: PHP (php)

파티션을 확장하기 위해서는 growpart라는 것이 필요하다.

따라서 이를 포함하는 cloud-guest-utils 패키지를 설치한다.

# Partition Extend
sudo growpart /dev/sda 3
Code language: PHP (php)
파티션 확장

sda3 파티션 13.2G 로 증가.


다. 볼륨 확장

lsblk를 실행했을 때 lvm이 표시된다면 볼륨을 확장해야 한다.

sudo apt install lvm2

lvm2를 설치한다.

# Physical Volume Resize
sudo pvresize /dev/sda3
# Logical Volume Extend
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Code language: PHP (php)
LVM 확장

물리적, 논리적 볼륨 확장.


바. 파일 시스템 확장

파일 시스템 확장한다.

# install
sudo apt install e2fsprogs
Code language: PHP (php)
# FileSystem Resize (lvm)
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
Code language: PHP (php)
lvm 파일시스템 확장
lvm 정상적으로 확정 성공

만약 lvm이 아닌 경우라면 파티션 경로까지만 입력하면 된다.

# lvm 아님
lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0    6G  0 disk
└─sda1   8:1    0    6G  0 part /
sr0     11:0    1  784M  0 rom

# 파일시스템 확장
sudo resize2fs /dev/sda1
Code language: PHP (php)

최종적으로 늘어난 용량을 확인한다.

df -h /

3. MBR + extended + logical(sda5) 구조

가. 문제 상황

growpart부터 막히는 경우가 있을 수 있다.

sda   10G
 ├─sda1  4.4G  /
 ├─sda2   1K   (extended)
 └─sda5  641M  swap

이는 디스크 공간이 없는 게 아니라 sda1 뒤에 다른 파티션이 막고 있어서다.

sda1 뒤에 extended + swap 파티션이 있어서 확장 불가하다.

용량을 확장하기 위해서는 swap 파티션 삭제sda1 확장파일시스템 확장swapfile 생성을 순서대로 수행해야 한다.


나. 준비

본격적으로 시작하기 앞서 반드시 백업하고 진행한다.

free -h
               total        used        free      shared  buff/cache   available
Mem:           967Mi       402Mi       154Mi       1.1Mi       561Mi       564Mi
Swap:          640Mi       268Ki       640Mi
  • free -h : 시스템의 RAM 및 swap 메모리 사용 현황을 요약해서 보여줌

lsblk
free -h
swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition 641M 268K   -2
  • swapon --show : 현재 활성화된 swap 영역 목록을 보여줌.

다. swap 비활성화

sudo swapoff -a
swapon --show

출력 없어야 정상.


라. swap 파티션 삭제

sudo fdisk /dev/sda
  • fdisk /dev/sda : 디스크 레이아웃 편집기. MBR 및 GPT 파티션 테이블을 수정할 수 있다.

p        # 현재 파티션 확인
d        # 삭제
5        # sda5 삭제
d        # 다시 삭제
2        # sda2 삭제
p        # 다시 확인 (sda1만 남아야 함)
w        # 저장 후 종료
Code language: PHP (php)

불필요한 파티션을 삭제한다.

OS가 설치된 파티션은 삭제하면 안된다. (여기선 sda1)


마. swapfile 생성

파티션 확장을 마치고 나서 다시 Swap을 활성화한다.

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

대신에 별도의 파티션을 할당하기 보다 파일을 할당한다.

단, swapon /swapfile은 재부팅하면 사라지기 때문에 부팅 시 실행할 명령어를 추가한다.

sudo vim /etc/fstab

# /etc/fstab
UUID-a... none swap sw 0 0 # 제거 또는 주석
/swapfile none swap sw 0 0 # 추가
Code language: PHP (php)
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2026-02-12_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_11.43.00.png

/swapfile만 부팅 시 자동으로 활성화되도록 /etc/fstab에 추가한다.

free -h
               total        used        free      shared  buff/cache   available
Mem:           967Mi       417Mi       172Mi       1.1Mi       529Mi       550Mi
Swap:          1.0Gi          0B       1.0Gi

확인.


댓글 남기기