VMWare vShphere/ESX 有如下三种硬盘置备方式:

image.png

1、厚置备延迟置零(Thinck  Provision Lazy Zeroed):默认的创建格式,创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,没有置零操作,当有IO操作时,需要等待清零操作完成后才能完成IO,即:分配好空间,执行写操作时才会按需要将其置零。

 2、厚置备置零(Thick Provision Eager Zeroed)

创建支持群集功能的厚磁盘。在创建时为虚拟磁盘分配所需的空间。并将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长。即:分配好空间并置零操作,有IO的时无需等待任何操作直接执行。

3、精简置备(Thin Provision):

精简配置就是无论磁盘分配多大,实际占用存储大小是现在使用的大小,即用多少算多少。当客户机有输入输出的时候,VMkernel首先分配需要的空间并进行清零操作,也就是说如果使用精简配置在有IO的时候需要:等待分配空间和清零,这两个步骤完成后才能进行操作,对于IO叫频繁的应用这样性能会有所下降,虽然节省了存储空间。


有时可能会由于性能问题或磁盘空间需要将虚拟机磁盘在两种模式间进行互转,虽然在虚拟机配置页面是没有办法修改的,但是这个东西实际上是能改的。

硬盘置备方法在这里看:

wKiom1SdOnWiZ61wAAJAa-Ll8qc610.jpg

温馨提醒:硬盘转换之前必须关闭客户机!

一、精简置备转厚置备

其实这个操作是比较简单的。如果在上面的窗口里看到硬盘是精简置备模式,即可执行转换操作。

两种方法:

方法一:VMWare官方方法,如下图所示

切换到数据仓库视图

image.png

在左边导航窗口选中需要转换的存储数据仓库,然后单击下面图片所示的“浏览此数据仓库”

image.png

找到对应虚拟磁盘,鼠标右键,在弹出的菜单中,选中“扩展(Inflate)”扩充选项会将磁盘转换为厚置备。

image.png

下图附上中文界面的操作界面:

wKioL1SdO8yyzBHuAAR6GhnyAdw732.jpg

注意:如果扩充按钮是灰色的,有可能是因为:1、没关机;2、该硬盘已经是厚置备了。


方法二:esxcli命令转换

其实方法一比较简单。当然,也可以用esxcli去把它转换一下,不过显然没有鼠标点点方便。方法二的具体操作,请参见厚置备转精简置备章节。


二、厚置备转精简置备

方法依旧有两种

方法一:VMWare推荐方法

这个其实VMWare也给出了官方的解决方案(感觉没多大作用!)。

VMWare如是说:

要通过更改数据存储和使用脱机虚拟机迁移将虚拟机基础磁盘从厚置备转换为精简置备,请执行以下操作:

注意:此过程需要多个数据存储。如果仅存在一个数据存储,可以将虚拟机克隆到带有精简置备磁盘的目标虚拟机,而不需要执行迁移。

  1. 关闭虚拟机电源。

  2. 右键单击虚拟机,然后单击迁移。

  3. 单击更改数据存储。

  4. 单击下一步,然后选择一个与当前数据存储不同的数据存储。

  5. 在下拉列表中选择精简置备虚拟磁盘格式。

  6. 单击下一步,然后单击完成。可以在 vCenter Server 的任务和事件视图中监控转换进度。

按照下面的步骤从 vSphere Webclient 中对 vSphere 5.5 执行 Storage vMotion 操作:

  1. 右键单击虚拟机,然后选择迁移。

        要找到虚拟机,请选择数据中心、文件夹、群集、资源池、主机或 vApp。

        单击相关对象选项卡,然后单击虚拟机。

  1. 选择更改数据存储,然后单击下一步。

  2. 为虚拟机的磁盘选择精简置备,然后单击下一步。

  3. 从虚拟机存储策略下拉菜单中选择虚拟机存储策略,然后单击下一步。

  4. 选择用于存储虚拟机文件的数据存储位置,然后单击下一步。

  5. 检查“检查选择”页面上的信息,然后单击完成

官方这个方法实际上是适合于多个存储,可以使用迁移的方式。不过如果我们只有一个存储的话,则需要如下克隆的方式:

