Skip to main content

moregeek program

【服务器数据恢复】xen server存储库(sr)常见故障的数据恢复方案_sun的博客-多极客编程

【服务器数据恢复】xen server存储库(sr)常见故障的数据恢复方案_数据恢复

xen server存储库常见故障:

1、sr无法识别,所有虚拟磁盘(vdi)丢失。

2、sr中的虚拟磁盘(vdi)访问时报错。

3、虚拟磁盘(vdi)删除或丢失。

4、快照(snapshot)删除或丢失。

5、sr初始化。

6、sr所在的LVM结构损坏。

7、sr所属的PV分区表损坏。

8、其他故障。

 

xen server存储库常见故障分析:

上述故障是用户界面层的常见故障表现,解决这些故障问题首先要明白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存储库的几乎所有结构信息,所有种类的损坏几乎都是因为上述信息的不完整所导致的。

SR存储库结构信息的不同损坏组合衍生出不同的解决方案。

 

xen server存储库常见故障解决方案:

方案一、PV分区表损坏(适用于上述xen server常见故障的1、7):

PV分区表损坏其实与SR没关系,只是影响到SR的访问,其修复过程与普通的分区表修复相同,即修正MBR分区表或GPT分区表。

方案二、LVM结构损坏(适用于上述xen server常见故障的1、6):

LVM结构损坏大多数情况下就是LVM XML信息区的损坏,可考虑使用xen server的LVM信息备份进行恢复。

方案三、LVM结构损坏,同时备份信息也损坏(适用于上述xen server常见故障的1、6):    

LVM结构及其备份信息损坏导致所有LV的片段索引信息全部丢失,这种情况下主要工作就是找回每个VDI的LV EXTENTS信息。XEN的VDI是基于Connectix和微软联合开发的VHD格式,通常采用精简增长模式(如同ESX VMDK的精简模式),也就是说vdi随着使用的增长而增长,并不是分配多少占用多少。

这种模式的好处是可以节约空间,坏处就是分配不可能太连续,总会同时有几个vdi交互申请空间。要想恢复这些片断(碎片信息),上层可参考的信息是非常有限的。多数情况下只能按照VHD格式内部的相关性,从VDI的头部开始,通过一些可前后匹配的信息,按LV PE的偏移,不断对extent碎片结构进行纠正。

这个过程如果人工进行操作不仅工作量大而且繁琐。北亚数据恢复工程师专门开发了对vhd格式进行从前向后偏移校验的程序来进行匹配。获取到每个VDI的碎片信息后,可通过碎片信息修正LVM信息或直接导出成VHD文件。

方案四、vdi内部结构损坏(适用于上述xen server所有可能的故障):

vdi内部结构的损坏等同于vhd格式磁盘的修复。对于一个vhd虚拟磁盘而言,每一个转化后的物理块都由索引表和块内容组成,如果这两部分信息都可以找到,这个位置的块即可修复。所有可修复的块加上无法修复的块组成的一个VHD就像一块坏道盘,这时候就要看内部文件系统的结构破坏情况了。


小结:上述4种解决方案的不同组合是针对所有xen server sr故障的解决方案。例如,vdi的删除就是要先看是否有LVM备份,如果有,按备份恢复;如果没有,按vdi内部结构进行复杂组合。

©著作权归作者所有:来自51CTO博客作者宋国建的原创作品,请联系作者获取转载授权,否则将追究法律责任

kubespray2.11安装kubernetes1.15_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于kubespray Kubespray是开源的kubernetes部署工具,整合了ansible,可以方便的部署高可用集群环境,官网地址:https://github.com/kubernetes-sigs/kubespray,本文是用kube

karmada大规模测试报告发布:突破100倍集群规模_华为云开发者社区的博客-多极客编程

摘要:在本文中,我们将介绍用于测试的相关指标,如何进行大规模测试,以及我们如何实现大规模的集群接入。本文分享自华为云社区《​​突破100倍集群规模!Karmada大规模测试报告发布​​》,作者:华为云云原生团队。摘要随着云原生技术在越来越多的企业和组织中的大规模落地,如何高效、可靠地管理大规模资源池以应对不断增长的业务挑战成为了当下云原生技术的关键挑战。在过去的很长一段时间内,不同厂商尝试通过定制

influxdb时序数据库的使用_积跬步,至千里。的博客-多极客编程

InfluxDB InfluxDB概述 InfluxDB 是一个从头开始构建的时间序列数据库,用于处理高写入和查询负载。InfluxDB 旨在用作任何涉及大量时间戳数据的用例的后备存储,包括 DevOps 监控、应用程序指标、物联网传感器数据和实时分析。 什么是时间序列的数据?从定义上来说,就是一串按时间维度索引的数据。 时间序列数据库(TSDB)特点: 持续高并发写入、不用更新 数据压

