xen server 存储库(sr)损坏的数据恢复方案

简介:

 【常见故障】

        一、sr无法识别,所有虚拟磁盘(vdi)丢失
        二、sr中的虚拟磁盘(vdi)访问时报错
        三、虚拟磁盘(vdi)删除或丢失
        四、快照(snapshot)删除或丢失
        五、sr初始化
        六、sr所在的LVM结构损坏
        七、sr所属的PV分区表损坏
        八、其他故障
 
【故障分析】
        上述常见故障是用户界面层的表现,探究其解决方案其实万变不离其宗,仅需明白xen server sr层的结构组成,上述故障即可有清晰的解决思路。
       xen server sr存储库的结构组成多数基于linux lvm,sr中的每个vdi相当于lvm中的一个lv,而构建lvm则可以基于传统MBR的分区表或GPT的分区表进行管理。举个例子说,如果有一块1TB的单硬盘,假设为/dev/sdb,想要初始化为SR,通常是1T的PV先进行分区(MBR或GPT,当然也可以不分),分好区后,再将/dev/sdb1(假设要处理第一个分区)创建成LVM卷,里面再创建LV,这些LV就是VDI。
       xen server同时会备份这些LVM信息,存放在/etc/lvm下,名称形如VG_XenStorage-151befd1-2224-5e06-914e-f15243f649d7_00103.vg,内容是标准的LVM  XML信息格式描述。
        上述就是SR存储库的差不多所有结构信息,所有的损坏几乎都是基于上述信息的不完整导致。
        上述信息的不同损坏组合,衍生出不同的解决方案。
 
【解决方案】
        一、当PV分区表损坏时(适用于常见故障的1、7):
            PV分区表损坏其实与SR没关系,只是直接表现影响到SR的访问,其修复过程与普通的分区表修复相同,修正MBR分区表或GPT分区表。
        二、当LVM结构损坏时(适用于常见故障的1、6):
            LVM结构损坏多数就是LVM XML信息区的损坏,可考虑通过xen server的LVM信息备份进行恢复。当然,有可能这个备份信息也损坏了。
        三、当LVM结构损坏,同时备份信息也损坏了(适用于常见故障的1、6):    
            这是真正的技术难题,当LVM结构及其备份信息损坏后,所有的LV的片断索引信息全部丢失,所要做的工作就是找回每个VDI的LV EXTENTS信息。
            XEN的VDI是基于Connectix和微软联合开发的VHD格式,通常采用精简增长模式(如同ESX VMDK的精简模式),也就是说vdi随着使用的增长而增长,并不是分配多少占用多少。这样的好处是可以节约空间,但坏处就是分配不可能太连续,总会有同时几个vdi交互申请空间。要想恢复这些片断(碎片信息),从上层可参考的信息是非常有限的,多数情况下,只能通过VHD格式内部的相关性,从VDI的头部开始,通过一些可前后匹配的信息,按LV PE的偏移,对extent碎片结构进行不断纠正。这个过程通常人工操作很吃力,为此,北亚数据恢复中心也是特意开发对vhd格式进行从前向后偏移校验的程序来进行匹配的,详细算法暂不公开,但可参考本文与本人所写 <storage layout系列之VHD结构详解>进行算法设计与开发。
            得到每个VDI的碎片信息后,即可通过碎片信息修正LVM信息或直接导出成VHD文件。
        四、vdi内部结构损坏(适用于所有可能的故障):
            vdi内部结构的损坏,等同于vhd格式磁盘的修复。对于一个vhd虚拟磁盘而言,每一个转化后的物理块都有索引表和块内容组成,如果这两部分信息都可以找到,则这个位置的块即可修复。所有可修复的块加上无法修复的块,组成的一个VHD,就像处理一块坏道盘,就要看内部文件系统的结构破坏情况了,接下来的事情,可参考其他方案,已经脱离xen server sr层和vdi vhd层了。
       小结:
        上述4种解决方案的不同组合,即是对所有xen server sr故障的解决方案。比如,vdi的删除就是要先看是否有LVM备份,如果有,按备份恢复;如果没有,按vdi内部结构进行复杂组合。
 
