사용 중인 LVM에서 데이터 손실 없이 물리하드 교체하기

바쁜 현대인을 위해 빠른 요약: resize2fs, lvreduce, vgreduce, pvremove 사용하면 됨.

  1. 왜 이짓을 하는가?
    1. 저장공간이 충분한 경우, 풀 백업 후 하드웨어 교체가 단순하고, (평소에 백업해뒀다면)시간도 적게 들 수 있다. 제대로 백업 했다면 데이터 유실 가능성도 줄어든다. 사실 내 저장공간은 충분했다.
    2. 작업하는 LV에서 빠지는 PV 용량만큼 빈 공간이 있었다. 빈공간이 없다면 이 방법으로 작업 불가. 외장하드라도 붙여서 추가 하드에 pvmove, 교체 하드에 다시 pvmove 방식으로 데이터 손실 없는 LVM 디스크 교체가 가능할 듯.
    3. LVM이 유연한(확장 extent, 줄이기 shrink) 볼륨 관리가 된다고 해서 그냥 해봤다.
  2. ‘/’ 경로가 아닌 한 리부팅 안 해도 되고 온라인 상에서 가능 – unmount 해야 하니 해당 파일 시스템을 사용 중이면 안됨)
  3. 많은 경우의 수가 있고 LVM에 대해 정확하게 알고 있지도 않으니 그냥 내가 한 내용만 나열하였다.

상황

디스크 500 GB (sda), 1000 GB (sdb) 를 LVM Logical Volume “vz”으로 묶음 (500 GB, 이후 sda. 쪽에 자잘한 파티션이 몇 개 더 있음). LV “vz”는 하나의 ext4 파일 시스템 “/home”으로 사용 중.

최종 목표

LV “vz”의 데이터 소실 없이 sda를 다른 하드로 교체한다.

진행

PV – VG – LV – filesystem (ext4) – LVM 사용한 파일 시스템의 구조를 역순으로 줄여나가면 됨.

umount /home
e2fsck -f /dev/vg01/vz
resize2fs /dev/vg01/vz 876G
lvreduce -L 876G /dev/vg01/vz
resize2fs /dev/vg01/vz
vgreduce vg01 /dev/sda6
pvremove -v /dev/sd

설명

  1. umount 작업 대상이 사용 중인 “/home”이었기 때문에 root로 바로 로그인 해서 umount 해야 했다. lsof 로 “/home” 사용 중인 서비스나 프로그램 종료 필요.
  2. e2fsck 파일 시스템 체크.
  3. resize2fs ext2, ext3, ext4 파일 시스템 사이즈 변경. 확장(extent), 줄이기 (shrink) 명령. 다른 파일 시스템은 실행 파일이 다르거나 안 될 수 있다.
  4. lvreduce: Logical Volume 사이즈 변경
  5. vgreduce: Volume Group 에서 PV 분리
  6. pvremove: LVM에서 PV 완전 제거

디스크 두 개 설치 가능한 맥미니에서 작업하느라 삽질을 했다. 디스크 베이 공간이 있다면 새 하드 추가 후 pvmove 명령으로 기존 PV를 새 디스크 LVM 영역으로 옮길 수 있다 한다.

참고한 링크