一、问题描述
云主机文件系统损坏导致云主机无法启动!客户要求把数据找回!!!
二、准备工作
2.1 创建一台云主机做文件修复。
2.2 找一台物理机(RHEL7.1即可)做文件修复。
三、操作流程
3.1 对有问题的云主机关机,系统盘做快照。
3.2 根据3.1的快照创建一个云硬盘。
3.3 将3.2中创建的云硬盘挂在到2.1的云主机上做文件修复。
3.4 上面的步骤如果可以修复成功,则将有问题的云主机系统盘挂在到2.2的物理机上做文件修复。
四、EXT4修复过程
4.1 查看超级块备份
mkfs.ext4 -n /dev/mapper/${lv_name}
4.2 用备份的超级块挂载
mount -o sb=32768 /dev/mapper/${lv_name} /mnt # 32768 为4.1中查出的超级块位置
4.3 用备份的超级块fsck修复分区
fsck.ext4 -b 32768 /dev/mapper/${lv_name} # 32768 为4.1中查出的超级块位置
4.4 直接用fsck修复分区
fsck.ext4 -y /dev/mapper/${lv_name}
4.5 重建超级块(!慎用!可能丢失所有数据)
mkfs.ext4 -S /dev/mapper/${lv_name}
4.5 以上操作全部失败!继续查看日志+Google
resize2fs /dev/mapper/${lv_name} 73399296 # 依然失败
4.6 受到4.5的启发决定扩展下lv试下
lvextend /dev/mapper/${lv_name} /dev/${vdisk_path} # 终于成功
4.7 将云主机系统盘挂在到物理机
rbd map ${pool_name}/$(volume_name)
4.8 扩展lvm
lvextend /dev/mapper/${lv_name} /dev/${vdisk_path}
4.9 卸载云主机系统盘
lvchange -an /dev/mapper/${lv_name}
rbd unmap ${mapped_point}
五、XFS修复过程
5.1 执行xfs_repair
xfs_repair -L /dev/mapper/${lv_name} # 一次成功
5.2 将云主机系统盘挂在到物理机
rbd map ${pool_name}/$(volume_name)
5.3 执行xfs_repair
xfs_repair -L /dev/mapper/${lv_name}
5.4 卸载云主机系统盘
lvchange -an /dev/mapper/${lv_name}
rbd unmap ${mapped_point}
六、参考资料
http://blog.chinaunix.net/uid-26557245-id-3748168.html # 修复ext4
http://oss.sgi.com/archives/xfs/2013-12/msg00670.html # 修复xfs
http://www.linuxquestions.org/questions/linux-enterprise-47/shrink-lvm-without-dataloss-557746/ # 修复ext4
http://www.linuxquestions.org/questions/linux-general-1/cannot-mount-hard-disk-block-count-exceeds-size-of-device-bad-partition-table-880149/ # 修复ext4