上周受到一个需求,上级单位找我们要生产系统一个服务器的系统盘镜像。
因为涉及一些客户资料保密要求,系统盘内有些资料不能未经许可移交其他单位。
经协商确认,这部分资料可以不提供。
因为这个主机是生产系统的一部分,这部分资料运行的服务还要用。
好吧,做个方案把不能移交的部分剔出。
做法如下:
1使用dd命令制作磁盘分区镜像文件
例如: dd if=/dev/sda1 /data/image.raw
2.将文件下载下来备用
3.做一个虚拟机,系统与线上版本一致。虚拟机除了系统盘,需要准备2个数据分区,其中一个容量要与线上备份的系统盘容量一致(这个磁盘后面称为b),另一个数据盘要大于这个数值(这个磁盘后面称为c)。
4.镜像文件上穿到虚拟机,并存储于c盘。此时b盘不挂载。
5.执行dd命令,将镜像内容恢复到b盘
例如:dd if=image.raw of=/dev/sdb1
注:/dev/sdb1代表分区后的b磁盘
6.执行成功后,挂载b盘并进行内容删除
mount /dev/sdb1 /data1
cd /data1
7.删除完毕后,卸载b盘。然后再次制作镜像
umount /data1
dd if=/dev/sdb1 of=/data2/newimage.raw
执行完毕后,大功告成。
8.实践经验
在事件中,使用dd对分区设备文件进行复制时,偶尔会出现恢复操作后无法挂载。
错误提示:can't read superblock
建议尽量使用dd对磁盘设备文件进行备份。这种方式成功率较高,偶尔会出现如下错误:
不过,挂载会成功,可以进行操作。