CentOS LVM에서 /home 공간을 루트 볼륨으로 옮기기
같은 볼륨 그룹에 속한 /home의 크기를 줄이고 루트 볼륨을 늘렸던 기록입니다. LVM에서는 볼륨 그룹의 여유 공간을 논리 볼륨에 다시 할당할 수 있지만, 파일시스템이 지원하는 작업도 함께 확인해야 합니다.
당시 메모에는 /home을 10GiB로 줄이는 방법과, 데이터를 다른 곳에 보관한 뒤 /home 볼륨을 없애는 방법이 있었습니다. 두 번째 방법까지 포함하면 마운트와 데이터 이동이 필요한 작업이므로 무중단 변경으로 소개할 수는 없습니다.
파일시스템과 볼륨 그룹 확인
먼저 마운트 위치와 파일시스템 종류, 논리 볼륨 크기와 볼륨 그룹의 여유 공간을 확인합니다.
df -hT
lvs
vgs/home과 /가 같은 볼륨 그룹에 있어야 줄인 공간을 루트 볼륨에 할당할 수 있습니다. 줄이려는 크기가 현재 데이터보다 충분히 큰지도 확인해야 합니다.
볼륨 축소 전에 데이터 백업과 복구 경로를 준비합니다. /home을 사용하는 로그인 세션과 프로세스를 정리하고 마운트를 해제할 수 있는 작업 시간을 잡아야 합니다.
/home 축소와 루트 확장
다음은 당시 기록에 남은 명령입니다. 장치 이름과 10GiB라는 크기는 그 장비의 구성에 해당합니다. 축소를 지원하는 파일시스템과 충분한 여유 공간을 확인한 경우에만 적용할 수 있습니다.
umount /home
lvreduce -r -L 10G /dev/VolGroup/lv_home
lvresize -r -l+100%FREE /dev/VolGroup/lv_root
mount /home
df -hlvreduce -r은 파일시스템을 먼저 줄인 뒤 논리 볼륨을 줄이도록 요청합니다. 논리 볼륨만 먼저 줄이면 데이터가 있는 영역을 잘라낼 수 있습니다. 명령이 실패하면 원인을 확인해야 하며, -r을 빼고 강제로 진행하는 방식으로 우회하면 안 됩니다.
+100%FREE는 해당 볼륨 그룹에 남은 여유 공간을 모두 사용합니다. 다른 볼륨이나 이후 작업에 남겨 둘 공간이 필요하다면 전체를 할당하지 않아야 합니다.
기록의 결과에서는 /home이 약 9.9GiB, 루트 파일시스템이 약 426GiB로 표시됐습니다. 이 값은 당시 장비에서 확인한 결과이며 다른 장비의 적정 크기를 뜻하지는 않습니다.
XFS의 축소 제한
당시 CentOS·RHEL에서 사용한 XFS는 파일시스템 축소를 지원하지 않습니다. LVM을 쓴다는 이유만으로 그 위의 XFS도 줄일 수 있는 것은 아닙니다.
축소할 수 없는 파일시스템이라면 데이터를 다른 저장소에 백업하고, 볼륨 구성을 새로 만든 뒤 복원하는 절차를 따로 계획해야 합니다. 기존 볼륨을 삭제하는 명령은 백업의 대체 수단이 아닙니다.
별도 /home 볼륨 제거 시 확인
원래 메모의 두 번째 방법은 /home 데이터를 보관하고 기존 볼륨을 제거한 뒤, 루트 파일시스템 아래의 /home으로 옮기는 방식이었습니다.
이때 mv /home/*만으로 옮기면 숨김 파일이 빠질 수 있습니다. 소유권과 권한, ACL·확장 속성 등 필요한 메타데이터를 보존하는 백업·복원 방법을 정해야 합니다. 루트에 백업을 둘 계획이라면 확장 전에 그 데이터를 받을 공간이 있는지도 확인해야 합니다.
복원 후에는 사용자 홈 디렉터리가 맞는지 확인하고, /etc/fstab에서 더 이상 사용하지 않는 마운트 항목을 정리합니다. 경로가 같아 보여도 마운트 상태가 달라질 수 있으므로 findmnt /home과 df -hT /home /로 실제 구성을 다시 확인합니다.