Windows Server 2019 vs. VMware Snapshots with quiescing: solusi elegan untuk masalah ini



Halo, Habr!

Mesin virtual Windows Server 2019 dengan emulasi EFI pada VMware memiliki masalah dengan snapshot Application-Aware. Ini terlihat seperti ini: snapshot dilakukan, mencapai 100%, hang sekitar 5 menit, dan kemudian jatuh ke dalam kesalahan. Gagal meredakan mesin virtual.
 


Investigasi menunjukkan bahwa penyebab kesalahan ini adalah konflik antara layanan VSS Windows Server 2019 dan Penyedia Snapshot VMware, yang bertanggung jawab atas quiescing aplikasi. Hal ini mempersiapkan mesin virtual untuk snapshot: menghentikan aplikasi dan menulis operasi sehingga setelah pemulihan dari snapshot, semua data konsisten.

Microsoft telah mengklaim dan mengklaim bahwa Snapshots Aplikasi-Sadar didukung sepenuhnya oleh OS. Memang, masalah seperti itu tidak terjadi pada Hyper-V. VMware mengundang para penggunanya untuk mematikan quiescing (jadi, snapshot itu tidak akan konsisten pada level aplikasi). Atau tolak disk sistem dengan penandaan GPT dan emulasi EFI (tahun 2020!). 

Hari ini saya akan menunjukkan kepada Anda cara mengatasi masalah ini dengan indah dan mendapatkan snapshot aplikasi Windows Server 2019 yang sadar aplikasi secara konsisten, dan pada saat yang sama saya akan mengingatkan Anda tentang cara yang didukung Microsoft untuk menginstal Windows Server pada mesin virtual.

Siapa yang bersalah


Mulai lagi dari awal. Saat membuat mesin virtual pada VMware ESXi di VM Options, emulasi default adalah emulasi BIOS. Dan, sementara tidak ada persyaratan khusus untuk keamanan atau ukuran disk sistem, skenario seperti itu cukup tepat. Tetapi begitu kita perlu mengkonfigurasi Boot Aman atau jumlah vCPU melebihi 128, kita perlu membuat VM dengan emulasi UEFI. Jika hanya karena ada:

  • Secure Boot - perlindungan terhadap booting dari media asing.
  • Dukungan enkripsi (membutuhkan dukungan TPM, tetapi dalam ESXi 6.7 masalah yang sama).
  • Dukungan untuk drive lebih dari 2TB (diragukan, tetapi ini terjadi)
  • Dukungan untuk sejumlah besar prosesor.

Jika Anda menginstal Windows pada VMware VMs, seperti yang biasa kami lakukan (membuat VMs, membuka ISO, memuat dengan pegangan, berikutnya, berikutnya ...), maka ketika GPT mempartisi disk sistem, bagian Pemulihan muncul di sebelah partisi EFI dan partisi dengan sistem.

Kami mengingat materi:

Partisi pemulihan - partisi yang dilindungi pada hard drive sistem, yang digunakan untuk mengembalikan pengaturan pabrik sistem jika terjadi masalah. Ketika Anda menginstal Windows Server pada disk GPT, Pemulihan menulis Lingkungan Pemulihan Windows (WinRE). Pabrikan komputer, biasanya, melengkapi bagian ini dengan pengaturan khusus dan driver yang dirancang untuk perangkat keras tertentu.

Berhenti! 

Tapi kami tidak bekerja dengan perangkat keras, tetapi dengan mesin virtual. Tidak diperlukan pengembalian ke pengaturan pabrik. Pada akhirnya, jika Anda ingin mengembalikan VM ke kondisi semula, kami hanya memindahkannya. Oleh karena itu, partisi Pemulihan pada VM tidak masuk akal dan tidak terlalu diperlukan.

Bagian Pemulihan dilindungi dari modifikasi dan penghapusan tidak disengaja: itu "tidak membeku." Akibatnya, muncul konflik antara Penyedia Snapshot VSS VMware dan Microsoft Windows VSS: penyedia VMware mencoba memotret semua partisi disk, dan Windows Server tidak mengizinkannya melakukan ini. Berita baik ini dilaporkan kepada kami melalui log:



Apa yang harus dilakukan?


