虚拟磁盘工具vmkfstools的使用

2023-11-11


一、 虚拟磁盘类型

  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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟磁盘工具vmkfstools的使用 的相关文章

随机推荐

  • 字节跳动、今日头条、阿里爸爸都在使用Flutter,你还有拒绝的理由?

    前言 Flutter是谷歌的移动端跨平台UI框架 可以快速在iOS和Android上构建高质量的原生用户界面 Flutter可以与现有的代码一起工作 在全世界 Flutter正在被越来越多的开发者和组织使用 并且Flutter是完全免费 开
  • 001--STM32使用--TIM8的PWM输出

    void TIM8 PWM Init u16 arr u16 psc GPIO InitTypeDef GPIO InitStructure TIM TimeBaseInitTypeDef TIM TimeBaseStructure TIM
  • 深度学习Pytorch框架学习-------安装torch避坑指南

    如果想要使用torch进行深度学习环境的搭建 那么首要的目标应该是从显卡驱动开始 而不是直接直接安装pytorch 而事实上对于大多数新手而言 都是跳过了前面的重要步骤 直接选择安装pytoch 这样操作的结果就是出现各种各样的bug 代码
  • Linux查看用户属于哪些组或组下有哪些用户

    查看所有用户 compgen 是 bash 的内置命令 它将显示所有可用的命令 别名和函数 compgen u 查看当前用户属于那些组 groups 查看某个用户属于哪些组 groups USERNAME 查看系统有哪些组 getent g
  • 【C++】模拟实现STL容器:list

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 list的介绍 二 list的排序 三 迭代器 1 l
  • Window10 Mysql服务端安装

    一 下载mysql 点击 Mysql安装包下载 选择下面那个文件 比较大的 下载 不想下载这个版本的也可以选择右侧的Looking for previous GA versions No thanks just start my downl
  • latex在vscode中的使用

    latex和endnote maketile 显示author之类的信息 在 begin document 下使用 maketitle 一行后面加 可以换行 latex在vscode https zhuanlan zhihu com p 1
  • Yolov5权重 预训练模型 V4.0版本

    首先用bash weights download weights sh在主目录执行 下载模型要比直接去release快很多 不过你可能更想要这个 链接 https pan baidu com s 1Wc1jpP wcCKfwtWf iNml
  • Python pillow扩展库图像编程

  • ClickHouse相关SQL总结:创建表、分区主键排序设置、删除表、删除分区、修改表字段

    文章目录 表操作 创建数据库 创建表 删除表 清空表 删除表某个分区 表字段column操作 添加字段 删除字段 修改字段 修改字段名称 表操作 创建数据库 create database radar 创建表 CREATE TABLE ra
  • 【设计模式】MVC 模式

    MVC 模式代表 Model View Controller 模型 视图 控制器 模式 这种模式用于应用程序的分层开发 Model 模型 模型代表一个存取数据的对象或 JAVA POJO 它也可以带有逻辑 在数据变化时更新控制器 View
  • 可重入锁(ReentrantLock为例)

    什么是可重入锁 STFW得到以下两种主流解释 解释一 可重入就是说某个线程已经获得某个锁 可以再次获取锁而不会出现死锁 解释二 可重入锁又称递归锁 是指同一个线程在外层方法获取锁的时候 再进入该线程的内层方法会自动获取锁 前提是锁对象得是同
  • 关于C++编程中引入头文件的顺序

    头文件顺序 场景 头文件顺序 场景 此文仅记录在编写程序的时候 h或者 cpp引入头文件时 标准库头文件 自己定义的类的头文件的先后顺序 c 兼容c语言 故而有时还是涉及到c语言的标准库头文件的引入 这里只记录其引入的顺序 头文件顺序 头文
  • Open3D Ransac拟合分割多个平面(方法二)

    目录 一 算法原理 二 代码实现 三 结果展示 四 测试数据 一 算法原理 算法的核心原理还是RANSAC拟合平面 具体理论可参考 Open3D 使用RANSAC分割平面 只是对代码稍加修改使其适用于分割点云数据中的多个平面 二 代码实现
  • SSM实现网上商城 有聊天功能

    1 项目介绍 实现一个网上商城 商品信息展示 购物车 订单管理 个人中心 商品评价 商品搜索 地址管理 聊天 后台管理 商品增删改查 分类管理 活动管理 客服聊天回复 2 开发环境 开发环境 IDEA eclipse Tomcat8 5 数
  • centos6.5破解,没成功

    安装aircrack ng make make install 新建crack文件夹下操作以下步骤 方便 监听wlan0 iwconfig eth0有线网卡 wlan0无线网卡 sudo airmon ng start wlan0 启动 s
  • Anaconda bug

    报错如下 DEBUG urllib3 connectionpool Starting new HTTPS connection 1 repo anaconda com 443 DEBUG urllib3 connectionpool Sta
  • C语言中的快速排序库函数

    前言 由于自己的记性一直不好 总是记不住c语言中的快速排序函数 于是自己写下博客来记录一下 快速排序库函数 c语言中的快速排序库函数如下 注意 库函数是在stdlib h头文件中 qsort arr length size t cmp 其中
  • python爬虫,爬取表格数据

    python爬虫 爬取全国空气质量指数 编程环境 Jupyter Notebook 所要爬取的网页数据内容如下图 python爬虫代码及含义详细说明 全国城市 import time import requests from bs4 imp
  • 虚拟磁盘工具vmkfstools的使用

    一 虚拟磁盘类型 厚置备延迟置零 默认选项创建过程中为虚拟磁盘分配所需空间 创建时不会擦除物理设备上保留的任何数据 但是以后从虚拟机首次执行写操作时会按需要将其置零 2 厚置备置零 创建支持群集功能的厚磁盘 在创建时为虚拟磁盘分配所需的空间