ESXi 虚拟硬盘厚置备、精简置备、立即置零三种模式区别与切换完整实战教程

ESXi 虚拟机磁盘的厚置备延迟置零、厚置备立即置零、精简置备三种模式详解,覆盖 vSphere Client、vmkfstools 命令、PowerCLI 批量三种切换方法与完整实战。
ESXi 虚拟硬盘三种置备模式切换教程

在日常的 ESXi 运维工作中,虚拟磁盘(VMDK)的”置备模式”是影响性能、空间利用率和备份时间的关键配置。一块 200GB 的虚拟磁盘,实际占用多少物理空间?初次写盘会不会出现”卡顿”?这些都由置备模式决定。很多工程师在新建虚拟机时直接用默认一路回车,等到出现”精简置备磁盘已全部占用”告警,或者反过来”明明数据库要求厚置备却一直报 IO 抖动”时,才回过头来查 VMDK 模式——这时候再切换,往往就要面对”转换要停机吗””数据会不会丢””vmkfstools 命令怎么写”这一连串问题。

这篇文章会把 ESXi 虚拟磁盘的三种置备模式——厚置备延迟置零、厚置备立即置零、精简置备——一次性讲透,覆盖 vSphere Client 切换、vmkfstools 命令行转换和 PowerCLI 批量处理三种方式,并配上实战案例与数据备份注意事项。文中涉及的命令路径以 VMware vSphere 7.0/8.0 官方文档为准(个别参数在不同小版本间可能微调,请以官方最新文档为准)。

一、虚拟磁盘置备模式核心定义

ESXi 在虚拟机配置磁盘时,会在数据存储上创建一个或多个 VMDK 文件。VMDK 文件的空间分配策略分为三种,核心区别在于”空间何时分配”和”数据块何时置零”两个问题。

1. 厚置备延迟置零(Thick Provision Lazy Zeroed)

这是 vSphere Client 中”厚置备”选项的默认子类型。创建时立即为虚拟磁盘分配全部额定空间(例如 200GB 磁盘就立刻占满 200GB 数据存储容量),但空间内容不主动清零——首次写入数据时由 ESXi 内置的 zeroing 流程按需清零写回。

  • 空间占用:创建瞬间等于额定容量,datastore 余量立刻被吃掉
  • 写盘性能:日常写 IO 与 eagerzeroedthick 几乎一致;但首次写入新块会有一次性 zero 写入开销,单次最大 ~10-50ms,数据库密集场景可能抖动
  • 典型场景:通用虚拟机、文件服务器、应用服务器;时间敏感度不高的负载

2. 厚置备立即置零(Thick Provision Eager Zeroed)

创建时即分配全部空间,并对所有数据块执行同步清零(zero write)操作。VMDK metadata 中以 eagerzeroedthick 标记。这一步耗时最长,1TB 磁盘通常需要 10-30 分钟(视存储介质性能而定),但换来的是首次写 IO 时没有任何延迟。

  • 空间占用:同 lazyzeroedthick,创建即占满
  • 写盘性能:零写入开销,全程稳定
  • 关键依赖:是 Fault Tolerance(FT)容错、Microsoft Failover Clustering(MSFC)共享磁盘、Oracle RAC 等集群方案的强制前置条件

3. 精简置备(Thin Provision)

精简置备在创建时只分配小部分初始占用(VMFS 文件的元数据 + 少量预分配块),剩余空间按实际写入量动态增长——写一个 1GB 文件,VMDK 才增加 1GB 实际占用。

  • 空间占用:最小化存储占用,节省成本
  • 超分配风险:datastore 物理容量不够时,VM 会因”空间不足”直接停机或 I/O 中断,所以必须配合容量监控
  • 写盘性能:较低负载下与厚置备无明显差异;高并发小块写场景会有 5-15% 性能损失(底层 block allocation + metadata 更新)
👉 ESXi 虚拟化管理工具

VMware ESXi、Workstation、PowerCLI 等企业级虚拟化软件一站式下载,覆盖安装、配置、批量运维全场景,企业 IT 工程师必备工具库。

前往下载 →

二、三种模式对比表

维度Thick Lazy ZeroedThick Eager ZeroedThin Provision
创建耗时(200GB 示例)秒级5-15 分钟(写零开销)秒级
创建完成立即占用200GB(满)200GB(满)≈0-数十 MB
首次写 IO 延迟偶有抖动(写零开销)可能略高
稳态写性能最高高(密集场景略低)
空间利用率1:11:1按需
FT/MSFC/RAC 兼容性不支持强制不支持
超分配支持

从上表可以看出三种模式各有取舍:日常业务主选 lazy zeroedthick;集群关键业务必须 eagerzeroedthick;测试/DevOps/数据仓库的归档节点可优先 thin,节省存储预算。

三、切换前的数据安全准备

