Hyper-V: การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VM
ใน Hyper-V คุณสามารถกำหนดค่าตัวเลือกการเริ่มต้นและปิดเครื่องอัตโนมัติสำหรับเครื่องเสมือนของคุณเมื่อคุณบูตหรือรีสตาร์ท OS โฮสต์ของคุณ ในบทความนี้ เราจะแสดงวิธีกำหนดค่าการดำเนินการที่โฮสต์ Hyper-V ควรทำกับเครื่องเสมือนเมื่อเปิดเครื่องหรือปิดเครื่องอย่างสง่างาม และวิธีการตั้งค่าลำดับการบู๊ตของเครื่องเสมือน
กำหนดค่าการดำเนินการเริ่มต้นและปิดระบบอัตโนมัติสำหรับเครื่องเสมือน Hyper-V
ตามค่าเริ่มต้น โฮสต์ Hyper-V จะบันทึกสถานะของเครื่องเสมือนที่ลงทะเบียนเมื่อรีสตาร์ท หมายความว่าหาก VM ทำงานก่อนที่จะรีสตาร์ท Hyper-V จะเริ่มทำงานโดยอัตโนมัติ การตั้งค่าเริ่มต้นอัตโนมัติได้รับการกำหนดค่าสำหรับแต่ละ VM แยกกัน
เรียกใช้คอนโซล Hyper-V เปิดคุณสมบัติของ VM ใดๆ และไปที่การตั้งค่า -> การดำเนินการเริ่มต้นอัตโนมัติ มีสามตัวเลือกในการจัดการการเริ่มต้นอัตโนมัติของเครื่องเสมือน:
ไม่มีเลย - เมื่อโฮสต์เริ่มทำงาน เครื่องเสมือนจะไม่เริ่มโดยอัตโนมัติ (โดยไม่คำนึงถึงสถานะก่อนที่โฮสต์จะรีสตาร์ท)
เริ่มต้นโดยอัตโนมัติหากกำลังทำงานเมื่อบริการหยุดทำงาน - VM จะเริ่มทำงานโดยอัตโนมัติก็ต่อเมื่อมีการเรียกใช้ก่อนที่โฮสต์จะปิด/รีสตาร์ท
-
เริ่มเครื่องเสมือนนี้โดยอัตโนมัติเสมอ - เริ่มเครื่องเสมือนนี้เสมอเมื่อโฮสต์ Hyper-V บูท
มีพารามิเตอร์อีกหนึ่งตัวสำหรับตัวเลือกสุดท้าย - การหน่วงเวลาการเริ่มต้น คุณสามารถระบุเวลาหน่วงการเริ่มต้นสำหรับเครื่องเสมือนได้ที่นี่ (เป็นวินาที) เมื่อใช้การหน่วงเวลา คุณสามารถจัดการลำดับการบูตเครื่องเสมือนของคุณ (เช่น บูตตัวควบคุมโดเมนก่อนเริ่ม VM ด้วย SQL Server) และลดภาระในที่จัดเก็บดิสก์เนื่องจากการเริ่ม VM หลายเครื่องพร้อมกัน
เป็นที่น่าสนใจที่ไม่มีตัวเลือกใน Windows Admin Center (WAC) เพื่อจัดการการเริ่มต้นอัตโนมัติของเครื่องเสมือน Hyper-V
นอกจากนี้ ในส่วน การดำเนินการหยุดอัตโนมัติ คุณสามารถตั้งค่าว่าจะทำอย่างไรกับเครื่องเสมือนของคุณ หากโฮสต์ถูกปิดหรือรีสตาร์ท
การตั้งค่านี้แสดงถึงการรีสตาร์ทโฮสต์ Hyper-V ที่ถูกต้องเมื่อเครื่องเสมือนมีเวลาปิดเครื่องอย่างสง่างาม ซึ่งแตกต่างจากสถานการณ์ฉุกเฉิน (ไฟฟ้าดับโดยไม่คาดคิด BSOD)
บันทึกสถานะเครื่องเสมือน - สถานะทั้งหมดของเครื่องเสมือนจะถูกบันทึกไว้ (รวมถึงหน่วยความจำ) ในการเริ่มต้นครั้งถัดไป เครื่องเสมือนจะทำงานต่อจากจุดนี้ โปรดทราบว่าคุณต้องมีพื้นที่ว่างเพิ่มเติมบนดิสก์เพื่อเก็บหน่วยความจำ VM ของคุณ (ไฟล์ *.BIN) ระบบปฏิบัติการเกสต์ไม่รีสตาร์ท
ปิดเครื่องเสมือน - เมื่อโฮสต์ Hyper-V ปิดเครื่อง เครื่องเสมือนก็จะหยุดทำงานด้วย (ในลักษณะเดียวกับที่เครื่องคอมพิวเตอร์จริงปิด) สถานะ VM ไม่ได้ถูกบันทึก ระบบปฏิบัติการเกสต์จะเริ่มต้นด้วยรอบการบูตเต็มรูปแบบ ในโหมดนี้ มีความเสี่ยงที่จะได้รับข้อมูลที่ไม่สอดคล้องกันในแอปที่ทำงานใน VM
ปิดระบบปฏิบัติการเกสต์ - ระบบปฏิบัติการเกสต์จะปิดโดยใช้บริการการรวม Hyper-V (การปิดระบบที่สง่างาม) แอปทั้งหมดที่ทำงานใน VM จะหยุดทำงานและความเสี่ยงในการรับข้อมูลที่ไม่สอดคล้องกันจะต่ำมาก
คุณสามารถดูและเปลี่ยนการตั้งค่าการเริ่มต้นและปิดอัตโนมัติของเครื่องเสมือน Hyper-V ของคุณโดยใช้ PowerShell
แสดงการตั้งค่าการเริ่มต้นและปิดเครื่องปัจจุบันของ VM ทั้งหมด:
Get-VM -VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopActionคุณสามารถเปลี่ยนการตั้งค่าการเริ่มต้นอัตโนมัติของ VM โดยใช้ตัวเลือก AutomaticStartAction ค่าที่เป็นไปได้คือ
Nothing,
StartIfRunning,
StartGet-VM -VMname lon-win10| Set-VM -AutomaticStartAction Startคุณสามารถใช้ PowerShell เพื่อกำหนดการตั้งค่าเครื่องเสมือนบนโฮสต์ Windows Hyper-V Server ฟรีที่ไม่มี GUI
หากต้องการตั้งค่าการหน่วงเวลาเริ่มต้นสำหรับ VM ทั้งหมดยกเว้นหนึ่งรายการ (เช่น ตัวควบคุมโดเมนที่มีบทบาท FSMO):
Get-VM -VMname * | Where-object -FilterScript {$_.vmname -notlike “lon-dc*”} | Set-VM -AutomaticStartDelay 90เมื่อใช้ตัวเลือก -AutomaticStopAction คุณสามารถตั้งค่าการปิด VM (
Save,
TurnOff
,
ShutDown).
คำสั่ง Boot (Startup) ของเครื่องเสมือน 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อีกวิธีหนึ่งคือการเริ่ม VM โดยใช้สคริปต์เริ่มต้น PowerShell ในสคริปต์ คุณสามารถตั้งค่าการหน่วงเวลาก่อนที่จะเริ่ม VM ถัดไป และดำเนินการตรวจสอบเพิ่มเติมสำหรับความพร้อมใช้งานของแอปพลิเคชันหรือบริการใน VM (เพื่อให้แน่ใจว่าได้เริ่มแอปหรือบริการแล้ว) เพื่อให้สะดวกยิ่งขึ้น คุณสามารถรวม VM หลายเครื่องเข้าในกลุ่มโดยใช้แท็ก ตัวอย่างเช่น ฉันได้ตั้งค่าแท็กต่อไปนี้สำหรับ VM:
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 ต่อไปนี้เริ่มต้นเครื่องเสมือนในลำดับเฉพาะ และเรียกใช้การตรวจสอบความพร้อมใช้งานเพิ่มเติมสำหรับบริการบางอย่าง (พอร์ต TCP) ใน VM โดยใช้ PowerShell cmdlet Test-NetConnection:
$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 (อย่าลืมปิดใช้งานการเริ่มต้นอัตโนมัติสำหรับ VM ทั้งหมดที่เริ่มต้นโดยใช้สคริปต์นี้) โปรดจำไว้ว่าการเรียกใช้สคริปต์ PowerShell ถูกจำกัดใน Windows ตามค่าเริ่มต้น หากจำเป็น ให้ลงชื่อสคริปต์ PS1 หรือเปลี่ยนนโยบายการดำเนินการสคริปต์ PowerShell



