목차
- 1. 현재 상태 확인
- 1.1. LVM 구성 확인
- 1.2. 파일시스템 확인
- 2. home 볼륨 데이터 백업 및 재구성
- 2.1. 데이터 백업
- 2.2. home 볼륨 마운트 해제
- 2.3. home 볼륨 제거
- 2.4. home 볼륨 재생성 및 크기 축소
- 2.5. home 볼륨 마운트
- 2.6. 데이터 복구
- 3. root 볼륨 확장
- 4. 파일 시스템 크기 조정
- 5. 결과 확인
- 5.1. 논리 볼륨 상태 확인
- 5.2. 파일 시스템 상태 확인
자세히 알아보기
컴퓨터 드라이브 및 저장장치
네트워크
linux
서버 관리자나 리눅스 사용자라면 언젠가는 디스크 공간 재할당의 필요성을 느낄 때가 있다.
특히 home 디렉토리의 공간은 남아도는데 root 파티션의 공간이 부족한 상황은 자주 발생한다.
다행히도 Linux의 LVM(Logical Volume Manager)을 사용하면 시스템을 중단하지 않고도 파티션 크기를 동적으로 조정할 수 있다.
Rocky Linux 9 환경에서 LVM을 활용해 home 파티션의 크기를 줄이고 root 파티션을 확장하는 방법을 단계별로 알아보겠다.
1. 현재 상태 확인
1.1. LVM 구성 확인
파티션 크기를 변경하기 전에 먼저 현재 시스템의 상태를 확인해야 한다. 다음 명령어를 사용하여 현재 LVM 구성을 살펴본다.
sudo lvdisplay
--- Logical volume --- |
LV Path /dev/rl/swap |
LV Name swap |
VG Name rl |
LV UUID OHEye1-DIcJ-Yu5I-0kuk-sLrg-eDoW-o6OY90 |
LV Write Access read/write |
LV Creation host, time localhost.localdomain, 2024-06-26 21:00:21 +0900 |
LV Status available |
# open 0 |
LV Size 7.76 GiB |
Current LE 1987 |
Segments 1 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:1 |
--- Logical volume --- |
LV Path /dev/rl/home |
LV Name home |
VG Name rl |
LV UUID jJ1ptS-UjV3-fUnu-X0Dd-zcCf-yGQ4-IZe38Z |
LV Write Access read/write |
LV Creation host, time localhost.localdomain, 2024-06-26 21:00:21 +0900 |
LV Status available |
# open 1 |
LV Size <397.59 GiB |
Current LE 101783 |
Segments 1 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:2 |
--- Logical volume --- |
LV Path /dev/rl/root |
LV Name root |
VG Name rl |
LV UUID 6oYmwa-ac8r-dQBo-xOn6-aENh-t2Tk-7rfRFe |
LV Write Access read/write |
LV Creation host, time localhost.localdomain, 2024-06-26 21:00:22 +0900 |
LV Status available |
# open 1 |
LV Size 70.00 GiB |
Current LE 17920 |
Segments 1 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:0 |
현재 논리 볼륨의 크기와 사용 가능한 공간을 확인할 수 있다.
1.2. 파일시스템 확인
또한, 볼륨 축소를 위해 파일시스템의 이름을 확인한다.
df -h
Filesystem Size Used Avail Use% Mounted on |
devtmpfs 4.0M 0 4.0M 0% /dev |
tmpfs 7.6G 0 7.6G 0% /dev/shm |
tmpfs 3.1G 301M 2.8G 10% /run |
/dev/mapper/rl-root 70G 22G 49G 32% / |
/dev/sda2 960M 504M 457M 53% /boot |
/dev/sda1 599M 7.1M 592M 2% /boot/efi |
/dev/mapper/rl-home 398G 18G 380G 5% /home |
2. home 볼륨 데이터 백업 및 재구성
2.1. 데이터 백업
home 볼륨의 크기를 줄이기 위해서는 먼저 파일 시스템의 크기를 줄여야 한다.
그러나 rocky linux에서 기본적으로 사용되는 xfs 파일 시스템은 축소를 지원하지 않는다.
그러므로 home 볼륨의 데이터를 외부 저장소나 다른 볼륨에 백업한 후 볼륨을 재구성 한다.
나의 경우 root의 공간이 남아 root로 백업해뒀다.
sudo mv $HOME /
2.2. home 볼륨 마운트 해제
sudo umount /home
만약 'umount: /home: target is busy.'이 발생한다면 아래 명령어를 통해 /home 디렉토리를 사용 중인 모든 프로세스를 찾아 강제로 종료 시킨 후 다시 umount를 진행한다.
fuser -ck /home
fuser: 파일이나 디렉토리를 사용 중인 프로세스를 식별하는 명령어
-c: 파일 시스템으로서의 디렉토리를 지정
-k: 찾은 프로세스를 강제로 종료
2.3. home 볼륨 제거
sudo lvremove /dev/rl/home
Do you really want to remove active logical volume rl/home? [y/n]: y |
Logical volume "home" successfully removed. |
2.4. home 볼륨 재생성 및 크기 축소
home 볼륨을 필요한 크기로 재생성한다. 나의 경우 home 볼륨을 100GB로 만들었다.
sudo lvcreate -L 100G -n home rl
WARNING: xfs signature detected on /dev/rl/home at offset 0. Wipe it? [y/n]: y |
Wiping xfs signature on /dev/rl/home. |
Logical volume "home" created. |
sudo mkfs.xfs /dev/rl/home
meta-data=/dev/rl/home isize=512 agcount=4, agsize=6553600 blks |
= sectsz=512 attr=2, projid32bit=1 |
= crc=1 finobt=1, sparse=1, rmapbt=0 |
= reflink=1 bigtime=1 inobtcount=1 nrext64=0 |
data = bsize=4096 blocks=26214400, imaxpct=25 |
= sunit=0 swidth=0 blks |
naming =version 2 bsize=4096 ascii-ci=0, ftype=1 |
log =internal log bsize=4096 blocks=16384, version=2 |
= sectsz=512 sunit=0 blks, lazy-count=1 |
realtime =none extsz=4096 blocks=0, rtextents=0 |
Discarding blocks...Done. |
2.5. home 볼륨 마운트
sudo mount /dev/rl/home /home
2.6. 데이터 복구
백업한 데이터를 home 볼륨에 복구한다.
나의 경우 root로 백업해둔 데이터를 복구한다.
sudo mv <백업 디렉토리> $HOME
3. root 볼륨 확장
이제 root 볼륨의 크기를 늘릴 차례이다. home 볼륨에서 축소한 공간을 root 볼륨에 추가한다.
sudo lvextend -L +297.58G /dev/rl/root
Rounding size to boundary between physical extents: 297.58 GiB. |
Size of logical volume rl/root changed from 70.00 GiB (17920 extents) to 367.58 GiB (94101 extents). |
Logical volume rl/root successfully resized. |
4. 파일 시스템 크기 조정
논리 볼륨의 크기를 변경한 후에는 파일 시스템 자체의 크기도 조정해야 한다. Rocky Linux 9는 기본적으로 xfs 파일 시스템을 사용하므로 다음 명령어를 사용한다.
sudo xfs_growfs /dev/mapper/rl-root
meta-data=/dev/mapper/rl-root isize=512 agcount=22, agsize=4587520 blks |
= sectsz=512 attr=2, projid32bit=1 |
= crc=1 finobt=1, sparse=1, rmapbt=0 |
= reflink=1 bigtime=1 inobtcount=1 nrext64=0 |
data = bsize=4096 blocks=96359424, imaxpct=25 |
= sunit=0 swidth=0 blks |
naming =version 2 bsize=4096 ascii-ci=0, ftype=1 |
log =internal log bsize=4096 blocks=16384, version=2 |
= sectsz=512 sunit=0 blks, lazy-count=1 |
realtime =none extsz=4096 blocks=0, rtextents=0 |
5. 결과 확인
5.1. 논리 볼륨 상태 확인
sudo lvdisplay
--- Logical volume --- |
LV Path /dev/rl/swap |
LV Name swap |
VG Name rl |
LV UUID OHEye1-DIcJ-Yu5I-0kuk-sLrg-eDoW-o6OY90 |
LV Write Access read/write |
LV Creation host, time localhost.localdomain, 2024-06-26 21:00:21 +0900 |
LV Status available |
# open 0 |
LV Size 7.76 GiB |
Current LE 1987 |
Segments 1 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:1 |
--- Logical volume --- |
LV Path /dev/rl/root |
LV Name root |
VG Name rl |
LV UUID 6oYmwa-ac8r-dQBo-xOn6-aENh-t2Tk-7rfRFe |
LV Write Access read/write |
LV Creation host, time localhost.localdomain, 2024-06-26 21:00:22 +0900 |
LV Status available |
# open 1 |
LV Size 367.58 GiB |
Current LE 94101 |
Segments 2 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:0 |
--- Logical volume --- |
LV Path /dev/rl/home |
LV Name home |
VG Name rl |
LV UUID FduIfl-exFD-Gh9K-ieXD-klUw-wTwm-x0AMOE |
LV Write Access read/write |
LV Creation host, time k8s-master01, 2024-07-25 22:38:46 +0900 |
LV Status available |
# open 1 |
LV Size 100.00 GiB |
Current LE 25600 |
Segments 1 |
Allocation inherit |
Read ahead sectors auto |
- currently set to 256 |
Block device 253:2 |
5.2. 파일 시스템 상태 확인
df -h
Filesystem Size Used Avail Use% Mounted on |
devtmpfs 4.0M 0 4.0M 0% /dev |
tmpfs 7.6G 0 7.6G 0% /dev/shm |
tmpfs 3.1G 301M 2.8G 10% /run |
/dev/mapper/rl-root 368G 19G 350G 6% / |
/dev/sda2 960M 504M 457M 53% /boot |
/dev/sda1 599M 7.1M 592M 2% /boot/efi |
/dev/mapper/rl-home 100G 16G 85G 16% /home |
root의 size가 확장된 것을 확인할 수 있다.
출처 : https://jjaegii.tistory.com/31