一、场景:

openstack虚拟机存放于ceph存储,由于用户将系统的grub误删除,导致系统无法正常引导。现在用户要求抢救文件。

二、可行的方案:

1、将虚拟机保存为镜像,将镜像转换成云硬盘,将云硬盘挂载到其他虚拟机上镜像抢救。

优点:依赖默认的dashboard就能完成操作,较为简单,不需要openstack命令行基础;

缺点:只能抢救文件,不能修复原系统。

2、将ceph中 虚拟机对应的rbd映射到到本地,挂载为本机的一个目录,进行抢救工作

优点:可以直接修复原虚拟机的系统;

缺点:需要一定的openstack命令行技能。

三、修复经过

本文主要介绍 第二种的修复方法

(一)、找出虚拟机对应的rbd

1、查找虚拟机的宿主机

1
<span style="font-size:14px;">nova show a7584a2f-7b37-4a21-ae2f-3f244da49686 |grep hypervisor<br data-filtered="filtered">| OS-EXT-SRV-ATTR:hypervisor_hostname  | server-85.105.nanshu.polex.io<br data-filtered="filtered"></span>

2、关闭该虚拟机、

1
<span style="font-size:14px;"> nova stop a7584a2f-7b37-4a21-ae2f-3f244da49686<br data-filtered="filtered"></span>

3、登陆宿主机,查看xml文件

1
<span style="font-size:14px;">ps -ef |grep a7584a2f-7b37-4a21-ae2f-3f244da49686<br data-filtered="filtered">qemu      67511      1 17 14:17 ?        00:17:32 /usr/libexec/qemu-kvm -name instance-0000444a -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -cpu Broadwell,+abm,+pdpe1gb,+rdrand,+f16c,+osxsave,+dca,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme,+rtm,+hle -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid a7584a2f-7b37-4a21-ae2f-3f244da49686 -smbios type=1,manufacturer=Fedora Project,product=OpenStack Nova,version=13.1.2-1.el7.centos,serial=8153ba5c-de78-47c7-bc4c-c86b0d429f75,uuid=a7584a2f-7b37-4a21-ae2f-3f244da49686,family=Virtual Machine -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-instance-0000444a/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 -drive file=rbd:pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da49686_disk:id=admin:key=AQAG1vlXEVDPIhAAyi0tZ3qZwt1HewbQHh731A==:auth_supported=cephx\;none:mon_host=10.48.106.247\:6789\;10.48.106.248\:6789\;10.48.106.249\:6789\;10.48.106.250\:6789\;10.48.106.251\:6789,if=none,id=drive-virtio-disk0,format=raw,cache=writeback,bps_rd=104857600,bps_wr=31457280,iops_rd=2000,iops_wr=500 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=rbd:pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da4968_disk.config:id=admin:key=AQAG1vlXEVDPIhAAyi0tZ3qZwt1HewbQHh731A==:auth_supported=cephx\;none:mon_host=10.48.106.247\:6789\;10.48.106.248\:6789\;10.48.106.249\:6789\;10.48.106.250\:6789\;10.48.106.251\:6789,if=none,id=drive-ide0-1-1,readonly=on,format=raw,cache=writeback,bps_rd=104857600,bps_wr=31457280,iops_rd=2000,iops_wr=500 -device ide-cd,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1 -netdev tap,fd=32,id=hostnet0,vhost=on,vhostfd=34 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:4d:5e:ad,bus=pci.0,addr=0x3 -chardev file,id=charserial0,path=/var/lib/nova/instances/a7584a2f-7b37-4a21-ae2f-3f244da49686/console.log -device isa-serial,chardev=charserial0,id=serial0 -chardev pty,id=charserial1 -device isa-serial,chardev=charserial1,id=serial1 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/org.qemu.guest_agent.0.instance-0000444a.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -device usb-tablet,id=input0 -vnc 0.0.0.0:5 -k en-us -vga cirrus -incoming fd:25 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -msg timestamp=on<br data-filtered="filtered"> <br data-filtered="filtered">  <br data-filtered="filtered">  <br data-filtered="filtered">cat /run/libvirt/qemu/instance-0000444a.xml |grep rbd<br data-filtered="filtered">        <source protocol='rbd' name='pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da49686_disk'><br data-filtered="filtered">        <source protocol='rbd' name='pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da49686_disk.config'><br data-filtered="filtered"></span>

可以看到 虚拟机对应是ceph中 叫 pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da49686_disk 的 rbd

4 挂载 rbd到本地的/dev/rbd0

1
<span style="font-size:14px;">rbd map pool-3aae4178cb8a470aab3dfcea9307e5c9/a7584a2f-7b37-4a21-ae2f-3f244da49686_disk <br data-filtered="filtered"/dev/rbd0<br data-filtered="filtered"></span>

5、 挂载本地的/dev/rbd0 到 目录

虚拟机是以raw格式的虚拟磁盘存放在ceph中,在挂在时候要计算偏移量,

偏移量计算 参考文章 http://smilejay.com/2012/08/mount-an-image-file/

1
<span style="font-size:14px;">mount -o offset=<br data-filtered="filtered">1048576<br data-filtered="filtered"> <br data-filtered="filtered">/dev/rbd0 /mnt<br data-filtered="filtered"></span>