右键点击要转换的虚拟机,然后点击克隆

wKioL1SdPGLgct88AAEz-oPEgfk346.jpg

给他一个新的名字,指定一个位置,然后下一步

wKiom1SdO9PiurptAAGRm_zsHoo890.jpg

选择一个主机,下一步

wKioL1SdPKTzBHqyAAEly9YQqoQ039.jpg

重点来了,选择存储器的时候,这里有个下拉菜单,选择精简置备,下一步,然后后面的操作,按需进行。

wKioL1SdPMWh1DnZAAJNJDk1wAE112.jpg

过程可能比较慢,取决于文件大小。

wKioL1SdPSGhHqrWAABqWw6cgYs693.jpg

方法二:esxcli方法

对于我们这种没有多个存储的人们以及不想克隆虚拟机的强迫症患者来说,怎么办呢?那么,好方法来了!用ESX的CLI可以很好的解决这个问题。

首先,需要启动ESX服务器的SSH功能,点击主机->配置->安全配置文件->属性->SSH->选项->启动。如下图:

wKiom1SdPEmR0_2-AAYgRE8Jg_Y433.jpg

然后用一些诸如Putty、SecureCRT之类的SSH软件连接一下服务器,至于怎么连接,怎么登陆,这里不做详细介绍,自己搜索去。

实际上这个ESXi的CLI就和Linux命令差不多,本次用的主要工具有mv、cd、vi和vmkfstools。vmkfstools就是一个转换磁盘的工具(至少我理解是这样的)可以克隆磁盘啊、填零啊之类的。

先说一点,就是VMWare的磁盘分为两个主要文件,一个是XXX.vmdk还有一个是XXX-flat.vmdk。XXX.vmdk是可以用vi打开编辑的,是个文本文件,至于flat的文件,看他大小就知道这个才是真正存数据的东西!但貌似XXX.vmdk是比较重要的,个人理解应该是这个文件是整个虚拟磁盘的描述,各项操作通过调取这个文件中记录的配置,进而确定实际数据磁盘文件的读取方式。VMWare虚拟机的.vmx文件也是这样。启动虚拟机,VMWare需要先读取.vmx中对虚拟机的配置描述,进而按照配置引导虚拟机。.vmx文件中也保留着虚拟磁盘镜像名称的配置。当然,vmx文件中也写了应该加载哪个vmdk文件。

vmkfstools这个命令的语法是:

# vmkfstools -i <Source-File> -d {thick|thin} <Dest-File>

 -i选项为克隆磁盘镜像

Source-File为源文件,比如XXX.vmdk

-d是克隆目标文件选项,后面可以加thick或thin,不加则原封不动克隆一份,源文件是什么置备方式,目标文件就是什么样

Dest-File为目标文件,比如XXX.vmdk

使用该命令转换vmdk文件,其首先会检查vmdk中对数据文件的描述。若找不到描述的flat.vmdk则会报错。转换后,新的vmdk文件中的flat.vmdk会自动更改为新的flat.vmdk名。

比如,原文件为old.vmdk及old-flat.vmdk,厚制备,使用vi编辑器打开old.vmdk会发现,其中有如下一行:

wKiom1SdPNLB4IiGAAHzAxhFSE8724.jpg

若希望转换该文件为

那么,使用vmkfstools命令转换磁盘为精简置备的命令如下:

 # vmkfstools -i old.vmdk -d thin new.vmdk

经过漫长的等待之后,即会生成两个新文件,new.vmdk和new-flat.vmdk。转换后,上图所述区域会自动变为新的文件名,也就是new-flat.vmdk。

但是由于vmx文件中描述的虚拟机磁盘文件为old.vmdk,那么,我们需要将新生成的两个文件new.vmdk及new-flat.vmdk重命名为old.vmdk和old-flat.vmdk,并将上述文件中的相关配置修改为新的磁盘文件。

或者修改.vmx文件指向新的磁盘文件,vmx文件修改下图所示位置。

wKioL1SdPezxkXm2AAEXK7iPPcs977.jpg

不过据说此举需要重新装载vmx文件重新加载虚拟机,具体我没试过。

 至此,磁盘转换工作完成。