Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

Hyper-V: การกำหนดค่า Automatic Startup และ Boot Order ของ VMs

ใน Hyper-V คุณสามารถกำหนดค่าตัวเลือกการเริ่มต้นและปิดการทำงานอัตโนมัติสำหรับเครื่องเสมือนของคุณเมื่อบูทหรือรีสตาร์ทโฮสต์ OS ในบทความนี้ เราจะแสดงวิธีกำหนดค่าการดำเนินการที่ Hyper-V Host ควรทำกับ Virtual Machines เมื่อเปิดเครื่องหรือปิดเครื่องอย่างถูกต้อง และวิธีตั้งค่า Boot Order ของ Virtual Machines

กำหนดค่า Automatic Startup และ Shutdown Action สำหรับ Hyper-V Virtual Machines

โดยค่าเริ่มต้น Hyper-V Host จะบันทึกสถานะของ Virtual Machines ที่ลงทะเบียนเมื่อรีสตาร์ท หมายความว่าหาก VM กำลังทำงานก่อนรีสตาร์ท Hyper-V จะเริ่มมันอัตโนมัติ การตั้งค่า Automatic Startup ถูกกำหนดค่าสำหรับแต่ละ VM แยกกัน

รันคอนโซล Hyper-V เปิดคุณสมบัติของ VM ใดๆ และไปที่ Settings -> Automatic Start Action มี 3 ตัวเลือกในการจัดการ Automatic Startup ของ Virtual Machine:

  • Nothing – เมื่อโฮสต์เริ่มต้น Virtual Machine จะไม่เริ่มต้นอัตโนมัติ (ไม่ว่าสถานะก่อนหน้าจะเป็นอย่างไร)
  • Automatically start if it was running when the service stopped – VM จะเริ่มต้นอัตโนมัติเฉพาะถ้ามันกำลังทำงานก่อนการปิด/รีสตาร์ทโฮสต์
  • Always start this virtual machine automatically – เริ่ม Virtual Machine นี้ทุกครั้งเมื่อ Hyper-V Host บูท

มีพารามิเตอร์เพิ่มเติม 1 ตัวสำหรับตัวเลือกสุดท้าย – Startup Delay ที่นี่คุณสามารถระบุเวลาล่าช้าการเริ่มต้นของ Virtual Machine (เป็นวินาที) โดยใช้ Delay คุณสามารถจัดการ Boot Order ของ Virtual Machines ของคุณ (เช่น บูท Domain Controller ก่อนเริ่ม VM ที่มี SQL Server) และลดโหลดบน Storage เนื่องจากเริ่ม VM หลายตัวทีละตัว

Hyper-V: การกำหนดค่า Automatic Startup และ Boot Order ของ VMs

น่าสนใจที่ใน Windows Admin Center (WAC) ยังไม่มีตัวเลือกในการจัดการ Automatic Startup ของ Hyper-V Virtual Machines

นอกจากนี้ ในส่วน Automatic Stop Action คุณสามารถตั้งค่าได้ว่าจะทำอะไรกับ Virtual Machines ของคุณหากโฮสต์ถูกปิดหรือรีสตาร์ท

การตั้งค่านี้หมายถึงการรีสตาร์ท Hyper-V Host อย่างถูกต้องเมื่อ Virtual Machines มีเวลาปิดเครื่องอย่างถูกต้อง (Graceful Shutdown) ไม่เหมือนสถานการณ์ฉุกเฉิน (Power Outage ไม่คาดคิด, BSOD)

  • Save the virtual machine state – บันทึกสถานะเต็มของ Virtual Machine (รวมถึงหน่วยความจำ) ที่การเริ่มต้นครั้งต่อไป VM จะ Resume จากจุดนี้ โปรดทราบว่าคุณต้องมีพื้นที่ว่างเพิ่มเติมบนดิสก์เพื่อเก็บหน่วยความจำ VM (*.BIN files) Guest OS ไม่ได้รีสตาร์ท;
  • Turn off the virtual machine – เมื่อ Hyper-V Host ถูกปิด Virtual Machine จะถูกหยุดเช่นกัน (ในลักษณะเดียวกับคอมพิวเตอร์ทางกายภาพถูกปิด) สถานะ VM ไม่ได้ถูกบันทึก Guest OS จะเริ่มต้นด้วยรอบบูทเต็ม ในโหมดนี้ มีความเสี่ยงบางส่วนในการได้ข้อมูลที่ไม่สอดคล้องในแอปที่รันใน VM
  • Shutdown the guest operating system – Guest OS ถูกปิดโดยใช้ Hyper-V Integration Service (Graceful Shutdown) แอปทั้งหมดที่รันใน VM ถูกหยุด และความเสี่ยงของข้อมูลที่ไม่สอดคล้องต่ำมาก

