Skip to Content
Infra & DevOpsCentOS LVM에서 /home 공간을 루트 볼륨으로 옮기기
☁️ Infra & DevOps2018년 1월 24일

CentOS LVM에서 /home 공간을 루트 볼륨으로 옮기기

#centos#lvm#linux#partition#infra#flamingo

같은 볼륨 그룹에 속한 /home의 크기를 줄이고 루트 볼륨을 늘렸던 기록입니다. LVM에서는 볼륨 그룹의 여유 공간을 논리 볼륨에 다시 할당할 수 있지만, 파일시스템이 지원하는 작업도 함께 확인해야 합니다.

당시 메모에는 /home을 10GiB로 줄이는 방법과, 데이터를 다른 곳에 보관한 뒤 /home 볼륨을 없애는 방법이 있었습니다. 두 번째 방법까지 포함하면 마운트와 데이터 이동이 필요한 작업이므로 무중단 변경으로 소개할 수는 없습니다.

파일시스템과 볼륨 그룹 확인

먼저 마운트 위치와 파일시스템 종류, 논리 볼륨 크기와 볼륨 그룹의 여유 공간을 확인합니다.

bash
df -hT lvs vgs

/home과 /가 같은 볼륨 그룹에 있어야 줄인 공간을 루트 볼륨에 할당할 수 있습니다. 줄이려는 크기가 현재 데이터보다 충분히 큰지도 확인해야 합니다.

볼륨 축소 전에 데이터 백업과 복구 경로를 준비합니다. /home을 사용하는 로그인 세션과 프로세스를 정리하고 마운트를 해제할 수 있는 작업 시간을 잡아야 합니다.

/home 축소와 루트 확장

다음은 당시 기록에 남은 명령입니다. 장치 이름과 10GiB라는 크기는 그 장비의 구성에 해당합니다. 축소를 지원하는 파일시스템과 충분한 여유 공간을 확인한 경우에만 적용할 수 있습니다.

bash
umount /home lvreduce -r -L 10G /dev/VolGroup/lv_home lvresize -r -l+100%FREE /dev/VolGroup/lv_root mount /home df -h

lvreduce -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 /로 실제 구성을 다시 확인합니다.

참고 자료

Last updated on