云主机文件系统修复

一、问题描述
  云主机文件系统损坏导致云主机无法启动!客户要求把数据找回!!!

二、准备工作
  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

posted @ 2015-08-10 12:05  killingwolf  阅读(388)  评论(0编辑  收藏  举报