在执行任何转换前,必须做一次完整快照或备份。vmkfstools 在线转换理论上不会丢数据,但工程师们栽过的跟头主要集中在以下几类:

  1. 备份基线:使用 vSphere Client 给目标虚拟机建一个可移除快照(不参与调度链),或通过 Veeam/Commvault 等备份软件做一次完整备份
  2. 检查回收空间:thin → thick 会清零所有”已使用但可能为 0″的块,转换前最好在客户机内做 zero fill 回收,避免凭空填大块零数据浪费时间
  3. 计算耗时:200GB thick 转 thick 本质只改 metadata,几秒完成;thin 升 thick 时实际占用可能已经 800GB,转换需 800GB 全量清零,几小时到十几小时不等
  4. 数据存储余量:thick → thick 不需要额外空间;thin → thick 需要至少”目标虚拟磁盘额定容量”的连续 datastore 空间
  5. 业务窗口:厚置备立即置零转换是不可中断的,建议在维护窗口进行

四、vSphere Client 图形界面切换

适合单台、不便 SSH 登录 ESXi 主机且不愿意用命令行的场景。步骤如下:

  1. 关闭虚拟机电源
  2. 右键 → 编辑设置 → 选中要修改的硬盘 → 右侧弹出磁盘详情
  3. 展开右侧 Provision(置备)下拉框,选择目标模式(Thick → Thin / Thin → Thick / Eager Zeroed)
  4. 点击 OK,vCenter 会调用 ESXi 主机端的 vmkfstools 完成就地转换
  5. 转换完成后开机验证

图形界面内置的实质是 vmkfstools 转换,多了图形包装与状态条,进度可以在近期任务中查看。注意:如果磁盘带有快照,需要先删除或整合快照(Delete / Consolidate),否则不允许改置备。

五、vmkfstools 命令行切换(最常用)

SSH 登录 ESXi 主机(vCenter 不直接暴露 vmkfstools),所有路径以主机文件系统为准。命令行优势是脚本化、可批量、可断点重试,且可在多层存储(iSCSI / FC / vSAN / NFS)上显式控制目标 datastore。

1. 五大必备前置

  • 使用 vSphere Client 把 VM 关机(在线转换要冒数据一致性风险,但 vmkfstools 的 -k 选项确实提供;但仍建议关机)
  • 在主机 SSH 上 cd /vmfs/volumes/{datastore_uuid}/{vm_dir}/ 定位目录
  • ls -l *.vmdk 确认磁盘文件;注意区分 -flat.vmdk(实际数据)和 .vmdk(描述符,二者需成对)
  • datastore 路径格式:/vmfs/volumes/<datastore 名 或 UUID>
  • 检查空间:df -h /vmfs/volumes/<datastore> 确认目标 datastore 余量

2. 三种模式切换的命令清单

  • thck → thinvmkfstools -i <source.vmdk> <target.vmdk> -d thin(写到同 datastore 或另存,转换后替换)
  • thin → thick lazyvmkfstools -i <source.vmdk> <target.vmdk> -d thick
  • 任一 → eagerzeroedthickvmkfstools -i <source.vmdk> <target-vmdk> -d thick -eagerzero;也可原地升级:vmkfstools -X <size> -eagerzero <vmdk>
  • 原地 thick lazy → eagerzeroedthick:用 vmkfstools -j <vmdk>(英文 help 中写”convert between zeroedthick and eagerzeroedthick”),无需另存

3. 实战案例:把 VM-01 的 Disk2 从 thin 升级到 eagerzeroedthick

# 1. 关闭 VM
vim-cmd vmsvc/power.off <vmid>

# 2. 列出目录
ls -l /vmfs/volumes/datastore1/VM-01/

# 假设输出:
# -rw-------    1 root     root     53687091200 Sep 15 10:00 VM-01_2-flat.vmdk
# -rw-------    1 root     root          545 Sep 15 10:00 VM-01_2.vmdk

# 3. 原位升级到 eagerzeroedthick(不复制,直接改 metadata + 必要时清零未写块)
vmkfstools -j /vmfs/volumes/datastore1/VM-01/VM-01_2.vmdk

# 4. 验证
vmkfstools -t0 /vmfs/volumes/datastore1/VM-01/VM-01_2.vmdk   # query disk info, 看清provisioning 字段
od -c /vmfs/volumes/datastore1/VM-01/VM-01_2.vmdk | head -1   # descriptor 里 ddcdb-...-fileExtentInformation 段确认

其中 -t0 是查询命令,可输出该 VMDK 的 provisioning 类型与几何参数,是判断模式是否成功的最直接手段。

4. 进阶:跨 datastore 转换

# thin → thick lazy,输出到另一个 datastore
vmkfstools -i "/vmfs/volumes/datastore1/VM-01/VM-01_1.vmdk" 
          "/vmfs/volumes/datastore2/VM-01/VM-01_1.vmdk" 
          -d thick

