विंडोज सर्वर 2019 बनाम। शमन के साथ VMware स्नैपशॉट्स: समस्या का एक सुरुचिपूर्ण समाधान



नमस्कार, हेब्र!

VMware पर EFI इम्यूलेशन वाली विंडोज सर्वर 2019 वर्चुअल मशीनों में एप्लिकेशन-अवेयर स्नैपशॉट के साथ समस्या है । यह इस तरह दिखता है: एक स्नैपशॉट किया जाता है, 100% तक पहुंच जाता है, 5 मिनट के लिए लटका होता है, और फिर त्रुटि में गिर जाता है वर्चुअल मशीन को बुझाने में विफल।
 


जांच से पता चला कि इस त्रुटि का कारण विंडोज सर्वर 2019 वीएसएस सेवा और वीएमवेयर स्नैपशॉट प्रदाता के बीच का संघर्ष था, जो एप्लिकेशन क्विज़िंग के लिए जिम्मेदार है। यह चीज़ स्नैपशॉट के लिए वर्चुअल मशीन तैयार करती है: यह अनुप्रयोगों को रोकती है और संचालन लिखती है ताकि स्नैपशॉट से पुनर्प्राप्ति के बाद, सभी डेटा संगत हो।

Microsoft ने दावा किया है और दावा करता है कि एप्लिकेशन-अवेयर स्नैपशॉट ओएस द्वारा पूरी तरह से समर्थित हैं। दरअसल, हाइपर-वी में ऐसी समस्या नहीं होती है। वीएमवेयर ने अपने उपयोगकर्ताओं को विनम्रतापूर्वक आमंत्रित करने के लिए आमंत्रित किया (ताकि क्या, वह स्नैपशॉट एप्लिकेशन स्तर पर संगत नहीं होगा)। या GPT- मार्किंग और EFI इम्यूलेशन (2020 में!) के साथ सिस्टम डिस्क को मना कर दिया। 

आज मैं आपको दिखाता हूं कि इस समस्या को कैसे खूबसूरती से देखा जाए और विंडोज सर्वर 2019 आभासी मशीनों के लगातार एप्लिकेशन-जागरूक स्नैपशॉट प्राप्त करें, और साथ ही मैं आपको वर्चुअल मशीन पर विंडोज सर्वर स्थापित करने के लिए Microsoft समर्थित तरीका याद दिलाता हूं।

कौन दोषी है?


प्रारंभ करें। VM विकल्प में VMware ESXi पर वर्चुअल मशीन बनाते समय, डिफ़ॉल्ट इम्यूलेशन BIOS इम्यूलेशन है। और, जबकि सुरक्षा या सिस्टम डिस्क के आकार के लिए कोई विशेष आवश्यकताएं नहीं हैं, ऐसा परिदृश्य काफी उपयुक्त है। लेकिन जैसे ही हमें सिक्योर बूट को कॉन्फ़िगर करने की आवश्यकता होती है या वीसीपीयू की संख्या 128 से अधिक हो जाती है, हमें यूईएफआई इम्यूलेशन के साथ एक वीएम बनाने की आवश्यकता होगी। यदि केवल इसलिए कि वहाँ हैं:

  • सुरक्षित बूट - बाहरी मीडिया से बूटिंग के खिलाफ सुरक्षा।
  • एन्क्रिप्शन समर्थन (TPM समर्थन की आवश्यकता है, लेकिन ESXi 6.7 में वही परेशानी है)।
  • 2TB से अधिक ड्राइव के लिए समर्थन (संदिग्ध, लेकिन ऐसा होता है)।
  • बड़ी संख्या में प्रोसेसर के लिए समर्थन।

यदि आप VMware VMs पर विंडोज स्थापित करते हैं, जैसा कि हम करते थे (वीएम बनाएं, आईएसओ बंद करें, हैंडल के साथ बूट करें, अगला, अगला ...), तो जब जीपीटी-विभाजन सिस्टम डिस्क पर होता है, तो रिकवरी अनुभाग ईएफआई विभाजन और सिस्टम के साथ विभाजन के बगल में दिखाई देता है।

हम मैटरियल को याद करते हैं:

रिकवरी विभाजन - सिस्टम हार्ड ड्राइव पर एक संरक्षित विभाजन, जिसका उपयोग समस्याओं के मामले में सिस्टम की फ़ैक्टरी सेटिंग्स को पुनर्स्थापित करने के लिए किया जाता है। जब आप GPT डिस्क पर विंडोज सर्वर स्थापित करते हैं, तो रिकवरी विंडोज रिकवरी एनवायरनमेंट (WinRE) लिखती है। कंप्यूटर निर्माता, एक नियम के रूप में, एक विशिष्ट हार्डवेयर के लिए अनुकूलित अपनी कस्टम सेटिंग्स और ड्राइवरों के साथ इस अनुभाग को पूरक करते हैं।

रुकें! 

लेकिन हम हार्डवेयर के साथ काम नहीं कर रहे हैं, लेकिन एक आभासी मशीन के साथ। किसी भी फ़ैक्टरी सेटिंग में रोलबैक की आवश्यकता नहीं है। अंत में, यदि आप VM को उसकी मूल स्थिति में वापस करना चाहते हैं, तो हम बस इसे फिर से जारी करेंगे। इसलिए, VM पर पुनर्प्राप्ति विभाजन का कोई मतलब नहीं है और विशेष रूप से आवश्यक नहीं है।

