나는 즉시 스냅샷을 생성하고 복원하는 VirtualBox의 기능을 좋아하며 호스트 시스템에서 비슷한 작업을 수행할 수 있는지 궁금합니다.
처음에는 스냅샷을 살펴보았는데 lvm
, 좀 더 살펴보니 동적으로 할당된 이미지에 비해 단점이 너무 많다는 것을 알게 되었습니다. 예를 들어:
- 그들은 공간을 차지합니다. 10%가 논리 볼륨에 기록되고 스냅샷이 생성되면 볼륨의 나머지 90%는 사용할 수 없게 됩니다.
- 스냅샷 생성은 즉시 이루어지지만 해당 스냅샷으로 복원하는 작업은 시간이 오래 걸립니다.
- 쓰기가 너무 많으면 스냅샷이 자동 만료로부터 보호될 수 없습니다.
Windows 7에서는 차등 .vhd 이미지를 호스트에 연결하는 기능을 VirtualBox GUI와 성공적으로 결합하여 스냅샷을 관리했으며 Linux에서도 비슷한 옵션을 찾고 있습니다.
답변1
@Lambert의 답변을 완성하려면 다음도 있습니다.BTRFS(Linux 파일 시스템) 허용스냅샷 생성 및 복원파일 시스템의 하위 볼륨입니다. 둘 사이의 차이점은 다음을 읽어보세요.Reddit에 게시된 이 게시물.
Btrfs는 Linux 커널에 포함되어 있으며 이를 루트 파일 시스템으로 사용할 수 있습니다. 가능할 것 같다시작해.
~에 대한"실험적" 상태, 저는 2년 넘게 아무 문제 없이 사용하고 있습니다.
답변2
그들은 공간을 차지합니다. 10%가 논리 볼륨에 기록되고 스냅샷이 생성되면 볼륨의 나머지 90%는 사용할 수 없게 됩니다.
아뇨, 그렇지 않아요. LVM 스냅샷은 두 개의 블록 장치, 즉 원본 LV(스냅샷을 생성하는 내용)와 스냅샷 LV를 제공합니다. 실제로 LV 중 하나에서 변경된 데이터만 스냅샷 LV에 기록됩니다. 모든 LV를 일반 파일 시스템으로 마운트하고 둘 중 하나를 100% 사용할 수 있습니다. 사용자 공간과의 유일한 차이점은 스냅샷 LV가 변경되지 않은 것처럼 보인다는 것입니다(물론 그게 요점입니다).
스냅샷 생성은 즉시 이루어지지만 해당 스냅샷으로 복원하는 작업은 시간이 오래 걸립니다.
"복구" 시 수행하는 작업에 따라 lvcreate
일반 LV처럼 스냅샷을 생성할 수 있습니다(명령 사용). 일련의 스냅샷 LV를 유지하고 VM에 몇 주 전의 LV에서 부팅하도록 지시할 수 있습니다. 이는 블록 장치에 대한 다른 경로를 제공하기만 하면 됩니다.
스냅샷을 변경하고 해당 변경 사항을 원본 LV에 커밋하려는 경우스냅샷을 병합할 수 있습니다.
쓰기가 너무 많으면 스냅샷이 자동 만료로부터 보호될 수 없습니다.
당신이 무슨 뜻인지 확실하지. 원본 또는 스냅샷 LV에서 너무 많은 쓰기로 인해 스냅샷 LV가 가득 차고 있다는 의미입니까? 내가 아는 한, 쓰기의 유일한 문제는 스냅샷 LV에 사용 가능한 것보다 더 많은 데이터를 기록해야 할 수도 있다는 것입니다. 그러나 이는 공간을 절약하기 위해 스냅샷 LV를 원래 크기보다 작게 만드는 경우에만 문제가 됩니다.
답변3
ZFS Fuse 또는 ZFS on Linux 프로젝트를 확인해 보세요. ZFS 파일 시스템에서는 스냅샷 및 복제가 가능합니다. Linux에서는 ZFS에서 부팅하는 것이 불가능하다고 생각하지만 ZFS 풀에 데이터/작업을 저장할 수 있습니다.
또한보십시오:http://zfsonlinux.org/또는 온라인에서 ZFS Fuse를 검색하세요.
답변4
derobert가 제안한 대로 이제 LVM의 씬 스냅샷을 사용합니다.
# create pool
lvcreate -L 10000M -T vg_oktestapp1/pool
# create thin vol
lvcreate -V 10000M -T vg_oktestapp1/pool -n lv_ibm
# mount
mkfs.ext4 /dev/vg_oktestapp1/lv_ibm
mount /dev/vg_oktestapp1/lv_ibm /media/ibm
# do stuff ...
# create snapshot
lvcreate -s vg_oktestapp1/lv_ibm --name lv_ibm_20150411090827
# do stuff ...
# instant restore snapshot
lvcreate -s vg_oktestapp1/lv_ibm_20150411003856 --name lv_ibm_new --setactivationskip n
umount /media/ibm
mount /dev/vg_oktestapp1/lv_ibm_new /media/ibm