虚拟磁盘工具vmkfstools怎么用

89次阅读
没有评论

共计 4380 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要介绍虚拟磁盘工具 vmkfstools 怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、虚拟磁盘类型

厚置备延迟置零 // 默认选项

创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零

2. 厚置备置零  

创建支持群集功能的厚磁盘。在创建时为虚拟磁盘分配所需的空间。创建中会将物理设备上保留数据置零。创建所需的时间可能会比创建其他类型的磁盘长。

3. 精简置备  

使用该磁盘最初所需要的数据存储空间。如果以后精简磁盘需要更多空间,则它可以增长到为其分配的最大容量。

二、vmkfstools 操作实例

操作前请先关闭虚拟机,打开 ESXI 配置里的安全配置文件里的 ssh 服务,并需要登陆到 ESXI,输入用户名及密码。

1 虚拟磁盘类型转换,thick to thin

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.1 进入虚拟机所在的 datastore 目录, 每个目录为一个虚拟机

# cd /vmfs/volumes/datastore1

/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # ls

cobbler-5.85 converter-two-57.72 datanode2-57.78
 

1.2 此次转换的虚拟机为 converter-two-57.72, 进入该虚拟机目录

/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # cd converter-two-57.72/

/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404/converter-two-57.72 # du -sh *

20.0G converter-two-flat.vmdk 64.0k converter-two.nvram

64.0k converter-two.vmdk 0 converter-two.vmsd

64.0k converter-two.vmx 64.0k converter-two.vmxf
 

1.3 转换过程中需要用到的文件是 vmdk 磁盘文件,vmdk 有两种, 一种是“虚拟机名.vmdk”,vmdk 文件很小, 存放了虚拟磁盘的一些配置信息(如虚拟磁盘数据文件等);另一种是“虚拟机名 -flat.vmdk”, 实际数据都存放在 flat.vmdk 文件中, 转换时需要使用 vmdk 文件而不是 flat.vmdk 文件。
 

1.4 开始转换过程

A:使用 vmkfstools 将厚模式的 vmdk 文件克隆为精简的 vmdk 磁盘文件,转换后将生成两个新的 vmdk 和 flat.vmdk 文件

/vmfs/…./converter-two-57.72 # vmkfstools -i converter-two.vmdk -d thin converter-two_new.vmdk

/vmfs/…./converter-two-57.72 # du -sh *

20.0G converter-two-flat.vmdk

64.0k converter-two.vmdk

64.0k converter-two.vmx

64.0k converter-two.vmxf

7.9G converter-two_new-flat.vmdk

64.0k converter-two_new.vmdk

B:将原来的厚模式磁盘文件 vmdk 和 flat.vmdk 文件备份

/vmfs/…./converter-two-57.72 # mv converter-two.vmdk converter-two_old.vmdk

/vmfs/…./converter-two-57.72 # mv converter-two-flat.vmdk converter-two-flat_old.vmdk

C:将新生成的 vmdk 和 flat.vmdk 磁盘文件分别重命名为原有磁盘名称

/vmfs/…./converter-two-57.72 # mv converter-two_new.vmdk converter-two.vmdk

/vmfs/…./converter-two-57.72 # mv converter-two_new-flat.vmdk converter-two-flat.vmdk

D:编辑 vmdk 文件,确保 # Extent description converter-two-flat.vmdk 为原有磁盘名称

/vmfs/…./converter-two-57.72 # cat converter-two.vmdk

# Disk DescriptorFile

version=1

encoding= UTF-8

CID=9cad19cd

parentCID=ffffffff

isNativeSnapshot= no

createType= vmfs

# Extent description

RW 41932416 VMFS converter-two_new-flat.vmdk
 

# The Disk Data Base

#DDB
 

ddb.deletable = true

ddb.toolsVersion = 0

ddb.geometry.biosHeads = 255

ddb.geometry.biosSectors = 63

ddb.geometry.biosCylinders = 2610

ddb.virtualHWVersion = 7

