ค้นหาเว็บไซต์

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

,

Start
Get-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

บทความที่เกี่ยวข้อง