Windows Server 2019与 静默的VMware Snapshots:解决问题的理想解决方案



哈Ha!

在VMware上具有EFI仿真的Windows Server 2019虚拟机的应用程序感知快照存在问题。看起来像这样:快照已完成,达到100%,挂起大约5分钟,然后陷入错误“无法使虚拟机停止”。
 


调查表明,此错误的原因是Windows Server 2019 VSS服务与负责应用程序静默的VMware Snapshot Provider之间发生冲突。这个东西为虚拟机准备了快照:它停止了应用程序并进行了写操作,因此从快照恢复后,所有数据都是一致的。

Microsoft已声明并声称该操作系统完全支持应用程序感知快照。实际上,在Hyper-V中不会发生这样的问题。VMware谦虚地邀请其用户简单地关闭静默功能(因此,该快照在应用程序级别将不会保持一致)。或拒绝带有GPT标记和EFI仿真的系统磁盘(2020年!)。 

今天,我将向您展示如何精美地解决此问题并获取Windows Server 2019虚拟机的一致的应用程序感知快照,同时,我将提醒您微软支持的在虚拟机上安装Windows Server的方式。

谁有罪?


重来。在VM Options中的VMware ESXi上创建虚拟机时,默认仿真为BIOS仿真。并且,尽管对安全性或系统磁盘的大小没有特殊要求,但这种情况非常合适。但是,一旦我们需要配置安全启动或vCPU的数量超过128,我们将需要使用UEFI仿真创建一个VM。如果仅仅是因为有:

  • 安全启动-防止从无关媒体启动。
  • 加密支持(需要TPM支持,但在ESXi 6.7中同样存在问题)。
  • 支持超过2TB的驱动器(可疑,但确实如此)。
  • 支持大量处理器。

如果像以前一样在VMware VM上安装Windows(创建VM,关闭ISO,使用句柄启动,next,next ...),则在对系统磁盘进行GPT分区时,EFI分区和系统分区旁边会出现Recovery部分。

我们还记得以下材料:

恢复分区 -系统硬盘驱动器上的受保护分区,用于在出现问题时恢复系统的出厂设置。在GPT磁盘上安装Windows Server时,恢复将写入Windows恢复环境(WinRE)。通常,计算机制造商会在本节中补充针对特定硬件量身定制的自定义设置和驱动程序。

停止! 

但是我们不是在使用硬件,而是在使用虚拟机。无需回滚到任何出厂设置。最后,如果您要将虚拟机恢复到其原始状态,我们只需重新部署它即可。因此,VM上的Recovery分区没有任何意义,也不是特别需要的。

恢复部分受到保护,不会被修改和意外删除:它“不会冻结”。结果,VSS VMware Snapshot Provider和Microsoft Windows VSS之间发生了冲突:VMware provider尝试对磁盘的所有分区进行快照,而Windows Server不允许这样做。日志向我们报告了这个好消息:



该怎么办?


它被简单地对待。您可以使用Convert Windows Image cmdlet在VM上安装Windows 实际上,Microsoft本身就是推荐并支持这种安装脚本(此脚本位于Windows Server 2016 RTM映像中的Nano Server映像目录中,但这是另一个有趣的故事;)。

该脚本将自动使用更新的系统准备的Windows Server,必要的驱动程序甚至角色来创建模板。这种方法很有趣,因为脚本可以支持unattend.xml,因此可以自动安装和配置OS。此外,此选项还提供了设计上的自由:从通过Invoke-Command在Hyper-V上预启动VM并进行安装到通过编辑注册表创建自定义服务。 

在输出中,我们得到了一个厚的VHD磁盘,您可以将其滑入VMware,启动VM,放入VMware Tools并转换为模板。结果,该虚拟机内部将具有GPT标记,适合在EFI虚拟机上运行,​​并且在设计上没有“恢复”部分。另外,在我的示例中,我将立即创建一个准虚拟适配器以提供性能。最重要的是-对于这样的虚拟机,可以毫无问题地完成应用程序感知的快照。