# 把 VM-01.vmx 中的磁盘路径指向新位置(手动编辑,或编辑设置里 remove disk + add existing disk)

六、PowerCLI 批量切换方案

当需要批量处理一个集群或多个 VM 时,PowerCLI 是效率最高的路径。注意 PowerCLI 调用的后台命令实际上仍然是 vmkfstools,但加了 datastore 空间预检、批量进度跟踪与失败回滚:

# 连接 vCenter
Connect-VIServer -Server vcenter.domain.local -User administrator@vsphere.local -Password 'xxx'

# 查找所有 thin 磁盘的 VM
Get-VM | Get-HardDisk | Where-Object {$_.StorageFormat -eq 'Thin'} | Select-Object Parent, Name, CapacityGB

# 批量转换(依次关电→转换→开电)
$vms = Get-VM | Get-HardDisk | Where-Object {$_.StorageFormat -eq 'Thin'} | Select-Object -Unique Parent
foreach ($vm in $vms) {
    Write-Host "Processing $($vm.Parent.Name)"
    Stop-VM -VM $vm.Parent -Confirm:$false -RunAsync:$true
    # 这里替换为 Ensure-InvokeScript 调 $esxcli ... 或者 Set-HardDisk -HardDisk ... -StorageFormat Thick
    Get-HardDisk -VM $vm.Parent | Set-HardDisk -StorageFormat Thick -Confirm:$false
    Start-VM -VM $vm.Parent -RunAsync:$true
}

关键陷阱:PowerCLI 的 Set-HardDisk -StorageFormat Thick 默认是 lazyzeroedthick;要升级到 eagerzeroedthick 必须在 VM 关闭状态下,配合 Invoke-VMScript 调用宿主机的 vmkfstools -j

七、转换后的验证

  1. 命令侧vmkfstools -t0 /vmfs/volumes/<ds>/<vm>/<disk>.vmdk,输出含 “createType: …eagerzeroedthick/thick/thin”
  2. 客户机侧:进 OS 后 fdisk -l(Linux)/ 磁盘管理(Windows)确认分区可见、容量对得上
  3. vCenter 侧:编辑 VM 设置 → 磁盘属性下拉框显示的当前模式
  4. 性能侧:用 esxtop 进入 d view 查看 ACTH/QUED,看是否有大面积写零导致的 CMS latency spike

八、最佳实践与常见误区

  • 不要在线升级到 eagerzeroedthick:vmkfstools 的 -eagerzero 是同步清零,会卡住 VMIO
  • thin 不要用于 SQL Server 高负载库:小块写密集场景下,5-15% 的性能损失可能放大到爆
  • FT/MSFC/RAC 永远 eagerzeroedthick:集群工作模式依赖”预写分配 + shared VMDK”,不是 eagerzeroedthick 就开不起来
  • 同一 datastore 上的多个 thin VM 一起超分配前:必须接 vROps / 容量预警:物理容量超 80% 就是红灯(不是建议阈值,是踩过的泪)
  • 转换后删源 .vmdk 前先验证diff <source-flat.vmdk> <target-flat.vmdk> 不存在则安全删除;保持 1-2 个业务周期观察再删
🚀 IT 峰哥软件库

致力于收录企业 IT 运维、安全、虚拟化、数据库等正版授权软件,所有资源均经过测试与验证,覆盖中小团队到大型企业场景,提供一站式下载与管理。

置备模式没有绝对的好坏,只有”适合不适合”。每一次切换前问自己三个问题:会不会用到 FT / MSFC?datastore 物理容量允许超分配吗?性能基线能接受 5-15% 损失吗?答完再选择,多数企业关键业务 VM 的答案是”thick lazy zeroed”——这是全球数据中心工程师用得最多的配置,安全可靠、性能够用、对运维极友好。

九、软件下载与扩展工具

看完整篇文章,如果想亲自上手操作 vmkfstools 或者练习 PowerCLI 批量转换,你可能需要以下工具:

  • ESXi 虚拟机环境(VMware Workstation / ESXi 商业授权 / 评估版)
  • SSH 工具(PuTTY / Xshell / MobaXterm)
  • PowerCLI(含 VMware.PowerCLI 模块)

IT 峰哥软件库持续收录正版 ESXi、PowerCLI 模块与各种企业 IT 工具下载,有需要的工程师可以前往 IT峰哥软件库 检索”ESXi”或”VMware”找到对应下载。所有资源均经过测试,欢迎收藏。

默认

AI时代来临怎么选择合适的苹果电脑配置跑本地大模型

2026-7-2 16:59:39

默认

macOS Ventura 13.0系统安装常见问题及解决方法

2026-7-6 21:49:45

搜索