XenServer 6.2 填坑之 LVM软件包降级


背景:
近期,因为新机房建设,有近30台高配的XenServer上架,随之而来的就是创建近300台虚拟机。
如果采用传统的方法,创建模板,然后手动更改IP地址,磁盘,CPU,内存等大小,会浪费很多时间,因此我一直在考虑将整个流程全部自动化。
最后经过一路填坑和试错,终于成功了。但这些不会在本文中展示,后面会有写文章来分享我的自动化脚本和VM模板。

在这一篇文章中,我要讲的是我此次遇到的最大的坑,而这个坑所有使用XenServer6.2的人都可能会遇到。
情况发生在我用脚本自动化创建VM的过程中,之前的几十台一直正常,结果等所有的创建完成之后。上去一看,后面几百台的VM磁盘居然都没有自动扩容,这不应该啊,所有的服务器环境应该都是相同的。

经过我的排错,发现在做resize的时候有如下报错:
[root@idc1-server4 ~]# xe vdi-resize uuid=786fb0eb-1fd1-4746-86a5-8facd4d0ebc2 disk-size=50GiB

 
Error code: SR_BACKEND_FAILURE_110
Error parameters: , VDI resize failed [opterr=Command ['/usr/sbin/lvcreate', '-n', 'inflate_786fb0eb-1fd1-4746-86a5-8facd4d0ebc2_21525168128', '-L', '4', 'VG_XenStorage-aa1cc675-5367-9a3a-14b9-85b0fc9400c0', '--addtag', 'journaler', '--inactive', '--zero=n'] failed (3): /usr/sbin/lvcreate: unrecognized option `--inactive'
Error during parsing of command line.], 

好端端的命令怎么会提示参数错误呢?经过一番搜索,发现了一位和我同样悲剧的老外:
http://www.experts-exchange.com/OS/Linux/Distributions/Q_28271130.html

接着经过一番检查,就不难发现一些坑爹的情况:
[root@idc1-server4 ~]# lvm version

 
  LVM version:     2.02.88(2)-RHEL5 (2013-06-25)
  Library version: 1.02.67-RHEL5 (2011-10-14)
  Driver version:  4.15.0

[root@idc1-server4 ~]# cat /etc/redhat-release

 
CentOS release 5.10 (Final)

系统应该是XenServer的,结果却变成了CentOS 5.10。

对比创建成功的XenServer:
[root@idc1-server1 ~]# lvm version

 
  LVM version:     2.02.84(2)-RHEL5 (2011-08-26)
  Library version: 1.02.63-RHEL5 (2011-06-10)
  Driver version:  4.15.0

[root@idc1-server1 ~]# cat /etc/redhat-release

 
XenServer release 6.2.0-70446c (xenenterprise)

然后再检查lvcreate命令所在的lvm2软件包:
[root@idc1-server1 ~]# rpm -qa | grep lvm2

 
lvm2-2.02.84-6.xs1120

[root@idc1-server4 ~]# rpm -qa | grep lvm2

 
lvm2-2.02.88-10.el5

版本果然不同,看上去主机idc1-server4上的lvm2要更新一些,但其实idc1-server1上的lvm2才是Citrix打了专门的patch之后的,支持功能更多。
于是我赶紧发了一封邮件,让所有人不要在XenServer上随意使用YUM安装软件,同时禁用了默认的CentOS-Base.repo。

但是问题还是要解决啊,上面的老美说直接重装XenServer,这个太伤了,那么多还要去机房现场操作,我会死掉的。

于是我开始辛辛苦苦的寻找lvm2-2.02.84-6.xs1120这个软件包,哈哈,Google的搜索结果为0条。
那么是不是就没救了呢?我继续尝试从XenServer的ISO里面去找,依然找不到。

最后,我愤怒了,直接到idc1-server1上将所有lvm2相关的文件打包,然后到有问题的服务器上强行卸载lvm2再解压。
就这样,我用暴力填好了这个坑,看着自己的脚本又能够不停的刷屏,自动创建VM,我感动的都快哭了。

 
[root@idc1-server2 dong]# ssh idc1-server1 'cd /tmp; rpm -ql lvm2-2.02.84-6.xs1120 > /tmp/lvm.list; tar -T /tmp/lvm.list -czf /tmp/lvm.tgz' 
tar: Removing leading `/' from member names
[root@idc1-server2 dong]# scp root@idc1-server1:/tmp/lvm.tgz /tmp/
lvm.tgz             100% 2113KB 704.2KB/s   00:03    
[root@idc1-server2 dong]# scp /tmp/lvm.tgz idc1-server4:/tmp/
lvm.tgz              100% 2113KB   2.1MB/s   00:01    
[root@idc1-server2 dong]# ssh idc1-server4 'rpm -qa | grep lvm2 | xargs rpm -e --nodeps'
warning: /etc/lvm/lvm.conf saved as /etc/lvm/lvm.conf.rpmsave
[root@idc1-server2 dong]# ssh idc1-server4 'cd /;tar xzf /tmp/lvm.tgz'

,

  1. #1 by carfieldboy on 2013/11/28 - 22:16

    谢谢你的分享,希望能有更多xen的好文章~

(will not be published)
*