पुनर्प्राप्ति अनुभाग संशोधन और आकस्मिक विलोपन से सुरक्षित है: यह "फ्रीज नहीं करता है।" परिणामस्वरूप, VSS VMware स्नैपशॉट प्रदाता और Microsoft Windows VSS के बीच एक विरोध उत्पन्न होता है: VMware प्रदाता डिस्क के सभी विभाजनों को स्नैपशॉट करने का प्रयास कर रहा है, और Windows सर्वर इसे ऐसा करने की अनुमति नहीं देता है। यह खुशखबरी हमें लॉग्स द्वारा बताई गई है:



क्या करें?


इसका बस इलाज किया जाता है। आप कनवर्ट की गई Windows छवि cmdlet का उपयोग करके VM पर Windows स्थापित कर सकते हैं वास्तव में, बस इस तरह की इंस्टॉलेशन स्क्रिप्ट की सिफारिश की जाती है और इसे Microsoft द्वारा समर्थित किया जाता है (यह स्क्रिप्ट नैनो सर्वर छवि के साथ निर्देशिका में विंडोज सर्वर 2016 आरटीएम छवि पर है, लेकिन यह एक और दिलचस्प कहानी नहीं है;))।

स्क्रिप्ट स्वचालित रूप से अपडेट किए गए sysprepped विंडोज सर्वर, आवश्यक ड्राइवरों और यहां तक ​​कि भूमिकाओं के साथ एक टेम्पलेट बनाएगी। यह दृष्टिकोण दिलचस्प है क्योंकि ओएस की स्थापना और कॉन्फ़िगरेशन स्वचालित हो सकती है, क्योंकि स्क्रिप्ट unattend.xml का समर्थन करती है। इसके अलावा, यह विकल्प इंजीनियरिंग के लिए स्वतंत्रता प्रदान करता है: रजिस्ट्री को संपादित करने के माध्यम से एक कस्टम सेवा बनाने के लिए इनवोक-कमांड के माध्यम से इंस्टॉलेशन के साथ हाइपर-वी पर एक वीएम को लॉन्च करने से। 

आउटपुट में, हमें एक मोटी वीएचडी-डिस्क मिलती है, जिसे आप वीएमवेयर को स्लिप कर सकते हैं , वीएम शुरू कर सकते हैं , वीएमवेयर टूल डाल सकते हैं और एक टेम्प्लेट में बदल सकते हैं। नतीजतन, वीएम में जीपीटी मार्कअप होगा, जो ईएफआई वीएम पर और डिजाइन द्वारा रिकवरी सेक्शन के बिना चलने के लिए उपयुक्त है। एक बोनस के रूप में: मेरे उदाहरण में, मैं तुरंत प्रदर्शन प्रदान करने के लिए एक paravirtual एडेप्टर बनाऊंगा। और सबसे महत्वपूर्ण बात - ऐसी वर्चुअल मशीन के लिए, एप्लिकेशन-जागरूक स्नैपशॉट समस्याओं के बिना किया जा सकता है।

अब सब कुछ चरणों में विस्तृत है।

चालक निकासी


  1. छवि को रिपॉजिटरी से डाउनलोड करें
  2. छवि माउंट करें।

  3. Cmd.exe चलाएं और माउंट की गई छवि के रूट पर जाएं
  4. इंस्टॉलर को कुंजियों के साथ चलाएं:
    setup64.exe /A /P <  >
  5. विज़ार्ड के दूसरे चरण में, हम अनपैकिंग के लिए पथ दोहराते हैं:

  6. ड्राइवर यहाँ हैं: VMWToolsExtract \ VMware \ VMware Tools \ VMware \ ड्राइवर्स

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 विस्तार नहीं करता है)।

इस अद्भुत किमीलेट की कुंजियों के बारे में और यहाँ पढ़ें और किमीलेट की गेट-हेल्प में ही देखें।

उसके बाद, आप डिस्क को ESXi पर लोड कर सकते हैं, एक वीएम बना सकते हैं और वीएमवेयर टूल इंस्टॉल कर सकते हैं। और स्नैपशॉट के मुद्दों के बारे में चिंता किए बिना आभासी मशीनों को तैनात करें।

लेकिन क्या होगा अगर पहले से ही एक "दोषपूर्ण" टेम्पलेट है?


यह डिस्कपार्टी के माध्यम से रिकवरी विभाजन को हटाने और मार्कअप की सुंदरता के लिए ईएफआई और सिस्टम विभाजन को स्थानांतरित करने के लिए पर्याप्त है (लेकिन आप ऐसा नहीं कर सकते हैं)। क्या यह समर्थित है? एक आभासी मशीन पर - निश्चित रूप से!

  1. हम cmd.exe शुरू करते हैं।
  2. हम डिस्कपार्ट शुरू करते हैं।
  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 स्नैपिंग स्नैपशॉट के लिए तैयार है!

एक निष्कर्ष के बजाय


यह दृष्टिकोण विंडोज सर्वर को तैनात करने और KB60395 समस्या को हल करने के लिए विकल्पों में से एक है बेशक, इस मामले में हम पतले VDH बना सकते हैं और फिर वर्चुअल डिस्क को OVF आर्काइव में बदलने के लिए quemu-img यूटिलिटी का उपयोग कर सकते हैं , जिसे ESXi अच्छी तरह से समझता है। ऐसा परिदृश्य काफी उपयुक्त है, उदाहरण के लिए, मामले में जब वर्चुअल डिस्क को नेटवर्क पर स्थानांतरित करने की आवश्यकता होती है। समस्या के इतिहास और समस्या की वास्तविक प्रकृति को समझना हमेशा किसी विशेष बुनियादी ढांचे के लिए उपयुक्त समाधान खोजना संभव बनाता है। तकनीकी कार्यान्वयन दिलचस्प प्रयोगों और कल्पनाओं के लिए एक क्षेत्र है, जो असीमित है।

All Articles