Firefox nginx php wordpress 程序员 apache 开源 Windows Android Python shell Ubuntu 微软 java centos mysql HTML5 google linux linux命令

一次难搞的XenServer错误恢复:断电网卡丢失.虚拟机(VPS)不见

背景:

机器位于美国. 32G内存+1T硬盘*4(硬RAID10阵列)+xenserver5.6系统 服务器支持kvm远程管理.
机房断电,致使xenserver网卡丢失.在恢复网络连接后,其所有虚拟机(VPS)丢失。
控制面板使用我的是我破解过的xensystem2.0版本.(维护和操作起来比较方便)

开始:

起初我在网上找了很多方法,都不成,有说是因为xenserver有自我保护模式,有说是pool主从模式的,都试过了,不成功。一般没见过的命令也不敢操作,毕竟不太熟悉。万一数据搞丢了可不好。
还好有xenme.com的站长帮我,在此表示 非常的感谢. 本想酬谢的,结果被拒绝了,不过还好他有亲戚在我这边,看来下次他来我这边可以请他喝酒了 呵呵.

1.恢复网卡访问

连接上KVM,需要安装JAVA环境,这个就不介绍了,因为断电的原因,网卡丢失了。这时候我们通过

xe pif-scan

查找一下网卡,如果没有找到可能你就需要联系下机房人员了,找到网卡后,你还需要配置你的母机的ip等信息,测试可以ping通或者是非KVM可以ssh连接上后,就可以通过SSH操作了。

2.网卡已经成功激活并能远程SSH连接,这时候我们可以退出KVM,操作太卡了。

使用XenCenter连接后.发现SR及VPS全部不能正常显示.先在SSH端检查下数据是否还在.

先列出卷

pvscan
PV /dev/sda3   VG VG_XenStorage-c9aa6b53-8d71-6fc0-8148-2b28cf9bf57b   lvm2 [1.81 TB / 1.26 TB free]
Total: 1 [1.81 TB] / in use: 1 [1.81 TB] / in no VG: 0 [0   ]

使用了600G,看来原来的数据还在。记录下uuid“c9aa6b53-8d71-6fc0-8148-2b28cf9bf57b”

创建出这个UUID的存储

xe sr-introduce uuid=c9aa6b53-8d71-6fc0-8148-2b28cf9bf57b type=lvm name-label=”Local storage” content-type=user

找到SR的数据存储设备或分区的SCSI ID

ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root  9 Nov 22 14:31 scsi-SAdaptec_bootos_A46A2A2C -> ../../sda
lrwxrwxrwx 1 root root 10 Nov 22 14:31 scsi-SAdaptec_bootos_A46A2A2C-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 22 14:31 scsi-SAdaptec_bootos_A46A2A2C-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Nov 22 14:31 scsi-SAdaptec_bootos_A46A2A2C-part3 -> ../../sda3

列出服务器UUID

xe host-list
uuid ( RO)                : dbe8e2d9-817d-429a-be77-235a7e58d234
name-label ( RW): xenserver-mdqhgghe
name-description ( RW): Default install of XenServer

通过设置的scsi ID,host ID,sr uuid检测出pdb uuid

xe pbd-create sr-uuid=c9aa6b53-8d71-6fc0-8148-2b28cf9bf57b device-config:device=/dev/disk/by-id/scsi-SAdaptec_bootos_A46A2A2C-part3 host-uuid=dbe8e2d9-817d-429a-be77-235a7e58d234

得到pbd uuid:

0d65a15e-75a0-dc81-8bb5-79df3e6d96db

把这个存储还原

xe pbd-plug uuid=0d65a15e-75a0-dc81-8bb5-79df3e6d96db

在这儿我们还创建一个ISO的光驱,呆会儿来安装系统使用

mkdir -p /iso_storage
xe sr-create name-label=iso_storage type=iso device-config:location=/iso_storage device-config:legacy_mode=true content-type=iso

这儿我们可以重启一下XAPI

service xapi restart

或者重启一下xen的工具接口

xe-toolstack-restart

3.还原VPS

现在,我们能通过XENcenter查看到存储器了.在stoarge中,能看到你之前的所有VPS的硬盘VHD,如果运气不好你可能看到的是没有任何的识别编号,如下图:

