Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

Hyper-V:การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VMs

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

กำหนดค่าการเริ่มต้นและการปิดระบบอัตโนมัติสำหรับเครื่องเสมือน Hyper-V

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

เรียกใช้คอนโซล Hyper-V เปิดคุณสมบัติของ VM และไปที่การตั้งค่า -> เริ่มการดำเนินการอัตโนมัติ . มีสามตัวเลือกในการจัดการการเริ่มต้นอัตโนมัติของเครื่องเสมือน:

  • ไม่มีอะไร – เมื่อโฮสต์เริ่มทำงาน เครื่องเสมือนจะไม่เริ่มทำงานโดยอัตโนมัติ (โดยไม่คำนึงถึงสถานะก่อนที่โฮสต์จะรีสตาร์ท)
  • เริ่มต้นโดยอัตโนมัติหากทำงานเมื่อบริการหยุดทำงาน – VM จะเริ่มทำงานโดยอัตโนมัติก็ต่อเมื่อทำงานก่อนการปิด/รีสตาร์ทโฮสต์
  • เริ่มเครื่องเสมือนนี้โดยอัตโนมัติเสมอ – เริ่มต้นเครื่องเสมือนนี้เสมอเมื่อโฮสต์ Hyper-V บู๊ต

ตัวเลือกสุดท้ายมีอีกหนึ่งพารามิเตอร์ – การหน่วงเวลาการเริ่มต้น . คุณสามารถระบุเวลาหน่วงการเริ่มต้นระบบสำหรับเครื่องเสมือนได้ที่นี่ (เป็นวินาที) เมื่อใช้การหน่วงเวลา คุณสามารถจัดการลำดับการบู๊ตของเครื่องเสมือนของคุณ (เช่น เพื่อบู๊ตตัวควบคุมโดเมนก่อนที่จะเริ่ม VM ด้วย SQL Server) และลดภาระงานบนพื้นที่จัดเก็บดิสก์เนื่องจากการเริ่ม VM หลายเครื่องตามลำดับ

Hyper-V:การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VMs

เป็นที่น่าสนใจว่ายังไม่มีตัวเลือกใน Windows Admin Center (WAC) ในการจัดการการเริ่มต้นเครื่องเสมือน Hyper-V โดยอัตโนมัติ

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

การตั้งค่านี้แสดงถึงการรีสตาร์ทโฮสต์ Hyper-V ที่ถูกต้องเมื่อเครื่องเสมือนมีเวลาปิดเครื่องอย่างงดงาม ซึ่งแตกต่างจากสถานการณ์ฉุกเฉิน (ไฟฟ้าดับโดยไม่คาดคิด BSOD)
  • บันทึกสถานะเครื่องเสมือน - บันทึกสถานะเต็มของเครื่องเสมือน (รวมถึงหน่วยความจำ) ในการเริ่มต้นครั้งถัดไป เครื่องเสมือนจะกลับมาทำงานต่อจากจุดนี้ โปรดทราบว่าคุณต้องมีพื้นที่ว่างเพิ่มเติมบนดิสก์ของคุณเพื่อเก็บหน่วยความจำ VM ของคุณ (ไฟล์ *.BIN) ระบบปฏิบัติการสำหรับแขกไม่ได้ถูกรีสตาร์ท
  • ปิดเครื่องเสมือน – เมื่อปิดโฮสต์ Hyper-V เครื่องเสมือนจะหยุดทำงาน (ในลักษณะเดียวกับการปิดระบบของคอมพิวเตอร์จริง) สถานะ VM ไม่ได้รับการบันทึก ระบบปฏิบัติการของแขกจะเริ่มต้นด้วยรอบการบูตแบบเต็ม ในโหมดนี้ มีความเสี่ยงที่จะได้รับข้อมูลที่ไม่สอดคล้องกันในแอปที่ทำงานใน VM
  • ปิดระบบปฏิบัติการของแขก – ระบบปฏิบัติการของแขกถูกปิดโดยใช้บริการการรวม Hyper-V (การปิดระบบอย่างสง่างาม) แอปทั้งหมดที่ทำงานอยู่ใน VM จะหยุดทำงานและความเสี่ยงที่จะได้รับข้อมูลที่ไม่สอดคล้องกันนั้นต่ำมาก

Hyper-V:การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VMs

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

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

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

Hyper-V:การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VMs

คุณสามารถเปลี่ยนการตั้งค่าการเริ่มต้นอัตโนมัติของ 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 )

ลำดับการบูต (เริ่มต้น) ของเครื่องเสมือน 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"

Hyper-V:การกำหนดค่าการเริ่มต้นอัตโนมัติและลำดับการบูตของ VMs

สคริปต์ 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