CentOS LVM 환경에서 /home 볼륨 제거 및 루트 볼륨 확장

문제 상황

CentOS 기본 설치 시 루트(/) 볼륨은 50GB로 제한되고, /home은 약 957GB나 할당되는 경우가 많습니다. 대부분의 애플리케이션과 패키지는 /home이 아닌 루트 경로에 설치되므로, 이 공간 분배는 실무 환경에서 비효율적입니다. 본 문서에서는 /home 논리 볼륨을 제거하고 해당 공간을 루트 볼륨에 통합하는 방법을 설명합니다.

현재 스토리지 구조 확인

먼저 전체 디스크 및 볼륨 구성을 파악합니다.

[root@server01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.1G   48G   5% /
/dev/mapper/centos-home  957G   40M  957G   1% /home

물리적 디스크와 LVM 계층 구조를 lsblk로 확인합니다.

[root@server01 ~]# lsblk
NAME            MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda               8:0    0      1T  0 disk
├─sda1            8:1    0    200M  0 part /boot/efi
├─sda2            8:2    0      1G  0 part /boot
└─sda3            8:3    0 1022.8G  0 part
  ├─centos-root 253:0    0     50G  0 lvm  /
  ├─centos-swap 253:1    0   15.8G  0 lvm  [SWAP]
  └─centos-home 253:2    0    957G  0 lvm  /home

데이터 보관 및 서비스 중지

/home 내 모든 데이터를 임시 경로로 복사합니다. -a 옵션으로 권한과 속성을 그대로 유지합니다.

[root@server01 ~]# mkdir -p /var/tmp/home_archive
[root@server01 ~]# cp -a /home/* /var/tmp/home_archive/

해당 경로를 참조할 가능성이 있는 서비스를 중지합니다.

[root@server01 ~]# systemctl stop crond
[root@server01 ~]# systemctl stop atd || echo "atd not installed"

파일 시스템 언마운트

사용 중인 프로세스가 없는지 확인 후 강제 언마운트를 수행합니다.

[root@server01 ~]# umount -l /home
[root@server01 ~]# lsof /home 2>/dev/null || echo "No active processes on /home"

논리 볼륨 제거

기존 centos-home 논리 볼륨을 삭제하여 볼륨 그룹 내 여유 공간을 확보합니다.

[root@server01 ~]# lvremove /dev/centos/home
Do you really want to remove active logical volume centos/home? [y/n]: y
  Logical volume "home" successfully removed

루트 볼륨 확장

볼륨 그룹에서 남은 모든 여유 공간(extent)을 centos-root에 할당합니다.

[root@server01 ~]# lvextend -l +100%FREE /dev/centos/root
  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 1007.05 GiB (257805 extents).
  Logical volume centos/root successfully resized.

파일 시스템 확장

XFS 파일 시스템의 경우 온라인 확장이 가능하며, xfs_growfs를 실행해야 실제 파일 시스템 크기가 반영됩니다.

[root@server01 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=3276800 blks
...
data blocks changed from 13107200 to 263992320

부팅 설정 수정

/etc/fstab에서 /home에 대한 마운트 항목을 제거하거나 주석 처리합니다. 미수정 시 부팅 시 오류가 발생할 수 있습니다.

[root@server01 ~]# sed -i '/\/home/s/^/# /' /etc/fstab
[root@server01 ~]# grep -v '^#' /etc/fstab | grep -v '^$'

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=29b0e279-9b23-46ed-9271-31726f790177 /boot                   xfs     defaults        0 0
UUID=F141-4160          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

설정 검증 및 데이터 복원

mount -a로 fstab 문법 오류 여부를 확인합니다.

[root@server01 ~]# mount -a

오류가 없으면 백업한 데이터를 원래 위치로 이동합니다.

[root@server01 ~]# mkdir -p /home
[root@server01 ~]# cp -a /var/tmp/home_archive/* /home/
[root@server01 ~]# ls -la /home/
drwx------. 2 admin admin 83 Aug 26 10:12 admin
drwxr-xr-x. 2 root  root  26 Aug 26 09:55 scripts

최종 상태 확인

확장된 루트 볼륨이 정상적으로 마운트되었는지 검증합니다.

[root@server01 ~]# lsblk
NAME            MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda               8:0    0      1T  0 disk
├─sda1            8:1    0    200M  0 part /boot/efi
├─sda2            8:2    0      1G  0 part /boot
└─sda3            8:3    0 1022.8G  0 part
  ├─centos-root 253:0    0 1007.1G  0 lvm  /
  └─centos-swap 253:1    0   15.8G  0 lvm  [SWAP]

[root@server01 ~]# df -h /
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root 1008G  2.1G 1006G   1% /

시스템을 재부팅하여 변경 사항이 영구적으로 적용되는지 최종 확인합니다.

[root@server01 ~]# reboot

태그: CentOS LVM Logical Volume Management xfs_growfs lvremove

7월 21일 16:39에 게시됨