LVM 백업 · 6 min read · Nov 05, 2025
LVM 스냅샷으로 LVM 파티션 백업(및 복원)하기
LVM 스냅샷으로 LVM 파티션 백업(및 복원)하기
버전 1.1
저자: Falko Timme
이 튜토리얼에서는 LVM 스냅샷이라는 LVM 기능을 사용하여 LVM 파티션의 백업을 만드는 방법을 보여줍니다. LVM 스냅샷은 스냅샷이 생성된 시점의 LVM 볼륨의 모든 데이터를 포함하는 LVM 파티션의 정확한 복사본입니다. LVM 스냅샷의 큰 장점은 스냅샷이 일반적으로 몇 초의 일부에서 생성되기 때문에 백업 중에 서비스/데이터베이스가 다운되는 시간을 크게 줄일 수 있다는 것입니다. 스냅샷이 생성된 후에는 서비스와 데이터베이스가 정상적으로 작동하는 동안 스냅샷을 백업할 수 있습니다.
이 튜토리얼의 마지막 장에서는 백업에서 LVM 파티션을 복원하는 방법도 보여드리겠습니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이 방법이 귀하에게 효과가 있을 것이라는 보장을 하지 않습니다!
1 사전 참고
저는 IP 주소가 192.168.0.100이고 호스트 이름이 server1.example.com인 Debian Etch 서버에서 이 작업을 테스트했습니다. 두 개의 하드 디스크가 있습니다:
- /dev/sda (10GB)에는 작은 /boot 파티션(비-LVM), / 파티션(LVM, 약 10GB 미만), 스왑 파티션(LVM)이 포함되어 있습니다.
- /dev/sdb (60GB)는 현재 사용되지 않으며, 30GB의 /backups 파티션(LVM)과 / 파티션의 스냅샷(10GB - / 파티션이 약 10GB 미만이기 때문에 충분합니다)을 생성하는 데 사용됩니다.
저는 다운로드하여 VMware Server 또는 VMware Player에서 실행할 수 있는 Debian Etch VMware 이미지를 만들었습니다(방법은 https://www.howtoforge.com/import_vmware_images를 참조하십시오). 이 이미지는 위의 테스트 시스템과 동일한 사양을 가지고 있습니다. 루트 비밀번호는 howtoforge입니다. 이 VMware 이미지를 사용하면 이 튜토리얼에서 저와 동일한 단계를 수행하여 LVM 스냅샷 사용에 익숙해질 수 있습니다.
백업에서 / 파티션을 복원하려면(이 튜토리얼의 마지막 장에서 다룹니다) LVM을 지원하는 Linux Live-CD가 필요합니다. 예를 들어 Knoppix 또는 rescue 부팅 프롬프트에서 rescue를 지정하여 사용할 수 있는 Debian Etch Netinstall CD가 있습니다. 이 예제에서는 Debian Etch Netinstall CD를 사용할 것입니다(미러 목록은 여기에서 확인할 수 있습니다: http://www.debian.org/CD/http-ftp/ - 저는 이 파일을 다운로드했습니다: http://ftp.de.debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso).
/ 파티션의 백업을 생성하기 위해 다음과 같이 진행하겠습니다: / 파티션의 스냅샷을 생성한 후, /backups 파티션에 스냅샷의 백업(실제 / 파티션 대신!)을 생성합니다(물론, 이 백업은 원하는 위치에 저장할 수 있습니다 - 추가 /backups LVM 파티션을 생성하는 대신 외부 USB 드라이브를 사용할 수도 있습니다). 백업은 선호하는 백업 솔루션을 사용하여 생성할 수 있습니다. 예를 들어 tar 또는 dd를 사용할 수 있습니다. 그 후, 더 이상 필요하지 않으므로 스냅샷을 삭제하겠습니다.
스냅샷을 위해 반드시 두 번째 HDD가 필요하지는 않습니다 - 스냅샷을 생성할 수 있는 충분한 여유(파티션되지 않은) 공간이 남아 있다면 첫 번째 HDD를 사용할 수 있습니다(백업하려는 파티션에 사용하는 것과 동일한 공간을 스냅샷에 사용해야 합니다). 그리고 앞서 언급했듯이, 스냅샷을 백업하는 데 USB 드라이브를 사용할 수 있습니다.
LVM에 대해 더 알아보려면 이 튜토리얼을 읽어야 합니다: https://www.howtoforge.com/linux_lvm
2 /backups LVM 파티션 생성하기
(백업을 다른 곳에 저장하고 싶다면, 예를 들어 외부 USB 드라이브에 저장하고 싶다면 이 작업을 수행할 필요는 없습니다.)
현재 상황은 다음과 같습니다:
pvdisplayserver1:~# pvdisplay
— 물리적 볼륨 —
PV 이름 /dev/sda5
VG 이름 server1
PV 크기 9.76 GB / 사용 불가 0
할당 가능 예 (하지만 가득 참)
PE 크기 (KByte) 4096
총 PE 2498
여유 PE 0
할당된 PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
vgdisplayserver1:~# vgdisplay
— 볼륨 그룹 —
VG 이름 server1
시스템 ID
형식 lvm2
메타데이터 영역 1
메타데이터 시퀀스 번호 3
VG 접근 읽기/쓰기
VG 상태 크기 조정 가능
최대 LV 0
현재 LV 2
열린 LV 2
최대 PV 0
현재 PV 1
활성 PV 1
VG 크기 9.76 GB
PE 크기 4.00 MB
총 PE 2498
할당 PE / 크기 2498 / 9.76 GB
여유 PE / 크기 0 / 0
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplayserver1:~# lvdisplay
— 논리 볼륨 —
LV 이름 /dev/server1/root
VG 이름 server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV 쓰기 접근 읽기/쓰기
LV 상태 사용 가능
LV 크기 9.30 GB
현재 LE 2382
세그먼트 1
할당 상속
읽기 앞섰던 섹터 0
블록 장치 254:0
— 논리 볼륨 —
LV 이름 /dev/server1/swap_1
VG 이름 server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV 쓰기 접근 읽기/쓰기
LV 상태 사용 가능
LV 크기 464.00 MB
현재 LE 116
세그먼트 1
할당 상속
읽기 앞섰던 섹터 0
블록 장치 254:1
fdisk -lserver1:~# fdisk -l
디스크 /dev/sda: 10.7 GB, 10737418240 바이트
255 헤드, 63 섹터/트랙, 1305 실린더
단위 = 16065 * 512 = 8225280 바이트의 실린더
장치 부팅 시작 끝 블록 Id 시스템
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 확장
/dev/sda5 32 1305 10233373+ 8e Linux LVM
디스크 /dev/sdb: 64.4 GB, 64424509440 바이트
255 헤드, 63 섹터/트랙, 7832 실린더
단위 = 16065 * 512 = 8225280 바이트의 실린더
디스크 /dev/sdb에는 유효한 파티션 테이블이 포함되어 있지 않습니다.
디스크 /dev/dm-0: 9990 MB, 9990832128 바이트
255 헤드, 63 섹터/트랙, 1214 실린더
단위 = 16065 * 512 = 8225280 바이트의 실린더
디스크 /dev/dm-0에는 유효한 파티션 테이블이 포함되어 있지 않습니다.
디스크 /dev/dm-1: 486 MB, 486539264 바이트
255 헤드, 63 섹터/트랙, 59 실린더
단위 = 16065 * 512 = 8225280 바이트의 실린더
디스크 /dev/dm-1에는 유효한 파티션 테이블이 포함되어 있지 않습니다.
따라서 /dev/sda에는 논리 볼륨 /dev/server1/root ( / 파티션) 및 /dev/server1/swap_1 (스왑 파티션)과 작은 /boot 파티션(비-LVM)이 포함되어 있습니다.
(참고로, /dev/server1/root는 Debian Etch에서 /dev/mapper/server1-root와 동일합니다. 첫 번째는 두 번째에 대한 심볼릭 링크입니다. 이 튜토리얼에서는 두 가지 표기를 모두 사용할 것입니다. /dev/server1/swap_1와 /dev/mapper/server1-swap_1도 마찬가지입니다.)
이제 /dev/sdb1 파티션을 생성하고 이를 server1 볼륨 그룹에 추가한 후, /dev/server1/backups 볼륨(전체 60GB 대신 30GB로 생성하여 스냅샷을 위한 충분한 공간을 남기겠습니다)을 생성하고 이를 /backups에 마운트하겠습니다:
fdisk /dev/sdbserver1:~# fdisk /dev/sdb
장치에는 유효한 DOS 파티션 테이블이나 Sun, SGI 또는 OSF 디스크 레이블이 포함되어 있지 않습니다.
새로운 DOS 디스크 레이블을 작성하고 있습니다. 변경 사항은 메모리에만 남아 있으며,
작성하기로 결정할 때까지는 그렇습니다. 그 후에는 물론 이전 내용은 복구할 수 없습니다.
이 디스크의 실린더 수는 7832로 설정되어 있습니다.
그것에 잘못된 것은 없지만, 이는 1024보다 크며, 특정 설정에서 다음과 같은 문제를 일으킬 수 있습니다:
- 부팅 시 실행되는 소프트웨어(예: 오래된 LILO 버전)
- 다른 OS에서 부팅 및 파티셔닝 소프트웨어(예: DOS FDISK, OS/2 FDISK) 경고: 파티션 테이블 4의 잘못된 플래그 0x0000이 w(rite)에 의해 수정됩니다.
명령 (도움말은 m): <– n
명령 작업
e 확장
p 기본 파티션 (1-4)
<– p
파티션 번호 (1-4): <– 1
첫 번째 실린더 (1-7832, 기본값 1): <– [ENTER]
기본값 1 사용
마지막 실린더 또는 +크기 또는 +크기M 또는 +크기K (1-7832, 기본값 7832): <– [ENTER]
기본값 7832 사용
명령 (도움말은 m): <– t
선택된 파티션 1
16진수 코드 (코드를 나열하려면 L 입력): <– 8e
파티션 1의 시스템 유형이 8e (Linux LVM)로 변경되었습니다.
명령 (도움말은 m): <– w
파티션 테이블이 변경되었습니다!
파티션 테이블을 다시 읽기 위해 ioctl() 호출 중입니다.
디스크 동기화 중입니다.
pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate –name backups –size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups
이제 /dev/server1/backups 볼륨을 /backups에 마운트합시다:
mount /dev/mapper/server1-backups /backups시스템을 부팅할 때마다 해당 볼륨이 자동으로 마운트되도록 하려면 /etc/fstab을 편집하고 다음과 같은 줄을 추가해야 합니다:
vi /etc/fstab| [...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |
이제 우리의 새로운 상황은 다음과 같습니다:
pvdisplayserver1:~# pvdisplay
— 물리적 볼륨 —
PV 이름 /dev/sda5
VG 이름 server1
PV 크기 9.76 GB / 사용 불가 0
할당 가능 예 (하지만 가득 참)
PE 크기 (KByte) 4096
총 PE 2498
여유 PE 0
할당된 PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
— 물리적 볼륨 —
PV 이름 /dev/sdb1
VG 이름 server1
PV 크기 59.99 GB / 사용 불가 0
할당 가능 예
PE 크기 (KByte) 4096
총 PE 15358
여유 PE 7678
할당된 PE 7680
PV UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO
vgdisplayserver1:~# vgdisplay
— 볼륨 그룹 —
VG 이름 server1
시스템 ID
형식 lvm2
메타데이터 영역 2
메타데이터 시퀀스 번호 5
VG 접근 읽기/쓰기
VG 상태 크기 조정 가능
최대 LV 0
현재 LV 3
열린 LV 3
최대 PV 0
현재 PV 2
활성 PV 2
VG 크기 69.75 GB
PE 크기 4.00 MB
총 PE 17856
할당 PE / 크기 10178 / 39.76 GB
여유 PE / 크기 7678 / 29.99 GB
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplayserver1:~# lvdisplay
— 논리 볼륨 —
LV 이름 /dev/server1/root
VG 이름 server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV 쓰기 접근 읽기/쓰기
LV 상태 사용 가능
LV 크기 9.30 GB
현재 LE 2382
세그먼트 1
할당 상속
읽기 앞섰던 섹터 0
블록 장치 254:0
— 논리 볼륨 —
LV 이름 /dev/server1/swap_1
VG 이름 server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV 쓰기 접근 읽기/쓰기
LV 상태 사용 가능
LV 크기 464.00 MB
현재 LE 116
세그먼트 1
할당 상속
읽기 앞섰던 섹터 0
블록 장치 254:1
— 논리 볼륨 —
LV 이름 /dev/server1/backups
VG 이름 server1
LV UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV 쓰기 접근 읽기/쓰기
LV 상태 사용 가능
LV 크기 30.00 GB
현재 LE 7680
세그먼트 1
할당 상속
읽기 앞섰던 섹터 0
블록 장치 254:2
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.