【数据回迁方案】
        多数情况的恢复,是对vdi(vhd)的恢复。这样,数据恢复后,就有几种回迁方案:
        一、修正LVM信息后的数据加工:
            修正LVM信息后,如果xen server配置信息还存在,重新获取sr后,则可以完整恢复所有数据;如果xen server 也损坏或重装了,则大致需要按如下过程进行sr的激活(由互联网上资料修改,但已通过验证):
            1,列出卷所有:
                命令:pvscan ,得到pv的uuid
 
                如得到的输出是 PV /dev/sda3 VG VG_XenStorage-9ae1044f-d335-8143-d630-a6f546e57db7 lvm2 [66.52 G / 56.52 GB free]
      记录下uuid“9ae1044f-d335-8143-d630-a6f546e57db7”
2,创建出这个UUID的存储
      命令:xe sr-introduce uuid=9ae1044f-d335-8143-d630-a6f546e57db7 type=lvm name-label=“Local storage” content-type=user
3,找到SR的数据存储设备或分区的SCSI ID
                命令:ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Aug 18 15:43 scsi-SATA_ST380811AS_9PS04Q4A -< ../../sda
lrwxrwxrwx 1 root root 10 Aug 18 15:43 scsi-SATA_ST380811AS_9PS04Q4A-part1 -< ../../sda1
lrwxrwxrwx 1 root root 10 Aug 18 15:43 scsi-SATA_ST380811AS_9PS04Q4A-part2 -< ../../sda2
lrwxrwxrwx 1 root root 10 Aug 18 15:43 scsi-SATA_ST380811AS_9PS04Q4A-part3 -< ../../sda3
        4、列出服务器UUID
                命令:xe host-list
        5,通过设置的scsi ID,host ID,sr uuid检测出pdb uuid
               命令:xe pbd-create sr-uuid=9ae1044f-d335-8143-d630-a6f546e57db7 device-config:device=/dev/disk/by-id/scsi-SATA_ST380811AS_9PS04Q4A-part3 host-uuid=4ca6582a-364b-4da2-a206-618438ae4dee
              得到pbd uuid:0d65a15e-75a0-dc81-8bb5-79df3e6d96db
        6,把这个存储还原
                命令:xe pbd-plug uuid=0d65a15e-75a0-dc81-8bb5-79df3e6d96db
        7、创建vps,挂载所有找回的vdi
 
    二、导出成vhd后的数据加工
        如果将恢复后的VDI导出成vhd格式,有几种办法可以处理vhd
        1、直接在windows 7,windows server 2008上进行vhd挂载,但此方案不适合拥有快照的VHD
        2、构建nfs,导入vhd进行sr还原,可直接在xen server上进行操作
        3、直接使用winhex进行vhd数据解释,读出其中数据,但此方案也不适合拥有快照的VHD
        4、参考本人(北亚数据恢复中心张宇)所写 <vhd 转换为img源码>,转换VHD或快照,进行数据解释。
        5、使用VPC、VBOX等虚拟机直接挂载 vhd格式的虚拟磁盘,解释数据。