ddb.longContentID = 364b422b2ceb3f6f0a4e88d09cad19cd

ddb.uuid = 60 00 C2 94 89 93 59 2c-d9 22 d3 e4 e6 b3 a4 22

ddb.geometry.cylinders = 2610

ddb.geometry.heads = 255

ddb.geometry.sectors = 63

ddb.thinProvisioned = 1

ddb.adapterType = lsilogic

 

E:启动虚拟机检查是否工作正常,对比精简置备与厚置备大小

/converter-two-57.72 # du -sh *500.0M converter-two-326dc793.vswp

7.9G converter-two-flat.vmdk

20.0G converter-two-flat_old.vmdk

64.0k converter-two.nvram

64.0k converter-two.vmdk

 

1.5 其它方式

  精简置备转换至厚置备置零:

vmkfstools –inflatedisk /vmfs/volumes/DatastoreName/VMName/VMName.vmdk

  厚置备延迟置零转换至厚置备置零:

vmkfstools –eagerzero /vmfs/volumes/DatastoreName/VMName/VMName.vmdk

 

2 更改虚拟磁盘 (vmdk) 大小

要特別注意的是,如果此虚拟机已有快照,请先删除所有快照在执行以下操作,否则这个 VMDK 将出错,內部的资料丢失。

2.1 vmkfstools 命令格式

vmkfstools -X [新的大小] [目的 vmdk 文件]
 

2.2 当前虚拟机虚拟磁盘大小

[root@bz-cl2 ~]# fdisk -l /dev/sda

Disk /dev/sda: 21.4 GB, 21469396992 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes
 

2.3 关闭虚拟机,登陆 ESXI 调整虚拟磁盘大小

/converter-two-57.72 # vmkfstools -X 40g converter-two.vmdk
 

2.4 开启虚拟机,验证虚拟磁盘大小

[root@bz-cl2 ~]# fdisk -l /dev/sda

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes
 

三 vmkfstools 命令参数

/bin # vmkfstools

vmkfstools -C –createfs vmfs3

-b –blocksize #[mMkK]

-S –setfsname fsName

-Z –spanfs span-partition

-G –growfs grown-partition

问题补充:

给虚机 VM1 精简配置了 1TB 空间,经过长期的运行,现在在 VM1 的 windows 系统里看到数据只有 200GB 左右,但是 vmdk 文件已有 1TB。我觉得,形成的原因是精简配置只增长不收缩。

解决:

通过 Storage vMotion 在同一文件系统且磁盘区块大小一样的存储之间是无法回收膨胀的 Thin Provision 的 VMDK 空间的。因为 NTFS 文件系统的机制,被写入过的文件即使将文件删除系统也不会将磁盘区块置零,下次再写入数据只会优先操作标记为零的区块来写。目前比较简单方便的方法是,在 VM 上下载一个 SDelete.exe 的程序,然后用 cmd 运行,参数用 -z,这个参数是将那些被写入过数据的区块标记为零,并且是针对虚拟机使用,在物理机上这个参数无效。格式如:sdelete.exe -z c:,运行过程比较慢,耐心等待,期间在操作系统中会看见你的磁盘会被占满,等运行完成后又会回到正常的容量。
命令运行完成后,用 SSH 连接到 ESXi 主机上进到需要回收空间的.vmdk 目录下,运行 vmkfstools 工具,参数用 -K(因为 ESXi 主机是 Linux 的底层 OS 所以注意大小写),如 vmkfstools -K VirtualMachine.vmdk,然后等运行完成后就能够成功回收膨胀的 Thin Provision 空间了。
该方法仅限于 Windows 系统,Linux 和其他非 NTFS 文件系统目前我还没找到回收的方法。
附上测试图一张(回收空间之前我的 vCenter Server.vmdk 的占用空间是 96.0GB):

虚拟磁盘工具 vmkfstools 怎么用

以上是“虚拟磁盘工具 vmkfstools 怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4380字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)