现在,所有步骤均已详细说明。

驱动程序提取


  1. 资源库下载映像
  2. 挂载映像。

  3. 运行cmd.exe并转到已挂载映像的根目录
  4. 使用以下密钥运行安装程序:
    setup64.exe /A /P <  >
  5. 在向导的第二步中,我们重复拆包的路径:

  6. 驱动程序在这里:VMWToolsExtract \ VMware \ VMware Tools \ VMware \ Drivers

Windows Server 2019


  1. . , .
  2. : Servicing Stack Update. How to get this update , MS update catalog:

  3. Windows Server 2019 Cumulative Update Servicing Stack Update.



  4. CAB- :



  1. PowerShell .

  2. Install-Module -Name Convert-WindowsImage
  3. - Convert-WindowsImage:
    $ConvertWindowsImageParam = @{
    	#    Windows Server 2019
    	SourcePath = "C:\work\en_windows_server_2019.iso"
    	#   
    	VHDFormat = "VHD"
    	#   
    	SizeBytes = 40GB
    	#   - GPT
    	DiskLayout = "UEFI"
    	BCDinVHD = "VirtualMachine"
    	#   
    	DiskType = "Fixed"
    	#  - Windows Server 2019 Standard (Desktop Expirience)
    	<#
    	 :
    	1 - Windows Server 2019 Standard (Core)
    	2 - Windows Server 2019 Standard (Desktop Expirience)
    	3 - Windows Server 2019 Datacenter (Core)
    	4 - Windows Server 2019 Datacenter (Desktop Expirience)
    	#>
    	Edition = @("2")
    	#  Remote Desktop
    	RemoteDesktopEnable = $True
    	#   
    	Feature = @("TelnetClient","WindowsServerBackup","NetFx3")
    	#   (     CAB)
    	#       :  SSU,  
    	Package = @("C:\work\Windows10.0-KB4523204-x64.cab","C:\work\Windows10.0-KB4534321-x64_PSFX.cab")
    	#     
    	Driver = @("C:\work\VMWToolsExtract\VMware\VMware Tools\VMware\Drivers")
    	}
  4. Windows Server 2019 :
    Convert-WindowsImage @ConvertWindowsImageParam





安装最多需要30分钟。

在此示例中,输出是处于Sysprepped状态的完全准备好的OS,但是没有什么阻止我们使用Unattend.xml进行自定义(当您看到sysprep模板并且VM无法扩展时,自定义规范有些困惑。)在此处以及kmlet本身的“获取帮助”中

了解有关此精彩kmlet的键的更多信息 之后,您可以将磁盘加载到ESXi,创建VM并安装VMware Tools。并部署虚拟机,而不必担心停顿快照问题。



但是,如果已经有一个“有缺陷的”模板怎么办?


只需通过diskpart.exe删除Recovery分区并移动EFI和系统分区就可以了,这已经足够了标记的效果(但是您不能这样做)。支持吗?在虚拟机上-绝对可以!

  1. 我们启动cmd.exe。
  2. 我们启动diskpart。
  3. 获取驱动器列表:
    list disk
  4. 选择一个磁盘:
    select disk n

    其中,n是磁盘号。
  5. 我们列出了以下部分:
    list partition
  6. 我们查看恢复(n)分区号并选择它:
    select partition n
  7. 从以下部分删除保护:
    gpt attributes=0x8000000000000000
  8. 删除:
    delete partition
  9. 利润!





VM已准备好用于快照快照!

而不是结论


这种方法只是部署Windows Server和解决KB60395问题的一种选择当然,在这种情况下,我们可以制作精简的VDH,然后使用quemu-img实用程序将虚拟磁盘转换为OVF存档,ESXi对此非常了解。例如,在需要通过网络传输虚拟磁盘的情况下,这种情况非常合适。了解问题的历史记录和问题的真实性质,始终可以找到适合特定基础结构的解决方案。技术实施是一个有趣的实验和幻想的领域,这是无限的。

All Articles