Não é possível criar um dispositivo de instantâneo persistente com 'dmsetup'

0

Estou tentando criar um dispositivo de instantâneo dmsetup capaz de fazer alterações de retrocesso feitas pelo fsck .

Acho que estou chamando dmsetup incorretamente. Aqui está um exemplo:

$ truncate -s 4096 real snapshot               
$ losetup --show -f real                       
/dev/loop0                                     
$ losetup --show -f snapshot                   
/dev/loop1                                     
$ sudo dmsetup -v create snapdev --table '0 8 snapshot /dev/loop0 /dev/loop1 P 1'
device-mapper: reload ioctl on snapdev  failed: Input/output error
Command failed

Os dois espaços após snapdev na mensagem de erro são um pouco estranhos.

No entanto, se eu alterar o P para persistente para N para não persistente, tudo ficará bem:

$ 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, 4
Number of targets: 1

O que estou fazendo de errado?

    
por Tom Hale 09.10.2017 / 10:35

1 resposta

1

Para ser usado em um instantâneo persistente, os primeiros blocos do dispositivo precisam ser SnAp%code%1 . Este exemplo    zeros os primeiros 32 blocos.

Os bytes %code% são gravados no início de um dispositivo de snap persistente .

O primeiro bloco do dispositivo subjacente é mapeado para o bloco 16 de um dispositivo de instantâneo persistente. (Os dados começam no deslocamento de byte 8192 ou 0x2000).

Um dispositivo de instantâneo precisa ser um tamanho mínimo (não especificado) . 4MB é suficiente.

Recursos:

por 09.10.2017 / 12:53