리눅스에서 LVM을 사용하는 경우, 파티션 용량이 부족하면 기존 디스크 공간을 재할당하여 용량을 조정할 수 있다.
나의 경우, Docker 데이터가 /var/lib/docker 경로에 저장되면서 루트 디렉토리의 용량이 부족해졌다.

그러나 /home에는 여유 공간이 충분했기 때문에, /home의 일부 용량을 줄이고 그만큼 /root의 용량을 확장하는 방식을 사용했다.
LVM이란?
LVM(Logical Volume Manager)은 리눅스에서 스토리지를 유연하게 관리할 수 있도록 하는 논리적 볼륨 관리 시스템이다. 기존의 정적인 파티션 시스템과 달리, LVM을 사용하면 디스크 공간을 논리적으로 관리할 수 있으며, 시스템을 중단하지 않고도 파티션 크기를 조정할 수 있다.
LVM의 주요 개념은 다음과 같다.
- Physical Volume (PV, 물리 볼륨): 실제 물리적 디스크 또는 파티션
- Volume Group (VG, 볼륨 그룹): 여러 개의 PV를 묶어 하나의 논리적 스토리지 풀을 형성
- Logical Volume (LV, 논리 볼륨): VG에서 할당된 공간으로, 실제 파일 시스템이 위치하는 영역
파티션 크기를 변경하기 전에 먼저 lvdisplay 명령어를 통해 현재 시스템의 상태를 확인했다.

/root의 사이즈가 70G인 것을 확인할 수 있다.
데이터 백업
/home 볼륨의 크기를 줄이기 전에 파일 시스템 크기를 먼저 줄여야 한다. 그러나 Rocky Linux에서 기본적으로 사용되는 XFS 파일 시스템은 축소를 지원하지 않는다. 따라서 /home에 있는 데이터를 백업한 후, 기존 볼륨을 삭제하고 새로 생성하는 방식으로 진행해야 했다.
그러나 나는 현재 root 파티션의 남은 공간이 부족하여 /home의 데이터를 내부에 백업할 수 없었으므로, tar을 사용하여 /home 전체를 압축하여 로컬 컴퓨터에 다운로드했다.
tar -cvpzf home_backup.tar.gz /home
/home 볼륨 마운트 해제
먼저 umount 명령어를 통해 /home 볼륨의 마운트를 해제해야 한다.
umount /home

만약 위와 같은 출력이 발생한다면 아래의 명령어를 통해 /home을 사용 중인 프로세스를 확인해봐야 한다.
lsof /home
그리고 결과로 나온 프로세스들을 kill 해준다.
만약 제대로 umount된건지 확인하고 싶다면 mount | grep /home 명령어를 통해 확인할 수 있다. 해당 명령어를 입력했을 때, 출력이 있다면 언마운트되지 않은 것!
논리 볼륨 삭제
이제 home논리 볼륨을 삭제해야 한다.
lvremove /dev/mapper/rl_home # [파일 시스템 이름]
나의 경우, Couldn't create temporary archive name 오류가 발생했다.
LVM에서 논리 볼륨(LV)을 삭제할 때, 메타데이터를 백업하는 아카이브 파일이 생성된다. 기본적으로 생성되는 경로는 /var/lib이며.. /root 파티션이 꽉 차서 LVM이 아카이브를 만들 공간이 없어서 발생하는 오류였다.
10:11:38.512758 Archiving volume group "rl_home" metadata (seqno 4).
10:11:38.513019 Couldn't create temporary archive name.
공간 확보를 위해 실행 중이던 docker container을 삭제한 뒤, 다시 lvremove를 했더니 성공!
(사실 처음엔 컨테이너 지울 생각을 못하고 아카이브 파일 생성 위치를 root가 아닌 다른 파일시스템 경로로 바꾸려했다. 그러나 실패하고 .. 한참 헤매다 결국 컨테이너를 지우는 방식으로 진행함)


성공적으로 지웠다는 출력이 뜨면, vgs(volume group status) 명령어를 통해 /home의 공간 만큼 여유 공간이 늘어난 것을 확인할 수 있다.
/root 확장
확보한 388.79GB 중 150GB를 /root에 추가했다.
lvextend -L +150G /dev/mapper/rl_root # [파일 시스템 이름]

논리 볼륨 크기를 변경한 후에는 파일 시스템 자체의 크기도 조정해야 한다.
xfs_growfs /dev/mapper/rl_root
/home 재구성
남은 공간으로 /home을 새로 구성했다.
lvcreate -l 100%FREE -n home rl_home
이 때, warning 문구와 함께 이전 XFS 서명이 남아 있다는 경고가 뜨기도 하는데, y를 입력하면 정리된다.
그리고 파일시스템을 만들고, 다시 mount 하면 된다.
mkfs.xfs /dev/mapper/rl_home
mount /dev/mapper/rl_home /home
그 후, backup했던 tar 파일을 풀어주면 끝!

파일 시스템 용량이 변경된 것을 확인할 수 있다.
출처 : https://hyeyeonismm-dev.tistory.com/52