Hyper-V: การกำหนดค่า Automatic Startup และ Boot Order ของ VMs

คุณสามารถดูและเปลี่ยนการตั้งค่า Automatic Startup และ Shutdown ของ Hyper-V VMs ของคุณโดยใช้ PowerShell

แสดงการตั้งค่า Startup และ Shutdown ปัจจุบันของ VMs ทั้งหมด:

Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction

Hyper-V: การกำหนดค่า Automatic Startup และ Boot Order ของ VMs

คุณสามารถเปลี่ยนการตั้งค่า Automatic Startup ของ VM โดยใช้ตัวเลือก AutomaticStartAction ค่าที่เป็นไปได้คือ Nothing, StartIfRunning, Start

Get-VM –VMname lon-win10| Set-VM –AutomaticStartAction Start

คุณสามารถใช้ PowerShell เพื่อกำหนดค่าการตั้งค่า Virtual Machine บนโฮสต์ Windows Hyper-V Server ฟรีที่ไม่มี GUI

เพื่อตั้งค่า Startup Delay สำหรับ VMs ทั้งหมดยกเว้น VM หนึ่ง (เช่น Domain Controller ที่มีบทบาท FSMO):

Get-VM –VMname * | Where-object –FilterScript {$_.vmname –notlike "lon-dc*"} | Set-VM –AutomaticStartDelay 90

โดยใช้ตัวเลือก –AutomaticStopAction คุณสามารถตั้งค่าการปิด VM (Save, TurnOff, ShutDown)

Boot (Startup) Order ของ Hyper-V Virtual Machines

เมื่อเริ่มต้น Standalone Hyper-V Host ผู้ดูแลระบบต้องจัดการ Startup Order ของ Virtual Machines บนมัน ตัวอย่างเช่น คุณต้องการให้ Exchange VM บูทหลังจาก Domain Controller พร้อมใช้งาน และ App Server เริ่มหลัง Database Server Hyper-V ไม่มีเครื่องมือในตัวสำหรับจัดการ Startup Order ของ Virtual Machines ยกเว้นตัวเลือก Start Delay (AutomaticStartDelay)

ในกรณีที่เรียบง่ายที่สุด คุณสามารถกำหนดค่า Order ของ VM Startup โดยการตั้งค่า Startup Delays ที่ต่างกันสำหรับพวกเขา:

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

อีกวิธีหนึ่งคือเริ่ม VMs ทีละตัวโดยใช้ PowerShell Startup Script ในสคริปต์ คุณสามารถตั้งค่า Delay ก่อนเริ่ม VM ถัดไป และทำการตรวจสอบเพิ่มเติมสำหรับความพร้อมใช้งานของแอปพลิเคชันหรือบริการใน VM (เพื่อให้แน่ใจว่าแอปหรือบริการได้เริ่มต้นแล้ว) เพื่อความสะดวก คุณสามารถรวม VMs หลายตัวเป็นกลุ่มโดยใช้ Tags ตัวอย่างเช่น ผมตั้ง Tags ต่อไปนี้สำหรับ 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"

Hyper-V: การกำหนดค่า Automatic Startup และ Boot Order ของ VMs

สคริปต์ PowerShell ต่อไปนี้เริ่ม Virtual Machines ในลำดับเฉพาะ และรันการตรวจสอบความพร้อมใช้งานเพิ่มเติมสำหรับบริการบางอย่าง (TCP Ports) ใน 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 เข้า Autostart หรือรันมันโดยใช้ Task Scheduler (อย่าลืมปิด Automatic Startup สำหรับ VMs ทั้งหมดที่เริ่มต้นโดยสคริปต์นี้) จำไว้ว่าการรันสคริปต์ PowerShell ถูกจำกัดใน Windows โดยค่าเริ่มต้น หากจำเป็น ให้ลงนามสคริปต์ PS1 หรือเปลี่ยน PowerShell Script Execution Policy