前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >虚拟磁盘工具vmkfstools的使用

虚拟磁盘工具vmkfstools的使用

作者头像
孙杰
发布2019-10-29 14:36:57
4.6K0
发布2019-10-29 14:36:57
举报

一、 虚拟磁盘类型

  1. 厚置备延迟置零 //默认选项 创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零 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):

4afba6d8ffaad430a927beb938f7524e.png
4afba6d8ffaad430a927beb938f7524e.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档