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


私の考えでは、永続データはスナップショットデバイス自体の最初のブロックに保存されているようです。

関連情報