这里有3种办法:

  1. 自己创建一个VPS,一个个硬盘挂载回去,找回数据。此办法需要的时间很长,如果VPS数量多的话,需要几天的时间。而且如果你是做VPS的,还要和客户联系,找回对应的数据。
  2. 这个办法需要前提有备份state.db(记录VPS硬盘UUID等文档),通过这个来快速找回硬盘。
  3. 还有个恢复办法,利用xensystem系统中记录的每台VPS的硬盘UUID。通过这个恢复,时间很短,我试过我有17台VPS,用了15分钟全部恢复完毕!

方法1我就不讲了,不是本文的重点。方法2如果你有备份state.db这个文件,通过这个文档找出每台VPS的硬盘UUID。虽然非常耗时间,但起码也能快速找回。

例如,我现在要找出vps2747的2个硬盘UUID,原来的硬盘名称叫:Disk2474s;Disk2474c。

用文本(任何软件)打开state.db文档,搜索“Disk2474s”,找到“vdi-uuid”,后面有一串数字+字母的“c077b15c-091c-4eb3-b8e3-44d7e0da2e3f”。这个就是我们需要的UUID,用命令:

 xe vdi-param-set uuid=c077b15c-091c-4eb3-b8e3-44d7e0da2e3f name-label=Disk2474s

找到“Disk2474s”硬盘,按照上面的步骤,找到“Disk2474c”的硬盘UUID,给这个硬盘重置名称:

 xe vdi-param-set uuid=f119187c-6ab2-4017-a3f1-e87f6b8b322e name-label=Disk2474c

这样,我们就能在XenCenter看到有个硬盘的名称已经显示了

重复上面的步骤,完成虚拟硬盘标识的标注工作。

如果上面2种方法你都没有。。。那你就只能手工一个个给硬盘加标识,然后按方法一慢慢的来折腾了。

接下来的工作就是恢复VPS访问了。这儿我们分为2003系统和Linux分别来做。稍后你就知道为什么了,2003系统的话,比较简单,通过xencenter创建一个新的VM,选择系统版本,然后删除默认磁盘,直接将我们对应的系统硬盘加载进来即可。这儿给大家截图一个:

先删除方框内默认的磁盘,然后点击椭圆形内的添加按钮,添加我们03系统以前的磁盘,注意顺序哟。然后开机即可!

linux系统的话,会比较麻烦。我开始按照上面03系统的方法操作,遇到了这样的问题。

启动创建的VPS

xe vm-start uuid=79ffe4cb-06ee-211c-4a36-e3d89cf46dc7 

却无法开机,提示我

Error code: INVALID_SOURCE Error parameters: cdrom repo /dev/xvda,

谷歌、百度、搜搜、搜狗、bing、360SO之后,发现有老外说应该是在创建linux的时候 选择Other install media. 但是我这样操作后,能开机,但也不能正常启动  提示完CentOS 的 booting CentOS 就自动关机了.

纠结了很久,网上搜索、咨询朋友、群内问高手都无结果。

然后我尝试了安装一个同样的linux系统,删除磁盘,挂上以前的硬盘,也不能正常启动。于是呼  我放弃了。。。。

但是这并没有完,我去做xensystem系统的模板去了,其实此时我懒得想这个linux如何恢复了,因为我用了一下午的时间,没搞定。制作完几个系统模板,我通过xensystem后台安装了一个linux系统,然后我替换掉了它的磁盘,咧咧咧。。。。奇迹出现了。。。 它既然好了。。。 可以启动了,总结的时候 整理了一下思路,如果我们的linux系统,最初如果就是直接用xencenter或者直接命令创建的话,可能就不会提 示 Error code: INVALID_SOURCE Error parameters: cdrom repo /dev/xvda, 这样的 错误了,因为我们的系统最初也是用xensystem这个面板创建的,所以解铃还需系铃人呀。

既然知道问题怎么解决,余下的工作就好办了。 我在后台开了一堆linux系统的VPS,然后替换它们的硬盘为我们之前的磁盘,再然后 调整用户的财务参数,IP显示等内容。到此就全部完工了.

另外 请朋友们不要向我索取xensystem2.0系统的破解,此程序我只做为自己研究折腾了一翻,并不准备对外提供。如果喜欢这个软件,请支持软件原创。

延伸阅读

评论