本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/1184910,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
存储 运维 数据挖掘
服务器数据恢复-DELL EqualLogic PS存储raid5数据恢复案例
服务器数据恢复环境: 一台DELL EqualLogic PS系列存储,存储中有一组由16块SAS硬盘组成的RAID5。上层是VMFS文件系统,存放虚拟机文件。存储上层分了4个卷。 服务器故障&检测: 存储上有2个硬盘指示灯显示黄色,磁盘出现故障导致存储不可用,存储设备已经过保。 硬件工程师对故障存储中的16块硬盘做了硬件故障检测,发现其中有2块磁盘存在坏道,SMART的错误冗余级别已经超过阈值。
服务器数据恢复-DELL EqualLogic PS存储raid5数据恢复案例
|
5月前
|
存储 Unix 数据挖掘
服务器数据恢复—DS4800存储lvm信息丢失数据恢复案例
DS4800服务器存储lvm信息丢失,基于DS4800的aix小机卷丢失。
服务器数据恢复—DS4800存储lvm信息丢失数据恢复案例
|
17天前
|
存储 算法 虚拟化
虚拟化数据恢复—ESX SERVER常见故障的数据恢复方案
ESX SERVER常见故障: 1、因光纤存储设备接入了非ESX系统,共享未互斥,对存储进行了改写(重装系统,WINDOWS初始化,格式化等),导致存储结构损坏。 2、升级或者变更卷时分区表或VMFS卷结构异常。 3、误删除VMFS存储中的VMDK。 4、VMFS格式化。
|
3月前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN环境下LUN Mapping出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列,划分若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障: 用户新增了一台服务器,将存储中的某个LUN映射到新增加的这台服务器上。这个映射的LUN其实之前已经MAP到其他SOLARIS操作系统的服务器上了。由于没有及时发现问题,新增加的这台服务器已经对此LUN做了初始化操作,磁盘报错,重启后发现卷无法挂载。
|
4月前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN环境下LUN Mapping出错导致文件系统一致性出错的数据恢复案例
服务器存储数据恢复环境: 一台存储中有一组由6块硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器存储故障: 由于业务变化需要增加一台服务器,在存储在线的状态下将该存储中的某个LUN映射到这台新增加的服务器上并开始初始化,不料映射的这个LUN已经MAP到其他SOLARIS服务器上了。由于该LUN已经进行了部分的初始化,磁盘报错,重启后发现卷无法挂载。
|
5月前
|
存储 数据挖掘
服务器数据恢复—EqualLogic PS4000存储数据恢复案例
一台DELL EqualLogic PS 4000存储中有一组由12块磁盘组建的raid5阵列,存储空间划分3个同等大小的卷,采用的VMFS文件系统。 两块硬盘指示灯亮黄色,raid5阵列崩溃,存储变得不可用。
服务器数据恢复—EqualLogic PS4000存储数据恢复案例
|
7月前
|
存储 Oracle 关系型数据库
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
**服务器存储数据恢复环境:** 某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。 **服务器存储故障&分析:** 该RAID5阵列中一块硬盘出现故障离线,热备盘自动激活替换故障硬盘,热备盘同步数据的过程中该raid5阵列中又有一块硬盘出现故障,RAID5阵列瘫痪,上层LUN无法正常访问。 因为本案例中存储控制器的磁盘检查策略严格,一旦某些磁盘性能不稳定,该型号存储控制器就将该块磁盘识别为坏盘,并将该块磁盘踢出RAID。一旦RAID中掉线的盘数到超过RAID级别允许掉盘的最大数量,该RAID将不可用,
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
|
SQL 网络协议 Oracle
关于 Linux中数据备份的一些总结(物理、逻辑、远程差异备份)
  一般需求增量上线的时候,会备份应用和应用数据,保证升级失败也可以回退回去,今天和小伙伴聊聊数据备份的事。日常备份可以通过定时任务进行备份,也可以手动执行备份这里和小伙分享一些备份的脚本Demo,写的很粗。博文内容包括:日志备份,数据库备份(mysql)。备份方式分为:物理备份、逻辑备份、远程差异备份。   等长大就明白了。”小时候总是被人这么说。但那是不折不扣的谎言。我对任何事都只能越来越不明白。……这的确令人不安。但在另一方面,正是因为这样,自己才没有失去对生的好奇这也是事实。 ——中岛敦《山月记》   日志备份这里很简单,这里我们写一个shell脚本,通过脚本的方式进行,当然,如果
224 0