dmsetup: 영구 메타데이터는 어디에 저장되나요?

dmsetup: 영구 메타데이터는 어디에 저장되나요?

이것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.


내 생각에는 영구 데이터가 스냅샷 장치 자체의 첫 번째 블록에 저장되는 것 같습니다.

관련 정보