VMWare ESX/ESXi 虚拟机硬盘的厚置备(Thick Provision)与精简置备(Thin Provision)的转换
VMWare ESX/ESXi 有两种硬盘置备方式,厚制备(thick)和精简置备(Thin)
有时可能会由于性能问题或磁盘空间需要将虚拟机磁盘在两种模式间进行互转,虽然在虚拟机配置页面是没有办法修改的,但是这个东西实际上是能改的。
硬盘置备方法在这里看:
硬盘转换之前必须关闭客户机!!!
一、精简置备转厚置备
其实这个操作是比较简单的。如果在上面的窗口里看到硬盘是精简置备模式,即可执行转换操作。
两种方法:
方法一:VMWare官方方法
VMWare如是说:
· 单击虚拟机的摘要选项卡。
· 在资源下,右键单击虚拟机所在的数据存储,然后单击浏览数据存储。
· 双击虚拟机文件夹以显示 .vmdk 文件。
· 右键单击 .vmdk 文件,然后单击扩充。扩充选项会将磁盘转换为厚置备。
如果扩充按钮是灰色的,有可能是因为:1、没关机;2、该硬盘已经是厚置备了。
方法二:esxcli命令转换
其实方法一比较简单。当然,也可以用esxcli去把它转换一下,不过显然没有鼠标点点方便。方法二的具体操作,请参见厚置备转精简置备章节。。。然后照猫画虎一下。。。
实际上还有个方法三,就是把精简置备克隆成厚制备,不过这个方法,我个人认为,既然已有方法一,要不是需要多台虚拟机的话,这个方法就是一个脱裤子放屁的做法。。。做法同样参考下一章节。。。
扩充个这破玩意老慢了。。。扩一个得半天。。。
二、厚置备转精简置备
方法依旧有两种(后面有好方法)
方法一:VMWare推荐方法
这个其实VMWare也给出了官方的解决方案,不过挺坑的。
VMWare如是说:
要通过更改数据存储和使用脱机虚拟机迁移将虚拟机基础磁盘从厚置备转换为精简置备,请执行以下操作:
注意:此过程需要多个数据存储。如果仅存在一个数据存储,可以将虚拟机克隆到带有精简置备磁盘的目标虚拟机,而不需要执行迁移。
1. 关闭虚拟机电源。
2. 右键单击虚拟机,然后单击迁移。
3. 单击更改数据存储。
4. 单击下一步,然后选择一个与当前数据存储不同的数据存储。
5. 在下拉列表中选择精简置备虚拟磁盘格式。
6. 单击下一步,然后单击完成。可以在 vCenter Server 的任务和事件视图中监控转换进度。
按照下面的步骤从 vSphere Webclient 中对 vSphere 5.5 执行 Storage vMotion 操作:
1. 右键单击虚拟机,然后选择迁移。
1. 要找到虚拟机,请选择数据中心、文件夹、群集、资源池、主机或 vApp。
2. 单击相关对象选项卡,然后单击虚拟机。
2. 选择更改数据存储,然后单击下一步。
3. 为虚拟机的磁盘选择精简置备,然后单击下一步。
4. 从虚拟机存储策略下拉菜单中选择虚拟机存储策略,然后单击下一步。
5. 选择用于存储虚拟机文件的数据存储位置,然后单击下一步。
6. 检查“检查选择”页面上的信息,然后单击完成
他这个方法实际上是说有多个存储的话,可以使用迁移的方式。不过我们有的时候只有一个存储,则需要以克隆的方式。
右键点击要转换的虚拟机,然后点击克隆
给他一个新的名字,指定一个位置,然后下一步
选择一个主机,下一步
重点来了,选择存储器的时候,这里有个下拉菜单,选择精简置备,下一步,然后后面的操作,按需进行。
然后,还是那句话,老慢了。。。我一个20G的Windows2003,克隆了三个多小时。。。
方法二:esxcli方法
esxcli方法需要使用SSH登录ESX/ESXi主机,默认ESX/ESXi主机没有开启SSH服务,需要先打开SSH;
1.开启SSH服务
选择虚拟机所在的ESX/ESXi主机,点击”配置”选项卡,点击”安全配置文件”,点击服务面板的”属性”;
2.使用SSH工具登陆并生成Thin磁盘
用户名:root
密码:使用vSphere Client登录ESX/ESXi的密码
<1> 进入虚拟机所在的datastore目录
# cd /vmfs/volumes/datastore1/
# ls
Data_base_SQL
RHEL-5.5-x64-temp
SQLServer2008
SUSE11
thick2thin
vCenter Server
该datastore目录下可能有很多与虚拟机同名的目录,本次转换的虚拟机为thick2thin,进入该虚拟机目录
# cd thick2thin/
# ls
thick2thin-c27753e1.vswp thick2thin.vmxf
thick2thin-flat.vmdk thick2thin_1-flat.vmdk
thick2thin.nvram thick2thin_1.vmdk
thick2thin.vmdk vmware.log
thick2thin.vmsd vmx-thick2thin-3262600161-1.vswp
thick2thin.vmx
该虚拟机目录下有许多以虚拟机名开头的文件,其中转换过程中需要用到的文件是vmdk磁盘文件,vmdk有两种,一种是”虚拟机名.vmdk”,另一种是”虚拟机名-flat.vmdk”,vmdk文件很小,存放了虚拟磁盘的一些配置信息(如虚拟磁盘数据文件等),实际数据都存放在flat.vmdk文件中,转换时需要使用vmdk文件而不是flat.vmdk文件;此例中有两个虚拟磁盘,所以vmdk和flat.vmdk文件各有两个;
<2>开始转换
转换思路:
-
先使用vmkfstools将厚模式的vmdk文件克隆为精简的vmdk磁盘文件,克隆出的精简磁盘文件将包括vmdk和flat.vmdk文件;
-
将原来的厚模式磁盘文件vmdk和flat.vmdk文件备份或删除(建议使用mv命令将其重命名备份,以免因转换失败而误删数据);
-
将新生成的vmdk和flat.vmdk磁盘文件分别重命名为与原磁盘同名的磁盘文件
-
重新从虚拟机清单中删除添加虚拟机
Vmkfstools命令格式
# vmkfstools -i<source-disk-name.vmdk>-d {thin|thick}<destination-disk-name.vmdk>
参数解释:
-i <source-disk-name.vmdk>参数:原vmdk磁盘名
-d {thin|thick}<destination-disk-name.vmdk> :目标磁盘的格式,thin或thick; <destination-disk-name.vmdk>为要生成的目标vmdk磁盘名;
1) 转换磁盘
# vmkfstools -i thick2thin.vmdk -d thin thin.vmdk
Destination diskformat: VMFS thin-provisioned
Cloning disk'thick2thin.vmdk'...
Clone: 100% done.
克隆完成将生成两个新的vmdk和flat.vmdk文件
# ls
thick2thin-flat.vmdk thick2thin.vmx thin-flat.vmdk
thick2thin.nvram thick2thin.vmxf thin.vmdk
thick2thin.vmdk thick2thin_1-flat.vmdk vmware.log
thick2thin.vmsd thick2thin_1.vmdk
使用mv重命名将原磁盘vmdk和flat.vmdk备份
# mvthick2thin.vmdk thick2thin.vmdk.bak
# mvthick2thin-flat.vmdk thick2thin-flat.vmdk.bak
将新生成的精简vmdk文件重命名为原厚模式的磁盘名称
# mv thin.vmdk thick2thin.vmdk
注意:在vSphere Client中启动虚拟机,做到此步基本已经完成了Thick to Thin的转换,并且虚拟机已经可以正常启动,但是我们发现flat.vmdk文件并没有更改名字虚拟机也可以正常启动,因为新生成vmdk文件里指定了新的flat.vmdk文件,我们可以通过vi手动更改文件名来修改虚拟机的flat.vmdk名称以便于后期虚机的维护和管理;此时可以启动虚拟机进行测试一下;
更改磁盘名:
首先关闭虚拟机,使用ssh进入主机的虚拟机目录下,使用mv命令将新生成的thin-flat.vmdk文件更改成原来的虚机磁盘名称thick2thin-flat.vmdk
# mvthin-flat.vmdk thick2thin-flat.vmdk
此时如果在vSphere Client启动虚拟机将报”找不到磁盘文件”类似的错误,因为虚拟机启动时需要通过vmdk文件找到flat.vmdk文件,所以需要修改vmdk文件中的磁盘文件名;
使用vi修改其中一行含有flat.vmdk的参数,将该部分修改成新的磁盘文件名
# vi thick2thin.vmdk
# Extentdescription
RW 83886080 VMFS"thick2thin-flat.vmdk" #注意,此处原来为转换成的thin-flat.vmdk
然后将虚拟机从清单中移除
在数据存储里将vmx文件添加到清单
保持默认下一步
按照原来的配置下一步
完成
此时打开虚拟机的”编辑配置”选项
查看刚转换的磁盘,已经变成了精简置备模式
而原来的虚拟磁盘因为没有转换,仍为厚置备模式;
参考文章链接:https://my.oschina.net/u/183622/blog/138035
共有 0 条评论