如何制作 Linux 块设备的快照

如何制作 Linux 块设备的快照

关于如何制作 LVM 卷快照的文档非常丰富,但是我如何制作硬盘分区的快照呢?当我需要以只读方式访问磁盘时,我经常希望能够这样做,但是出于某些原因,在会话结束后写入会被丢弃,因此需要进行写入访问:

  • 我想要在磁盘内容上运行的应用程序需要写入它才能访问数据,例如dovecotIMAP 服务器更新索引文件和标志(标记为“已读”或“重要”的消息)。
  • 我想重播文件系统日志,因为我知道发生了不正常关机,但我也想保持内容不变,以防我需要探索其他数据恢复选项。

有关的:

答案1

设备映射器的低级接口可以执行以下操作:

NAME=nameofsnapshot
DEVRO=/dev/read-only-backing-device
DEVCOW=/dev/space-for-writing-changes

SECTORS=$(blockdev --getsz $DEVRO)
TABLE=$(mktemp)

echo 0 $SECTORS snapshot $DEVRO $DEVCOW N 16 >> $TABLE

echo "Setting up $NAME with"
head $TABLE

dmsetup create $NAME < $TABLE

rm $TABLE

表格参数解释:

  • N = 非持久性,重启后将无法继续存在
  • 16 = CoW 的区块大小(以扇区为单位),此处为 8 KiB

查询状态:dmsetup status $NAME

删除快照:dmsetup remove $NAME

参考:

答案复制自https://gist.github.com/jowagner/b36024636140ddf453c12eaf6e590b5d得到许可。

相关内容