Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Hyper-V: Cấu hình tự động khởi động và thứ tự boot của VM

Trong Hyper-V, bạn có thể cấu hình tùy chọn tự động khởi động và tắt cho máy ảo khi bạn boot hoặc restart host OS. Trong bài viết này, chúng tôi sẽ chỉ cách cấu hình hành động Hyper-V host nên thực hiện trên máy ảo khi nó được bật hoặc tắt một cách graceful, và cách thiết lập thứ tự boot của máy ảo.

Cấu hình hành động tự động khởi động và tắt cho máy ảo Hyper-V

Mặc định, Hyper-V host lưu trạng thái của các máy ảo đã đăng ký khi restart. Nghĩa là nếu VM đang chạy trước khi restart, Hyper-V sẽ tự động khởi động nó. Cài đặt tự động khởi động được cấu hình cho từng VM riêng lẻ.

Chạy console Hyper-V, mở thuộc tính của bất kỳ VM nào, và vào Settings -> Automatic Start Action. Ba tùy chọn quản lý tự động khởi động máy ảo có sẵn:

  • Nothing – khi host khởi động, máy ảo không tự động khởi động (bất kể trạng thái của nó trước khi host restart)
  • Automatically start if it was running when the service stopped – VM sẽ tự động khởi động chỉ nếu nó đã chạy trước khi host shutdown/restart
  • Always start this virtual machine automatically – luôn khởi động máy ảo này khi Hyper-V host boot.

Tham số thêm có sẵn cho tùy chọn cuối – Startup Delay. Ở đây bạn có thể chỉ định thời gian delay khởi động cho máy ảo (tính bằng giây). Sử dụng delay, bạn có thể quản lý thứ tự boot của máy ảo (ví dụ, boot domain controller trước khi khởi động VM với SQL Server), và giảm tải trên lưu trữ đĩa do khởi động nhiều VM lần lượt.

Thú vị là Windows Admin Center (WAC) chưa có tùy chọn quản lý tự động khởi động máy ảo Hyper-V.

Cũng, trong phần Automatic Stop Action, bạn có thể đặt việc làm gì với máy ảo nếu host bị shutdown hoặc restart.

Cài đặt này ngụ ý restart đúng cách của Hyper-V host khi máy ảo có thời gian để shutdown graceful, khác với tình huống khẩn cấp (mất điện bất ngờ, BSOD).

  • Save the virtual machine state – trạng thái đầy đủ của máy ảo được lưu (kể cả bộ nhớ của nó). Khi khởi động tiếp theo, máy ảo sẽ resume từ điểm này. Lưu ý rằng bạn phải có dung lượng trống thêm trên đĩa để lưu bộ nhớ VM (*.BIN files). Guest OS không được restart;
  • Turn off the virtual machine – khi Hyper-V host shutdown, máy ảo cũng sẽ bị dừng (cách tương tự như tắt máy tính vật lý). Trạng thái VM không được lưu, guest OS sẽ khởi động với chu kỳ boot đầy đủ. Ở chế độ này, có một số rủi ro dữ liệu không nhất quán trong app chạy trong VM.
  • Shutdown the guest operating system – guest OS được shutdown dùng Hyper-V integration service (graceful shutdown). Tất cả app chạy trong VM bị dừng và rủi ro dữ liệu không nhất quán rất thấp.

Bạn có thể xem và thay đổi cài đặt tự động khởi động và tắt của máy ảo Hyper-V bằng PowerShell.

Hiển thị cài đặt khởi động và tắt hiện tại của tất cả VM:

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

Bạn có thể thay đổi cài đặt tự động khởi động của VM dùng tùy chọn AutomaticStartAction. Giá trị có thể là Nothing, StartIfRunning, Start.

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

Bạn có thể dùng PowerShell để cấu hình cài đặt máy ảo trên host Windows Hyper-V Server miễn phí không có GUI.

Để thiết lập startup delay cho tất cả VM trừ một (ví dụ, domain controller với vai trò FSMO):

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

Sử dụng tùy chọn –AutomaticStopAction, bạn có thể đặt cài đặt tắt VM (Save, TurnOff, ShutDown).

Thứ tự Boot (Khởi động) của máy ảo Hyper-V

Khi khởi động Hyper-V host standalone, quản trị viên phải quản lý thứ tự khởi động máy ảo trên nó. Ví dụ, bạn cần VM Exchange boot chỉ sau khi domain controller khả dụng, và app server khởi động sau database server. Hyper-V không có công cụ tích hợp nào để quản lý thứ tự khởi động máy ảo, trừ tùy chọn start delay (AutomaticStartDelay).

Trong các trường hợp đơn giản, bạn có thể cấu hình thứ tự khởi động VM bằng cách đặt các startup delay khác nhau cho chúng:

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

Cách khác là khởi động VM lần lượt bằng script PowerShell startup. Trong script, bạn có thể đặt delay trước khi khởi động VM tiếp theo và thực hiện kiểm tra thêm về tính khả dụng của ứng dụng hoặc dịch vụ trong VM (để chắc chắn app hoặc service đã khởi động). Để thuận tiện hơn, bạn có thể gom nhiều VM thành nhóm dùng tag. Ví dụ, tôi đã đặt các tag sau cho 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"

Script PowerShell sau khởi động máy ảo theo thứ tự cụ thể và chạy kiểm tra khả dụng thêm cho một số dịch vụ (cổng TCP) trong VM dùng cmdlet PowerShell 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}

Sau đó thêm script PowerShell vào autostart hoặc chạy nó bằng Task Scheduler (đừng quên tắt tự động khởi động cho tất cả VM được khởi động bằng script này). Nhớ rằng chạy script PowerShell bị hạn chế trong Windows mặc định. Nếu cần, ký script PS1 hoặc thay đổi policy thực thi script PowerShell.