寻觅生命中的那一片浅草......

文章属于类别 VMware

Xen虚拟机迁移到VMware

由于种种原因,我们之前使用了Xen,但使用起来不是很方便,例如有时物理机上的LVM并不会开机激活等,我们就想着集中迁移到VMware进行集中管理

1 环境说明

  1. Xen虚拟机为全虚拟机化,就是内核是没有修改的,此处主要影响硬件驱动,如果用的是半虚拟化,估计转换后,还要处理下initrd文件
  2. 虚拟机里的系统使用了LVM(特别坑)

2 export to ovf

失败

导出后,在导入VMware的时候,提示

encoding specified in XML declaration is incorrect

对于上述错误,有人在VMware论坛提出了解决方案:Xen -> VirtualBox -> VMware

1)Exported OVF and VHD from Citrix XenCenter

2)Created a new VM in Oracle VirtualBox using as virtual disk the VHD disk exported above. (this step was performed on my desktop pc on which I installed VirtualBox) 

3)Exported OVA from Oracle VirtualBox

4)Imported OVA as an Assembly in vSphere

满心欢喜,进行了16个小时的导出后,在导入的时候,并不行,提示硬件不兼容,放弃

参考:OVA文件导入VMware ESXi出错解决办法

3 P2V

就是用物理机转换为虚拟机的方法,可行

我们在转换的时候,转换工具可以识别到源机的磁盘结构(LVM), 但转换过去后,磁盘大小却不对,结构也是乱的,猜测是LVM导致,这里有提到一个将LVM降级的解决办法,但我们没有试,主要是考虑

  1. 数据安全,将LVM降级,怕有风险
  2. 文章发表时间为2013年,较旧
  3. VMware官方文档也表示转换工具支持LVM

文档地址:Solution for LVM based Linux servers using VMware Converter showing no volumes

下面讲可行的方法

步骤一

在「Optinons」这一步,点击「Data to copy」部分内容,或者点击「Edit」,然后选择「Advanced」,然后去到下图

步骤二

此处选择「Destination layout」,点击「VirtualDisk2」,然后点击「To basic」,就是在目标机器上不使用LVM,只使用普通磁盘分区,此处为关键

至于另外2个「Thin」,则可设置,也可以不设置,设置为Thin就是按需占用,按实际使用分配,而不是一下子就分配所有空间

步骤三

Xen服务器上的虚拟机转成VMware的虚拟机后,发现开机黑屏,最后摸索后发现是grub菜单项有问题导致,在开机的时候,直接修改grub菜单,然后把consolse=hvc0删掉,并在最后加入fastboot,就可以正常启动了

步骤四

由于转换的时候,没有识别到/data,我怀疑是因为它磁盘设备文件是/dev/xvdb导致,一般应该是/dev/xvdb1,所以,我们在开机后,添加新磁盘,然后在线同步一次data,最后,关闭所有服务,再同步要同步的数据,本例中含/var/data,最后换ip,开启服务,迁移完成

vmware回收vmdk空间

1 问题

我们内网有一个vmware的集群,以前年少无知,所以vmdk的格式选择了「厚置备延迟置零」,也就是分配多少,vmdk文件就会占用多大的空间,这里的好处是能提供较好的io,但我们虚拟机大部分用来做测试的,所以对io要求不高,而且实际并不需要这么大的空间,这里是第一个问题,我们需要将vmdk转换为「Thin Provisioning」,就是按需使用,并不是一开始就分配所有空间。

后来的虚拟机,我们选用了「Thin Provisioning」,部分虚拟机在一开始写了大量文件,现在不需要存了,需要回收这部分空间,这是第二个问题。

2 转换

有2个方式

vShpere Client

就是迁移虚拟机,只需要转移存储就可以了,当然也可以连主机也迁移了,原来就是在迁移选择存储时,可以在「选择虚拟磁盘格式」下拉菜单中选择「Thin Provisioning」,我感觉原理和vmkfstools是一样的,就是在迁移的过程中,做一次转换

vmkfstools

由于我没有使用此方法,直接贴参考资料好了

Cloning and converting virtual machine disks with vmkfstools (1028042)

3 回收空间

在转换的时候, 发现部分机器已经回收空间了,但有些没有自动回收,暂时不知道什么原因,下面讲下手动回收。

大概原理是先在虚拟机里标记哪些磁盘块是已经删除了,然后再通过vmkfstools进行回收

Windows虚拟机

可以用

sdelete.exe -z [DRIVE:]

Linux虚拟机

比较粗暴,用dd填满磁盘,再删除文件