Ini diperlakukan dengan sederhana. Anda dapat menginstal Windows pada VM menggunakan cmdlet Convert Windows Image. Sebenarnya, hanya skrip instalasi seperti itu yang direkomendasikan dan didukung oleh Microsoft sendiri (skrip ini ada pada gambar Windows Server 2016 RTM dalam direktori dengan gambar Nano Server, tapi ini adalah cerita lain dan tidak kalah menarik;)).

Script akan secara otomatis membuat template dengan Windows Server yang diperbarui sysprepped, driver yang diperlukan, dan bahkan peran. Pendekatan ini menarik karena instalasi dan konfigurasi OS dapat diotomatisasi, karena skrip mendukung unattend.xml. Selain itu, opsi ini memberikan kebebasan untuk rekayasa: dari pra-peluncuran VM pada Hyper-V dengan instalasi melalui Invoke-Command hingga membuat layanan kustom melalui pengeditan registri. 

Pada output, kami mendapatkan disk VHD yang tebal, yang dapat Anda selipkan VMware , mulai VM, letakkan VMware Tools dan konversikan ke templat. Akibatnya, VM akan memiliki markup GPT di dalam, cocok untuk berjalan pada VM EFI dan tanpa bagian Pemulihan sesuai desain. Sebagai bonus: dalam contoh saya, saya akan segera membuat adaptor paravirtual untuk memberikan kinerja. Dan yang paling penting - untuk mesin virtual seperti itu, snapshot aplikasi-sadar dapat dilakukan tanpa masalah.

Sekarang semuanya dirinci dalam langkah-langkah.

Ekstraksi driver


  1. Unduh gambar dari repositori .
  2. Pasang gambar.

  3. Jalankan cmd.exe dan pergi ke root dari gambar yang dipasang
  4. Jalankan penginstal dengan tombol-tombol:
    setup64.exe /A /P <  >
  5. Pada langkah kedua panduan, kami ulangi jalur untuk membongkar:

  6. Driver ada di sini: 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





Instalasi membutuhkan waktu hingga 30 menit.

Dalam contoh ini, output adalah OS yang sepenuhnya siap dalam keadaan Sysprepped, tetapi tidak ada yang menghalangi kita untuk menggunakan Unattend.xml untuk penyesuaian (Spesifikasi penyesuaian sedikit bingung ketika Anda melihat templat sysprep dan VM tidak berkembang).

Baca lebih lanjut tentang kunci kmlet yang indah ini di sini dan di Dapatkan-Bantuan dari kmlet itu sendiri.

Setelah itu, Anda dapat memuat disk ke ESXi, membuat VM, dan menginstal VMware Tools. Dan gunakan mesin virtual tanpa khawatir tentang masalah snapshot.

Tetapi bagaimana jika sudah ada template "cacat"?


Cukup dengan menghapus partisi Pemulihan melalui diskpart.exe dan memindahkan partisi EFI dan sistem untuk keindahan markup (tetapi Anda tidak dapat melakukan ini). Apakah ini didukung? Di mesin virtual - pasti!

  1. Kami memulai cmd.exe.
  2. Kami memulai diskpart.
  3. Dapatkan daftar drive:
    list disk
  4. Pilih disk:
    select disk n

    di mana n adalah nomor disk.
  5. Kami mencantumkan bagian:
    list partition
  6. Kami melihat nomor partisi Pemulihan (n) dan memilihnya:
    select partition n
  7. Hapus perlindungan dari bagian:
    gpt attributes=0x8000000000000000
  8. Menghapus:
    delete partition
  9. Keuntungan!





VM siap untuk Menjepret Snapshots!

Alih-alih sebuah kesimpulan


Pendekatan ini hanyalah salah satu opsi untuk menggunakan Windows Server dan menyelesaikan masalah KB60395 . Tentu saja, dalam hal ini kita dapat membuat VDH tipis dan kemudian menggunakan utilitas quemu-img untuk mengubah disk virtual ke arsip OVF, yang dipahami ESXi dengan sangat baik. Skenario seperti itu cukup tepat, misalnya, dalam kasus ketika disk virtual perlu ditransfer melalui jaringan. Memahami sejarah masalah dan sifat sebenarnya dari masalah selalu memungkinkan untuk menemukan solusi yang cocok untuk infrastruktur tertentu. Implementasi teknis adalah bidang untuk eksperimen dan fantasi yang menarik, yang tidak terbatas.

All Articles