cros 跨域请求原理_kieary的博客-多极客编程

cros 分为两种请求简单请求浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(预检请求)(not-so-simple request)。只要同时满足以下两大条件,就属于简单请求。(1) 请求方法是以下三种方法之一: HEADGETPOST (2)HTTP请求头信息不超出以下几种字段: AcceptAccept-LanguageContent-LanguageLa

ubuntu部署和体验nexus3_github.com/zq2599的博客-多极客编程

关于Nexus 如下图,在局域网部署了Nexus之后,可以缓存中央仓库的jar,开发的二方库发布到Nexus上,局域网内的其他人也可以从Nexus下载这些二方库使用: 环境信息 本次实战是在Linux服务器上通过Docker安装Nexus3: 操作系统:Ubuntu 18.04.3 LTS Docker:19.03.5 Nexus:3.19.1 Ubuntu安装docker apt

harbor最新版部署harbor最新版部署_键客李大白的博客-多极客编程

安全搭建一套企业级的Harbor服务, 本文已参与「开源摘星计划」,欢迎正在阅读的你加入。 活动链接:​ ​https://github.com/weopenprojects/WeOpen-Star 1 Harbor简介 Harbor 是个开源云原生制品(artifact)仓库,是首个原创于中国、并且成为 CNCF 第11个毕业级的开源项目。用户可通过策略和基于角色的访问控制来保护制

vant-weapp实现省市区三级联动顶部弹出列表_尔嵘的博客-多极客编程

准备:利用vant weapp做的顶部弹出的省市区三级联动对话框 1.下载区域:arrea.js,放到utils备用// 三级联动省市区export default { province_list: { 110000: '北京市', 120000: '天津市', 130000: '河北省', 140000: '山西省', 150000: '内蒙古自治区', 2

mysql 为什么 select * 比 select 字段效率低?_wx5f5ed5b01c9a8的博客-多极客编程

    看到很多资料在介绍sql优化时常说select * 效率是最低的,“*” 表示通配所有字段,在SQL的机制里,需要先识别统计所有字段再进行下一步。明确指定字段的话,会减少上述的操作,所以效率有所提升。但是我觉得这个说法有问题。     无论在工作还是面试中,关于SQL中不要用“SELECT *”,都是大家听烂了的问题,虽说听烂了,但普遍理解还是在很浅的层面,并没有多少人去追根究底,探究其原

推荐系统从入门到实战——flask框架的使用_qq5b42bed9cc7e9的博客-多极客编程

Flask框架的使用​​Flask框架的使用​​​​Flask简介​​​​Flask环境配置​​​​安装virtualenv​​​​创建虚拟环境​​​​激活环境​​​​安装包​​​​测试安装​​​​主要内容​​​​路由​​​​route装饰器​​​​add_url_rule()​​​​指定HTTP方法​​​​匹配动态URL​​​​匹配动态URL​​​​URL构建方法​​​​请求,响应及会话​​​​

cros 跨域请求原理_kieary的博客-多极客编程

cros 分为两种请求简单请求浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(预检请求)(not-so-simple request)。只要同时满足以下两大条件,就属于简单请求。(1) 请求方法是以下三种方法之一: HEADGETPOST (2)HTTP请求头信息不超出以下几种字段: AcceptAccept-LanguageContent-LanguageLa

浅谈java学习以及学习路线图_学java的小熊的博客-多极客编程

关于这篇,应该很早就要更新了,奈何一直拖拖拖(因为自己在跟着做项目),导致到现在才更新,今天就聊一聊关于我,自己接触Java比较早,但真正实际能到开发阶段,还是在疫情期间,因为要准备实习了,看网上这么卷,所以才开始框架的学习,在此之前,学习的态度的:三天打鱼,两天晒网;现在回想之前的大学时光,感觉自己很荒废,自己也走了不少弯路,强烈建议:如果能找到一个大佬带你学习或者给你提供学习路线等,你将会少走

多线程的那点儿事(之多核编程)-多极客编程_多核多线程编程

    多核编程并不是最近才兴起的新鲜事物。早在intel发布双核cpu之前,多核编程已经在业内存在了,只不过那时候是多处理器编程而已。为了实现多核编程,人们开发实现了几种多核编程的标准。open-mp就是其中的一种。对于open-mp还不太熟悉的朋友,可以参照​​维基百科​​的相关解释。    open-mp的格式非常简单,原理也不难。它的基本原理就是创建多个线程,操作系统把这几个线程分到几个