백업 · 2 min read · Feb 14, 2026

LVM XEN 게스트 백업하기 (LV 포함)

LVM XEN 게스트 백업하기 (LV 포함)

내 직장에서 모든 리눅스 박스(3대를 제외하고)는 Xen VM입니다. 파일이 변경될 위험 없이 이러한 백업을 수행할 방법이 필요했습니다. 성능상의 이유로 모든 VM을 논리 볼륨(Logical Volumes)에서 실행하고 있습니다.

이 VM 내에서 DomU OS는 여러 가지 이유로 LVM을 다시 사용하고 있습니다. 이는 백업을 수행하는 데 몇 가지 문제를 일으킵니다.

기본 아이디어는 다음과 같습니다:

  1. 스냅샷 논리 볼륨 생성
  2. Dom0가 논리 볼륨 내의 논리 볼륨을 볼 수 있도록 허용
  3. 새로 발견된 논리 볼륨을 마운트
  4. 백업 수행
  5. 정리

내가 몇 가지 가정을 했습니다. 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_snaptest
Logical 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_snapshot
add map lv_snapshot1 : 0 208782 linear /dev/vg_xen/lv_snapshot 63  
add map lv_snapshot2 : 0 20755980 linear /dev/vg_xen/lv_snapshot 208845

2개의 LV가 발견된 것을 볼 수 있습니다. lv_snapshot1이 더 작기 때문에 이는 스왑 파일이고 lv_snapshot2는 / 파일 시스템임을 알 수 있습니다. 이제 LVM이 이 LVs를 인식하고 활성화하도록 해야 합니다.

[root@dom0 ~]# vgscan
Reading 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 XenVG00
2 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 XenVG00
0 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_snapshot
Do 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%에 도달했습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.