我正在使用设备映射器快照。
假设这/dev/sda
是只读的原始设备,并且/dev/sdb
是 COW 设备。我通过以下方式创建了持久快照:
# cat /dev/zero > /dev/sdb
# dmsetup create mysnap
0 1000000000 snapshot /dev/sda /dev/sdb P 16
^D
# ls /dev/mapper/
control mysnap
#
一段时间内,它运行良好。
每次启动后,为了重新连接我的持久快照,我都会运行相同的命令:
dmsetup create mysnap
0 1000000000 snapshot /dev/sda /dev/sdb P 16
但有一天我在操作过程中不小心断开了只读的 origin 设备(COW 设备还在)。出现了这样的内核消息:
device-mapper: snapshots: Invalidating snapshot: error reading/writing
发生这种情况后,任何尝试附加快照(在任何机器上)都会导致错误:
device-mapper: snapshots: Snapshot is marked invalid
设备mysnap
已创建,但它拒绝任何读/写并显示“输入/输出错误”。
是否可以清除 DM 快照上的“无效”状态并将其恢复,或者至少恢复数据?
我相信这种“无效”状态完全是人为的,因为根据我的经验,持久性 DM 快照在整个系统崩溃后仍能幸存下来。