백업 · 2 min read · Feb 14, 2026
LVM XEN 게스트 백업하기 (LV 포함)
LVM XEN 게스트 백업하기 (LV 포함)
내 직장에서 모든 리눅스 박스(3대를 제외하고)는 Xen VM입니다. 파일이 변경될 위험 없이 이러한 백업을 수행할 방법이 필요했습니다. 성능상의 이유로 모든 VM을 논리 볼륨(Logical Volumes)에서 실행하고 있습니다.
이 VM 내에서 DomU OS는 여러 가지 이유로 LVM을 다시 사용하고 있습니다. 이는 백업을 수행하는 데 몇 가지 문제를 일으킵니다.
기본 아이디어는 다음과 같습니다:
- 스냅샷 논리 볼륨 생성
- Dom0가 논리 볼륨 내의 논리 볼륨을 볼 수 있도록 허용
- 새로 발견된 논리 볼륨을 마운트
- 백업 수행
- 정리
내가 몇 가지 가정을 했습니다. Dom0(호스트) 또는 DomU(게스트)에서 볼륨 그룹에 사용자 정의 이름을 사용했다고 가정했습니다. 개인적으로 저는 항상 kickstart 파일을 사용하여 DomU를 생성하므로 주요 VG를 XenVG00으로 설정합니다. 모든 DomU는 Dom0의 vg_xen이라는 VG에 있습니다. 그러나 이는 필수는 아닙니다.
두 번째 가정은 DomU 이미지를 보유하고 있는 볼륨 그룹에 여유 공간이 있다는 것입니다. 많을 필요는 없으며, 스냅샷 볼륨을 사용한 후 제거할 것이기 때문입니다.
먼저 스냅샷을 생성해야 합니다:
[root@dom0 ~]# lvcreate -L 1G -s -n lv_snapshot /dev/vg_xen/lv_xen_snaptestLogical volume “lv_snapshot” created이것은 lv_xen_snaptest라는 Dom0 LV를 사용하는 DomU의 lv_snapshot이라는 스냅샷 볼륨을 생성합니다. 이는 이 LV의 이미지를 가져올 수 있기 때문에 유용합니다. 저는 재해 복구를 위해 정확히 이렇게 합니다 (dd if=/dev/vg_xen/lv_snapshot | bzip2 | dd of=/path/to/dr_image.bz2). 최악의 경우 이 이미지를 새로운 시스템의 새로운 논리 볼륨에 dd하여 새로운 Xen 인스턴스를 실행할 수 있습니다.
그러나 우리가 원하는 것은 이 스냅샷의 파일에 접근하는 것입니다. DomU가 LVM을 사용하고 있기 때문에 불행히도 이는 간단하지 않습니다. 먼저 kpartx를 사용하여 LV 데이터를 추출해야 합니다:
[root@dom0 ~]# kpartx -av /dev/vg_xen/lv_snapshotadd map lv_snapshot1 : 0 208782 linear /dev/vg_xen/lv_snapshot 63
add map lv_snapshot2 : 0 20755980 linear /dev/vg_xen/lv_snapshot 2088452개의 LV가 발견된 것을 볼 수 있습니다. lv_snapshot1이 더 작기 때문에 이는 스왑 파일이고 lv_snapshot2는 / 파일 시스템임을 알 수 있습니다. 이제 LVM이 이 LVs를 인식하고 활성화하도록 해야 합니다.
[root@dom0 ~]# vgscanReading all physical volumes. This may take a while…
Found volume group “vg_xen” using metadata type lvm2
Found volume group “XenVG00” using metadata type lvm2
Found volume group “VolGroup00” using metadata type lvm2[root@dom0 ~]# vgchange -ay XenVG002 logical volume(s) in volume group “XenVG00” now active이제 LVs가 활성화되었으므로 다른 디스크처럼 마운트할 수 있습니다.
[root@dom0 ~]# mount /dev/XenVG00/LVroot /mnt/원하는 명령을 실행할 수 있습니다.
[root@dom0 ~]# rsync -avhp /mnt/ /backup/xen_test/물론 이제 우리는 정리해야 합니다:
[root@dom0 ~]# umount /mnt
[root@dom0 ~]# vgchange -an XenVG000 logical volume(s) in volume group “XenVG00” now active[root@dom0 ~]# kpartx -d /dev/vg_xen/lv_snapshot
[root@dom0 ~]# lvremove /dev/vg_xen/lv_snapshotDo you really want to remove active logical volume “lv_snapshot”? [y/n]: y
Logical volume “lv_snapshot” successfully removed여기서 중요한 점은 VM을 일시 중지하지 않고도 전체 백업을 수행할 수 있었다는 것입니다.
스냅샷 볼륨의 크기가 여기서 어려운 부분입니다. 저는 1G 스냅샷 LV를 사용했습니다. 얼마나 커야 하는지에 대한 아이디어를 제공하기 위해: 제 위키의 DR 이미지가 생성되고 bzipped되어 SSH를 통해 다른 박스로 전송될 때까지 스냅샷 사용량이 거의 7%에 도달했습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.