由于它是填满磁盘,就是该盘会最终占用分配给它的全部空间,所以要看看该vmdk所在的物理盘是否有足够的空间

# xxx为你需要回收的磁盘挂载点
cd xxx
dd if=/dev/zero of=zeroes bs=4096 || rm -f zeroes

开始回收

经过上面2种虚拟机的处理后,就可以ssh到vmware物理机上进行回收

此处注意,vmkfstools要用xxx.vmdk,不要用xxx-ctk.vmk,也不要用xxx-flat.vmdk

# 处理前确认大小
du -h xxx-flat.vmdk
vmkfstools -K xxx.vmdk
# 处理后确认大小
du -h xxx-flat.vmdk

处理完后,在「vShpere Client」中,可以选择「刷新存储使用情况」来获取最新的使用情况

4 注意

磁盘有价,数据无价,请操作前做好备份,操作的时候,再三确认

5 参考资料

用pyvmomi获取Esxi下虚拟机列表

有几台Esxi,虚拟机较多,有时要找一台虚拟机是在哪台物理机上,很不方便,上网找到这个Python模块,可以列出某台物理机上所有虚拟机

一、安装模块

pip install pyvmomi

二、获取Esxi下所有虚拟机列表

先下载脚本

git clone https://github.com/vmware/pyvmomi.git

开始使用

cd pyvmomi/sample
python getallvms.py  -s 192.168.8.xxx -u xxxx -p xxxxx

使用VI client访问Vmware server 2.0

自从Vmware server升级到2.0之后,它就只提供网页的访问方式,也就是通过浏览器,使用8333端口进行访问。网页管理方式不需要安装任何附加软件,但也有不方便的一面,或者说使用不习惯的一面。比如说我想设置某系统属性,自然而然的就想到右键鼠标去找属性。并且相比程序客户端,网页界面缺少系统状态监控报表,Console也需要安装插件。
后来偶然发现,Vmware Infrastructure Client可以访问并管理Vmware server 2.0版本(Vmware Infrastructure Client是Vmware ESX的管理客户端)。
首先VI Client需要升级到2.5.0,试过2.0不行。Vmware VI client网上我没能找到,我从最新ESX中提取出来,并提供如下:
Discover Simple, Private Sharing at Drop.io

Save File: VMware-viclient.zip
安装后,使用http链接接口作为登录IP,默认为 IP:8333,如下:用户名,密码一般为NT账户。

这样,免费的Vmware Server也能享受到ESX的待遇。

http://cooldoger.spaces.live.com/blog/cns!452276F513D2D37A!202.entry

The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match

此错误主要是想找Linux内核的包含头文件找不到。要解决此问题需要安装内核源代码。

确认已安装
kernel-devel
kernel-hearders
这2个包

1. 首先要查看内核版本号:
【root@localhost ~】# uname -r // 查看内核版本号或者uname –a
如果是RHEL5的话内核应该是 2.6.18-8.el5xen
2. 已经知道自己的内核是“2.6.18-8.el5xen”,可以去此网站
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.8.tar.gz 下载到符合自己系统的内核源码。
3. 用【root@localhost ~】#tar zxvf linux-2.6.16.8.tar.gz -C /usr/src
将文件解压到指定目录/usr/src。
4. 进入/usr/src目录下,用【root@localhost ~】#mv linux-2.6.18.8 linux将解压好的文件夹名“linux-2.6.18.8”改变成“linux”。
5. 进入/usr/src/linux目录下。分别运行:
make mrproper
make oldconfig
make
执行第二个命令时碰到提示一路回车就行,第三个命令如果要完全执行完的话,可能会需要几个小时,最好让它编译完毕之后,再装虚拟机工具。如果在make刚开始执行时,即使生成了version.h和utsrelease.h,若按Ctrl+C强行退出编译。在安装完VM-ware Tools后,很可能导致系统无法正常启动。
6. 编译完毕后,进入/usr/src/linux/include/linux,用【root@localhost ~】#vi utsrelease.h (按i是插入,修改完后按Esc,然后按Shift+:,输入wq!按回车,修改完毕可以用#more utsrelease.h查看是否修改成功)将里面的版本号改成2.6.18-8.el5xen。
同上再修改version.h,在原来的基础上增加一行#define UTS_RELEASE “2.6.18-8.el5xen”,保存退出。
7. 重新启动系统,如果不重启,在安装VM-ware Tools后可能会碰到一些问题
8. 重启后就可以正常安装VM-ware Tools了。
9. 假如要改变分辨率,运行/usr/bin/vmware-config-tools.pl即可修改。

2018年五月
« 2月    
 123456
78910111213
14151617181920
21222324252627
28293031