至此 虚拟机的硬盘已经变成了我们节点上的一个目录,可以进去修复文件了。

6 撤退工作

   

1
<span style="font-size:14px;"> <br data-filtered="filtered">umount /mnt    rbd unmap /dev/rbd0<br data-filtered="filtered"></span>

四、需要注意的地方

1、虚拟机一定要关机,不然文件系统在两处同时挂载的话会产生脏数据

2、偏移量的计算

3、快速迭代的虚拟机还是不要使用lvm

本文转自 superbigsea 51CTO博客,原文链接:http://blog.51cto.com/superbigsea/1947192

openstack虚拟机内文件遭破坏的急救方案相关推荐

  1. 如何向虚拟服务器传送文件,如何往虚拟机内传文件的3种方法

    多分享,总有用到的时候. ------------------------------------------------------------------------ 一.创建共享文件夹(这种方法 ...

  2. Mac和虚拟机内linux互传文件

    在mac电脑上安装了虚拟机,虚拟机内安装linux. 经常会把mac内的文件传到linux上,①你可以使用图形化远程连接工具连接linux,这样固然可以实现文件跨系统传输. 如果不想这么麻烦,那就尝试 ...

  3. KVM虚拟机内无agent情况下的监控方法

    KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...

  4. IE遭破坏后的自我修复方法

    IE是大部分计算机用户上网所使用的浏览器,因此也成为各种病毒.恶意程序所***的对象.这里介绍一些简单有效的IE遭破坏后的自我修复方法: 1.IE插件遭恶意破坏 网上有报道称在正常关机之后,再次开机, ...

  5. openstack云主机无法绑定ip_智汇华云|OpenStack 虚拟机 GPU 性能优化

    随着大数据.人工智能技术的发展,越来越多的用户产生了获取拥有GPU算力的弹性计算服务的需求,GPU云主机具有突出的图形处理和高性能计算能力,适用于科学计算.视频处理.深度学习等应用场景,受到了市场的青 ...

  6. 成功解决VM虚拟机内This compute has only 713.3MB disk space remaning

    成功解决VM虚拟机内This compute has only 713.3MB disk space remaning 目录 解决问题 解决思路 解决方法 解决问题 This compute has ...

  7. 如何将宿主机工作文件夹映射到vmware虚拟机内

    将宿主机工作文件夹映射到vmware虚拟机内 vmware启用共享文件夹 在虚拟机中使用vmtools进行挂载 设置开机自动挂载 虚拟机为linux系统,操作中使用的是凝思系统 vmware启用共享文 ...

  8. 虚拟机学习(一)如何在虚拟机内安装系统

    在虚拟机内安装系统有很多的方法,这记录使用镜像安装的过程. 首先点击新建虚拟机 会跳出如下界面,选择自定义,点下一步 之后,下一步 选择稍后安装操作系统 根据自所要安装的系统类型,选择好客户机操作系统 ...

  9. Openstack虚拟机镜像深度实践

    转载:http://geek.csdn.net/news/detail/52407?ref=myread 虚拟机镜像(以下简称镜像)是Openstack云计算平台不可或缺的一部分.利用各种定制化的镜像 ...

最新文章

  1. 斯坦福CRFM遭业界炮轰:深度学习做不了基础模型!
  2. LIST组件使用总结
  3. Sublime Text3注册激活和部分配置
  4. python 生成code128c
  5. 安规电容能用什么代替_电容系列之安规电容
  6. Nutch 是一个开源Java 实现的搜索引擎
  7. mysql用supervisor管理_Supervisor使用详解
  8. easypoi 语法_知识点总结及语法学习资料及视频
  9. 深入解析Invoke and BeginInvoke, 同步与异步解析
  10. JAVA常用算法手册 第3版 pdf
  11. python下载快手视频教程_[小玩意] 用Python写了个下载快手视频的小脚本
  12. java NumberFormat数字格式化
  13. 基于SSH的在线问卷调查系统的设计与实现
  14. 信息检索关键词的进阶使用
  15. 重磅 | Hadoop的第二个十年
  16. 手机必备的广告过滤利器---X浏览器
  17. 【TA-霜狼_may-《百人计划》】图形2.7.2 GPU硬件架构概述
  18. 一位明星证券客户经理的十年辛酸史--俊材有话说
  19. 藏经阁(学习资料汇总)
  20. 苹果公司布局流媒体业务 | 经济学人全球早报精选

热门文章

  1. SAP Workload Monitor
  2. linux下Redis以及phpredis扩展安装
  3. Linux下显示前10个占用空间最大的文件或目录命令
  4. OpenStack开源精神-让企业做到真正自主可控
  5. 2.7、Android Studio使用翻译编辑器本地化UI
  6. android中一个解决办法
  7. php在没用xdebug等调试工具的情况下如何让调试内容优雅地展现出来?--php数组格式化...
  8. JVM 垃圾回收器工作原理及使用实例介绍
  9. 只身单车游山东(五)
  10. 06上半年网络工程师试题分类精讲.第一部分:计算机与网络知识(上午考试科目).第一章:计算机系统知识...