이것dmsetup
스냅샷 문서설명하다:
<persistent?> is P (Persistent) or N (Not persistent - will not survive after reboot). O (Overflow) can be added as a persistent store option to allow userspace to advertise its support for seeing "Overflow" in the snapshot status. So supported store types are "P", "PO" and "N". The difference between persistent and transient is with transient snapshots less metadata must be saved on disk - they can be kept in memory by the kernel.
이 영구 데이터는 어디에 저장되나요?
답변1
영구 스냅샷 장치와 임시 스냅샷 장치의 첫 번째 블록에 있는 데이터에는 차이가 있습니다 dmsetup
.
다음 장치가 주어지면:
$ losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /home/var/ravi/tmp/issue/snap-dev 0
/dev/loop0 0 0 0 0 /home/var/ravi/tmp/issue/base-dev 0
그리고 처음에 0으로 지정된 스냅샷 장치 지원 파일은 다음과 같습니다.
$ od -xc snap-dev
0000000 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
3751613000
비지속적 플래그를 사용 N
하면 다음과 같은 일이 발생합니다 .
$ sudo dmsetup -v create snapdev --table '0 8 snapshot /dev/loop0 /dev/loop1 N 1'
Name: snapdev
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 254, 5
Number of targets: 1
$ od -xc snap-dev
0000000 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
3751613000
백업 파일은 변경되지 않았으며 여전히 \0
바이트입니다.
이제 P
지속성 플래그를 다시 사용해 보세요.
$ sudo dmsetup remove snapdev
$ sudo dmsetup -v create snapdev --table '0 8 snapshot /dev/loop0 /dev/loop1 P 1'
Name: snapdev
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 254, 5
Number of targets: 1
$ od -xc snap-dev
0000000 6e53 7041 0001 0000 0001 0000 0001 0000
S n A p 001 \0 \0 \0 001 \0 \0 \0 001 \0 \0 \0
0000020 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
3751613000
이 경우 장치의 첫 번째 바이트는 입니다 SnAp\001
.
내 생각에는 영구 데이터가 스냅샷 장치 자체의 첫 번째 블록에 저장되는 것 같습니다.