Hyper-V में, जब आप अपने होस्ट OS को बूट या रीस्टार्ट करते हैं, तो आप अपने वर्चुअल मशीन के लिए ऑटोमैटिक स्टार्टअप और शटडाउन विकल्प कॉन्फिगर कर सकते हैं। इस लेख में, हम दिखाएंगे कि Hyper-V होस्ट को पावर ऑन या ग्रेसफुल शटडाउन पर वर्चुअल मशीन के साथ क्या कार्रवाई करनी चाहिए, और वर्चुअल मशीन के बूट ऑर्डर को कैसे सेट करें, इसे कैसे कॉन्फिगर करें।
Hyper-V वर्चुअल मशीन के लिए ऑटोमैटिक स्टार्टअप और शटडाउन एक्शन कॉन्फिगर करें
डिफ़ॉल्ट रूप से, Hyper-V होस्ट रजिस्टर्ड वर्चुअल मशीन की स्थिति को रीस्टार्ट होने पर सेव करता है। इसका मतलब है कि यदि रीस्टार्ट से पहले VM चल रहा था, तो Hyper-V इसे ऑटोमैटिकली शुरू करेगा। ऑटोमैटिक स्टार्टअप सेटिंग्स प्रत्येक VM के लिए व्यक्तिगत रूप से कॉन्फिगर की जाती हैं।
Hyper-V कंसोल चलाएं, किसी भी VM की प्रॉपर्टीज खोलें, और Settings → Automatic Start Action पर जाएं। वर्चुअल मशीन के ऑटोमैटिक स्टार्टअप को मैनेज करने के लिए तीन विकल्प उपलब्ध हैं:
- Nothing — जब होस्ट शुरू होता है, तो वर्चुअल मशीन ऑटोमैटिकली शुरू नहीं होती (होस्ट रीस्टार्ट से पहले इसकी स्थिति की परवाह किए बिना)
- Automatically start if it was running when the service stopped — VM केवल तभी ऑटोमैटिकली शुरू होगा यदि यह होस्ट शटडाउन/रीस्टार्ट से पहले चल रहा था
- Always start this virtual machine automatically — जब भी Hyper-V होस्ट बूट होता है, तो इस वर्चुअल मशीन को हमेशा शुरू करें।
अंतिम विकल्प के लिए एक और पैरामीटर उपलब्ध है — Startup Delay। यहां आप वर्चुअल मशीन के लिए स्टार्टअप डिले टाइम स्पेसिफाई कर सकते हैं (सेकंड में)। डिले का उपयोग करके, आप अपने वर्चुअल मशीन के बूट ऑर्डर को मैनेज कर सकते हैं (उदाहरण के लिए, SQL Server वाले VM से पहले डोमेन कंट्रोलर को बूट करने के लिए), और कई VM को क्रम में शुरू करके डिस्क स्टोरेज पर लोड कम कर सकते हैं।
यह दिलचस्प है कि Windows Admin Center (WAC) में अभी तक Hyper-V वर्चुअल मशीन के ऑटोमैटिक स्टार्टअप को मैनेज करने के विकल्प नहीं हैं।
Automatic Stop Action सेक्शन में, आप सेट कर सकते हैं कि होस्ट शटडाउन या रीस्टार्ट होने पर आपकी वर्चुअल मशीन के साथ क्या करना है।
यह सेटिंग Hyper-V होस्ट के सही रीस्टार्ट को मानती है जब वर्चुअल मशीन के पास ग्रेसफुल शटडाउन के लिए समय होता है, आपातकालीन स्थितियों के विपरीत (अप्रत्याशित पावर आउटेज, BSOD)।
- Save the virtual machine state — वर्चुअल मशीन की पूरी स्थिति सेव की जाती है (इसकी मेमोरी सहित)। अगले स्टार्टअप पर, वर्चुअल मशीन इस बिंदु से रिज्यूम होगी। ध्यान दें कि आपके पास VM मेमोरी (*.BIN फाइलें) रखने के लिए डिस्क पर अतिरिक्त फ्री स्पेस होना चाहिए। गेस्ट OS रीस्टार्ट नहीं होता;
- Turn off the virtual machine — जब Hyper-V होस्ट शटडाउन होता है, तो वर्चुअल मशीन भी रुक जाएगी (उसी तरह जैसे फिजिकल कंप्यूटर शटडाउन होता है)। VM स्थिति सेव नहीं होती, गेस्ट OS फुल बूट साइकिल के साथ शुरू होगा। इस मोड में, VM में चल रहे ऐप्स में असंगत डेटा प्राप्त होने का कुछ जोखिम है।
- Shutdown the guest operating system — गेस्ट OS को Hyper-V इंटीग्रेशन सर्विस का उपयोग करके शटडाउन किया जाता है (ग्रेसफुल शटडाउन)। VM में चल रहे सभी ऐप्स रुक जाते हैं और असंगत डेटा प्राप्त होने का जोखिम बहुत कम होता है।
आप PowerShell का उपयोग करके अपने Hyper-V वर्चुअल मशीन के ऑटोमैटिक स्टार्टअप और शटडाउन सेटिंग्स देख और बदल सकते हैं।
सभी VMs की वर्तमान स्टार्टअप और शटडाउन सेटिंग्स प्रदर्शित करें:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
आप AutomaticStartAction ऑप्शन का उपयोग करके VM की ऑटोमैटिक स्टार्टअप सेटिंग्स बदल सकते हैं। इसके संभावित मान Nothing, StartIfRunning, Start हैं।
Get-VM –VMname lon-win10 | Set-VM –AutomaticStartAction Start
आप फ्री Windows Hyper-V Server होस्ट पर वर्चुअल मशीन सेटिंग्स कॉन्फिगर करने के लिए PowerShell का उपयोग कर सकते हैं जिसमें कोई GUI नहीं है।
एक को छोड़कर सभी VMs के लिए स्टार्टअप डिले सेट अप करने के लिए (उदाहरण के लिए, FSMO रोल वाले डोमेन कंट्रोलर):
Get-VM –VMname * | Where-object –FilterScript {$_.vmname –notlike "lon-dc*"} | Set-VM –AutomaticStartDelay 90
AutomaticStopAction ऑप्शन का उपयोग करके, आप VM शटडाउन सेटिंग्स सेट कर सकते हैं (Save, TurnOff, ShutDown)।
Hyper-V वर्चुअल मशीन का बूट (स्टार्टअप) ऑर्डर
स्टैंडअलोन Hyper-V होस्ट शुरू करते समय, एडमिनिस्ट्रेटर को इस पर वर्चुअल मशीन के स्टार्टअप ऑर्डर को मैनेज करना होगा। उदाहरण के लिए, आपको Exchange VM को तभी बूट करने की आवश्यकता है जब डोमेन कंट्रोलर उपलब्ध हो, और ऐप सर्वर को डेटाबेस सर्वर के बाद शुरू करना है। Hyper-V में वर्चुअल मशीन के स्टार्टअप ऑर्डर को मैनेज करने के लिए कोई बिल्ट-इन टूल नहीं हैं, स्टार्ट डिले ऑप्शन (AutomaticStartDelay) के अलावा।
सबसे सरल मामलों में, आप उनके लिए अलग-अलग स्टार्टअप डिले सेट करके VM स्टार्टअप के ऑर्डर को कॉन्फिगर कर सकते हैं:
Get-VM –VMname lon-dc01 | Set-VM –AutomaticStartDelay 0
Get-VM –VMname lon-exch1,lon-db01 | Set-VM –AutomaticStartDelay 90
Get-VM –VMname lon-rds01,lon-app01 | Set-VM –AutomaticStartDelay 180
दूसरा तरीका PowerShell स्टार्टअप स्क्रिप्ट का उपयोग करके VMs को क्रम में शुरू करना है। स्क्रिप्ट में, आप अगले VM को शुरू करने से पहले डिले सेट कर सकते हैं और VM में किसी एप्लिकेशन या सर्विस की उपलब्धता के लिए अतिरिक्त चेक कर सकते हैं (यह सुनिश्चित करने के लिए कि ऐप या सर्विस शुरू हो गई है)। इसे और सुविधाजनक बनाने के लिए, आप टैग का उपयोग करके कई VMs को ग्रुप में जोड़ सकते हैं। उदाहरण के लिए, मैंने VMs के लिए निम्न टैग सेट किए हैं:
set-vm lon-dc01,lon-dc02 -Notes "Boot order 1"
set-vm lon-exch1, lon-db01 -Notes "Boot order 2"
set-vm lon-rds01,lon-app01 -Notes "Boot order 3"
निम्न PowerShell स्क्रिप्ट वर्चुअल मशीन को विशिष्ट क्रम में शुरू करती है और Test-NetConnection PowerShell कमांडलेट का उपयोग करके कुछ सर्विस (TCP पोर्ट) की उपलब्धता के लिए VM में अतिरिक्त उपलब्धता चेक चलाती है:
$VMtoStart = Get-VM | where notes -contains 'Boot order 1'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While (!(Test-NetConnection lon-dc01 -Port 445 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 2'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While ((Test-NetConnection lon-exch1 -Port 25 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 3'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
फिर PowerShell स्क्रिप्ट को ऑटोस्टार्ट में जोड़ें या Task Scheduler का उपयोग करके चलाएं (इस स्क्रिप्ट का उपयोग करके शुरू किए गए सभी VMs के लिए ऑटोमैटिक स्टार्टअप डिसेबल करना न भूलें)। याद रखें कि Windows में डिफ़ॉल्ट रूप से PowerShell स्क्रिप्ट चलाना प्रतिबंधित है। यदि आवश्यक हो, तो PS1 स्क्रिप्ट पर हस्ताक्षर करें या PowerShell स्क्रिप्ट एक्जीक्यूशन पॉलिसी बदलें।