[原]将Vmware Hardware Version降级

    原来有台服务器Host系统用的是红旗Asianux 3.0 for x86_64,运行Vmware Server 2.0 release提供虚拟环境,用于软件的测试。使用时间长了,总觉得使用上很不习惯,Vmware Server 2.0只提供基于浏览器的Web管理操作,调整配置很不方便,远程控制也麻烦。(我没找到2.0支持像GSX Server,用Console连接902端口的方式,其官方网站上说是不提供的)。因机器不多,Host系统又不能改动。没有办法,我只能降回到Vmware Sever 1.0.x上使用。
    升级容易,降级就麻烦多了。原来2.0上的虚拟机环境,创建时默认就是用Vmware Hardware Version 7的版本(新建虚拟机时可以选择),而1.x只支持到Hardware Version 5。我不可能放弃原来大量的虚拟机,重建的工作量太大了。为此,必须想办法把HW Version降级。可惜,官方似乎也没有提供类似的工具。不过,经过测试,成功了,而且发现方法还是挺多的。

一、用nc拷贝数据
这是我第一个想到的方法。因为我以前使用这方法来从Vmware迁移系统到OpenVZ上面的。
操作很简单:
1、保持原来的Vmware 2.0,然后在启动创建一个新的虚拟机环境,创建时,选择“兼容类型”为Vmware Hardware Version 4,磁盘大小与需要迁移的虚拟机磁盘一样;
2、分别用系统安装光盘引导两台虚拟机,并用linux rescue进入拯救模式,并激活网络,用host-only等模式均可;
3、进入拯救模式后,在新的虚拟机上运行:

# nc -l -p 1234 | dd of=/dev/sda

4、旧的虚拟机上则运行:

# dd if=/dev/sda | nc 172.16.84.130 1234

其中,172.16.84.130是新虚拟机的IP地址。这样,就可以把旧虚拟机磁盘上的数据完全拷贝到新的虚拟机磁盘中。最后,用Vmware Server 1.0.8打开该虚拟机配置文件,改动一些参数,如:操作系统类型、网卡模拟的网络连接模式等,即可正常启动该虚拟机,数据也得到完整的保留。

二、修改HW Version方式
上述的方法简单,但相当耗费时间。实际上,也不需要这么麻烦。
我们都知道,vmware创建的虚拟硬盘实际上就是由一堆文件构成的,以.vmdk结尾。例如:

引用
# ll *.vmdk
-rwxrwxrwx 1 root root 2147221504 Feb 23 17:15 hatest1-f001.vmdk
-rwxrwxrwx 1 root root 2147221504 Feb 23 17:15 hatest1-f002.vmdk
-rwxrwxrwx 1 root root 2147221504 Feb 23 17:15 hatest1-f003.vmdk
-rwxrwxrwx 1 root root 2147221504 Feb 23 17:15 hatest1-f004.vmdk
-rwxrwxrwx 1 root root    1048576 Dec 20  2007 hatest1-f005.vmdk
-rwxrwxrwx 1 root root        523 Feb 23 17:12 hatest1.vmdk

查看这些文件的内容,不难发现其中就定义了HW Version的版本。这样,就提供了一种快速实现2.0到1.x虚拟机迁移的方法。

如果我们直接把这些从Vmware Server 2.0上磁盘文件(HW Version 7)加入到Vmware Server 1.0.8的虚拟机上,启动时,会报错误的:

最后,在Vmware Server Console环境中,编辑该虚拟机,去掉原来的临时硬盘文件,添加新的(已经存在的)磁盘,选择上述的文件;修改其余不兼容的配置信息,启动新虚拟机即可。

2、对于由单个文件组成的磁盘
由于,建立虚拟机的硬件时,有多种模式:可以在创建时预先分配(或按需分配)空间、把大文件分割为多个小文件存放,或不分割而用一个大的文件存放。所以,这就存在一个问题。如果我们使用的是单个大文件存放的方式,例如:

引用
# ll *.vmdk
-rw——- 1 root root 2452619264 Feb 23 13:22 emos1.4.vmdk

这个文件就是使用单个文件,并用按需分配空间的方式创建的。虽然可以用vi或sed按照上面的方式来修改HW Version,但vi打开会非常慢,sed修改也需要一段不短的时间。没有简单方法吗?当然有啦!HW Version仅放在该文件的前面一部分,我们只要修改这部分就可以了。
首先,用dd拿到开头的一部分文件:

引用
# dd if=./emos1.4.vmdk of=./tmp.vmdk bs=1024k count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.04213 seconds, 24.9 MB/s

然后,修改这个临时文件:

# sed -i 's/\(ddb.virtualHWVersion = "\)7/\14/' tmp.vmdk

接着,用这个临时文件和原来的文件合并为一个新的文件:

引用
# dd if=emos1.4.vmdk of=./tmp.vmdk bs=1024k skip=1 seek=1
2338+0 records in
2338+0 records out
2451570688 bytes (2.5 GB) copied, 60.314 seconds, 40.6 MB/s
# ll *.vmdk
-rw——- 1 root root 2452619264 Feb 23 13:22 emos1.4.vmdk
-rw-r–r– 1 root root 2452619264 Feb 23 18:15 tmp.vmdk

最后,在Vmware Server Console环境中,加入这个临时文件tmp.vmdk,修改虚拟机中不兼容的参数,启动虚拟机,可以正常启动了吧。
确认没问题后,删掉旧的磁盘文件即可:

# rm emos1.4.vmdk
# mv tmp.vmdk emos1.4.vmdk

把临时文件改名后,记得修改虚拟机配置文件哦。

◎ 无论使用上述方法二的那种方式,肯定都会比方法一快很多,操作也十分简单,注意备份好原有数据即可。O(∩_∩)O哈哈~

vSphere 5.0 重定位虚拟机时报“在主机的当前连接状况下不允许执行该操作”的问题
配置Vmware vSphere 5.0 Auto Deploy服务:配置Auto Deploy 服务
配置Vmware vSphere 5.0 Auto Deploy服务:准备自定义脱机库
给VMware vSphere Hypervisor(ESXi) 5.0 添加第三方驱动
创建VMware vSphere 5 使用的共享磁盘

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/110949.html

(0)
上一篇 2021年8月26日
下一篇 2021年8月26日

相关推荐

发表回复

登录后才能评论