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