1, nova list --all --ip ip 查找 uuid
2.nova show uuid 查找宿主和 virsh name
2, 登录宿主
virsh domblklist instance-00001824 查询rbd块
vda cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk 系统盘
vdb cinder/volume-ffd182c1-1a60-4789-be87-aa7f4d73c636 数据盘
记录rbd信息。
3新建虚拟机和添加数据盘, 记得虚拟机不能跟故障虚拟机的操作系统模板一个,不然挂载会有问题,假如没有其他的记得挂载添加
mount -o rw,nouuid /dev/vdb1 /mnt/
4,虚拟机新建完毕以后,关机。
mv 旧的rbd块, 把 旧的虚拟操作系统的rbd块,copy 过来, 命名位数据盘的rbd name。
rbd mv cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk-back11282028
rbd cp cinder/volume-00cce008-1b77-46b4-835c-c33af2e61c68 cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk
5, 开启虚拟机,修复 磁盘或者修复删除的 文件 可以百度xfs ,ext2/3/4 的修复方式。
修复完后,挂在测试ok后,关闭虚拟机。
首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
-
检查文件系统
做此步之前确保分区处于umount状态
xfs_check /dev/sdd(盘符); echo $?
返回0表示正常 -
执行xfs_repair -n,检查文件系统是否损坏,如何损坏会列出将要执行的操作
执行xfs_repair -n,检查文件系统是否损坏,如何损坏会列出将要执行的操作 -
执行xfs_repair修复文件系统
xfs_repair /dev/sdd (ext系列工具为fsck) -
最后方法:损失部分数据的修复方法
根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdd(清空日志,会丢失文件),再执行xfs_repair /dev/sdd,再执行xfs_check /dev/sdd 检查文件系统是否修复成功。
说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
6, 把问题虚拟机的系统的rbd mv走, 把修复完毕的 数据盘的rbd copy过去, 名字位问题虚拟机的系统盘。
rbd mv cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk-back11282028
rbd cp cinder/volume-00cce008-1b77-46b4-835c-c33af2e61c68 cinder/05894075-b246-4bdb-ba2f-733a5b865740_disk
7,开虚拟机测试,问题修复后 验证数据是否丢失。
8, 清理垃圾数据,删除新建的虚拟机和之前备份的 两个rbd块。