vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

Vmware vsphere精简置备和厚置备转换过程教程

                                                        2021年6月4日

本次版本是在vsphere6.5 esxi
本文仅仅是使用命令和只有esxi情况下的过程,如果有vcsa然后集群形式,那可以在webclien界面使用秦迁移来达到改变磁盘类型、或者使用虚机为模板,然后模板新建虚机时候选择类型。web页面操作就不赘述了。

本文有两部分,先说下理论,然后过程教程

第一部分-理论部分:
关于虚机磁盘类型有三种:精简置备、厚置备置零、厚置备延迟置零
(1) thin provision就是一种按需分配的格式,创建时虚拟磁盘不会分配给所有需要的空间,而是根据需要,vmdk自动增大并一边zero一边使用这些新空间;vmdk文件的真实大小不等于创建的虚拟磁盘的大小,而只是等于实际数据的大小。(zero就是对磁盘空白处写入0,可以理解成或者翻译成初始化)。

(2) zeroedthick格式,在创建时分配给所有空间,vmdk文件大小等于创建的虚拟磁盘大小,虚拟磁盘中的空闲空间被预占,但空闲空间(empty space)并没有zeroed,需要在使用的时候再zero。由于磁盘在第一次写入时必须zero,这个类型的磁盘在第一次磁盘块写入时会有轻微的I/O性能损失。

(3) eagerzeroedthick,在创建时分配给所有空间,vmdk文件大小等于创建的虚拟磁盘大小,虚拟磁盘中的空闲空间被预占。另外,在创建磁盘时,会将所有数据块都初始化(zero),这将花费更多时间。这种格式的磁盘因为已经zero化,使用时不再需要zero,因此第一次写入数据到磁盘块时的性能较好。启用FT必须使用eagerzeoedthick格式的虚拟磁盘(如果原先不是,也会被转换成这种格式)

基本用法:
vmkfstools -i <Source-File> -d {thick|thin} <Dest-File> 

thick细分为厚置备置零和厚置备延迟置零,即zeroedthick和leagerzeroedthick,因此在-d后面如果是转换为thick,参数不是thick,而是跟zeroedthick或者eagerzeroedthick

删除vmdk
vmkfstools -U xxx.vmdk 删除xxx.vmdk文件

重命名
vmkfstools -E xxx.vmdk  xxx_new.vmdk 
或者用rm  mv也可以

然后vmkfstools也给出了直接转换,不需要clone,但是直接转换只支持thin转为thick,不支持thick直接转为thin
精简置备转换为厚置备置零: 
vmkfstools --inflatedisk xxxxx.vmdk    
 --inflatedisk可以用-j来替代,两个是等同的
厚置备延迟置零转换位厚置备置零: 
vmkfstools --eagerzero xxxxxx.vmdk  
--eagerzero可以用-k来替代,等同的帮助文档里有写
厚置备转换为精简置备,是不可以直接转换的,需要使用clone方式
vmkfstools -i xxxx.vmdk -d thin xxxx_new.vmdk
转换后可以进行磁盘检查/修复
vmkfstools -x xxxx.vmdk

本次版本是vsphere6.5 esxi

Vmkfstools 语法

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

第二部分-操作过程;
开始转换工作:

  1. 首先查看当前虚机磁盘格式,确定是精简置备

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

2.Ssh或者shell到宿主机后台
进入到对应存储目录下查看当前目标虚机相关文件
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

看红色圈出来的,就是虚机两个vmdk文件,这个地方有一个ELK_02.vmdk,这是因为这个截图是在我已经开始转换时候截图的。可以看到ELK_02-flat.vmdk是500G,而ELK_0-flat.vmdk是244.5G就可以看出来是精简置备还是厚置备了。

命令
vmkfstools -i ELK_0.vmdk -d eagerzeroedthick ELK_02.vmdk
参数:-i指定源文件,有两个vmdk文件,要搞清楚,不是带有flat的vmdk文件。 -d指定目的文件

[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] vmkfstools -i ELK_0.vmdk -d eagerzeroedthick ELK_02.vmdk
Destination disk format: VMFS eagerzeroedthick
Cloning disk ‘ELK_0.vmdk‘...
Clone: 49% done.
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

然后处理文件,如果原来的不要了,可以直接把原来的两个vmdk删除掉或者移动到其他目录,然后把两个新的vmdk改名为原来的名字,开机测试。
这边是保留原来的两个vmdk,把新的vmdk移动到其他文件夹,然后再把非vmdk文件复制一份过去,过程如下截图,在存储目录新建了一个vmtemu目录。
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8] du -sh ELK
744.5G ELK
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8] cd ELK/
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_0-flat.vmdk ELK_0.vmdk ELK_02-flat.vmdk ELK_02.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_0-flat.vmdk ELK_0.vmdk ELK_02-flat.vmdk ELK_02.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] mv ELK_02-flat.vmdk /vmfs/volumes/datastore1/vmtestmu/ELK_02-flat.vmdk
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_0-flat.vmdk ELK_0.vmdk ELK_02.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] mv ELK_02.vmdk /vmfs/volumes/datastore1/vmtestmu/ELK_02.vmdk
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_0-flat.vmdk ELK_0.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cp ELK.nvram /vmfs/volumes/datastore1/vmtestmu/ELK.nvram
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cp ELK.vmsd /vmfs/volumes/datastore1/vmtestmu/ELK.vmsd
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cp ELK.vmx /vmfs/volumes/datastore1/vmtestmu/ELK.vmx
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cp ELK.vmxf /vmfs/volumes/datastore1/vmtestmu/ELK.vmxf
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cp vmware.log /vmfs/volumes/datastore1/vmtestmu/vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_0-flat.vmdk ELK_0.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/ELK] cd ..
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8] ls
ELK ISO T100报表 elk oldvmfiles storagebackup vmtestmu
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8]
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8] cd vmtestmu/
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/vmtestmu] ls
ELK.nvram ELK.vmsd ELK.vmx ELK.vmxf ELK_02-flat.vmdk ELK_02.vmdk vmware.log
[root@localhost:/vmfs/volumes/609aa4ce-ad232f16-1585-0894ef08dcc8/vmtestmu]

保持转换后的新的vmdk名字不变,修改配置文件的方式使得改虚机可以正常启动:
查看一下转换前的vmdk文件内容:
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
在转换后的vmdk描述文件,发现RW 1048576000 VMFS "ELK_02-flat.vmdk" 实际上已经自动修改了,如果你还是原来的,就把这个位置的vmdk改成xxx-flat.vmdk
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
修改vmx文件,下面截图红色部分修改
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
修改为
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

这个地方有一个参数是displayName = 这个后面的名字就是虚机展示出来的名字,直接修改为ELK_02
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程
在配置里还会看到下面这个截图红色部分,不用修改,因为在后面操作中,选择了“我已移动”或者“我已复制”会自动修改这部分配置,在本文后面也会提到

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

注册虚机,如果你是改为原来名字,那需要取消原来虚机注册,然后重新注册一下,如果是移动到了另外位置,原来虚机保持不动,就像上面那样修改,则不需要取消注册,因为虚机名称已经改了,修改为ELK_02了,即刚displayName这个参数,配置文件也做了部分修改,因此找到虚机文件后直接“注册虚机”。
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

选择“我已复制”

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

然后虚拟机开机
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

我们在去看一下配置文件里提到的vswp这个红色位置就自动更改了。
vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

vmware vsphere 精简置备、厚置备转换 thin和thick转换教程

上一篇:Linux防止rm误删除的最佳实践


下一篇:Xshell通过ssh登录远程服务器(秘钥)