无法使用“dmsetup”创建持久快照设备

无法使用“dmsetup”创建持久快照设备

我正在尝试创建一个dmsetup快照设备能够回滚 fsck 所做的更改

我想我打电话dmsetup错了。这是一个例子:

$ 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

错误消息中后面的两个空格snapdev有点奇怪。

但是,如果我P将持久性更改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, 4
Number of targets: 1

我究竟做错了什么?

答案1

要用于持久快照,设备的前几个块需要是\0.这个例子 将前 32 个块清零。

这些字节SnAp\001被写入持久性快照设备的开头

底层设备的第一个块映射到持久快照设备的块 16。 (数据从字节偏移 8192 或 0x2000 开始)。

快照设备需要是(未指定的)最小尺寸。 4MB就足够了。

资源:

相关内容