Existe uma diferença entre os dados no primeiro bloco de um dispositivo de instantâneo persistente vs transiente dmsetup
:
Dados estes dispositivos:
$ 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
E um arquivo de backup de dispositivo de instantâneo inicialmente zerado:
$ od -xc snap-dev
0000000 0000 0000 0000 0000 0000 0000 0000 0000
$ 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
$ 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 $ 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
$ od -xc snap-dev
0000000 0000 0000 0000 0000 0000 0000 0000 0000
$ 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
$ 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 %pre% %pre% %pre% 001 %pre% %pre% %pre% 001 %pre% %pre% %pre%
0000020 0000 0000 0000 0000 0000 0000 0000 0000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
%pre% 001 %pre% %pre% %pre% 001 %pre% %pre% %pre%
0000020 0000 0000 0000 0000 0000 0000 0000 0000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
%pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre% %pre%
*
3751613000
Veja o que acontece ao usar o sinal N
não persistente:
Observe que o arquivo de apoio não foi alterado - ainda é tudo
bytes. P
Agora, tente novamente com o sinalizador SnAp%code%1
para persistência:
Nesse caso, os primeiros bytes do dispositivo são %code% .
Meu palpite é que os dados persistentes são armazenados no primeiro bloco ou blocos do próprio dispositivo de instantâneo.