Hyper-V에서는 호스트 OS를 부팅하거나 다시 시작할 때 가상 컴퓨터에 대한 자동 시작 및 종료 옵션을 구성할 수 있습니다. 이 기사에서는 Hyper-V 호스트의 전원이 켜지거나 정상적으로 종료될 때 가상 컴퓨터에서 수행해야 하는 작업을 구성하는 방법과 가상 컴퓨터의 부팅 순서를 설정하는 방법을 보여줍니다.
Hyper-V 가상 머신의 자동 시작 및 종료 작업 구성
기본적으로 Hyper-V 호스트는 다시 시작할 때 등록된 가상 머신의 상태를 저장합니다. 다시 시작하기 전에 VM이 실행 중이었다면 Hyper-V가 자동으로 VM을 시작합니다. 자동 시작 설정은 각 VM에 대해 개별적으로 구성됩니다.
Hyper-V 콘솔을 실행하고 VM의 속성을 연 다음 설정 -> 자동 시작 작업으로 이동합니다. . 가상 머신의 자동 시작을 관리하는 세 가지 옵션을 사용할 수 있습니다.
- 아무것도 – 호스트가 시작되면 가상 머신이 자동으로 시작되지 않습니다(호스트가 다시 시작되기 전의 상태에 관계없이)
- 서비스가 중지되었을 때 실행 중이면 자동으로 시작 – VM은 호스트 종료/다시 시작 전에 실행 중인 경우에만 자동으로 시작됩니다.
- 이 가상 머신을 항상 자동으로 시작 – Hyper-V 호스트가 부팅될 때 항상 이 가상 머신을 시작합니다.
마지막 옵션인 시작 지연에 매개변수를 하나 더 사용할 수 있습니다. . 여기에서 가상 머신의 시작 지연 시간(초)을 지정할 수 있습니다. 지연을 사용하여 가상 머신의 부팅 순서(예:SQL Server로 VM을 시작하기 전에 도메인 컨트롤러 부팅)를 관리하고 여러 VM을 차례로 시작하여 디스크 스토리지의 부하를 줄일 수 있습니다.피>
WAC(Windows Admin Center)에는 아직 Hyper-V 가상 머신의 자동 시작을 관리하는 옵션이 없다는 것이 흥미롭습니다.
또한 자동 중지 작업에서 섹션에서 호스트가 종료되거나 다시 시작되는 경우 가상 머신으로 수행할 작업을 설정할 수 있습니다.
이 설정은 비상 상황(예기치 않은 정전, BSOD)과 달리 가상 컴퓨터를 정상적으로 종료할 시간이 있을 때 Hyper-V 호스트를 올바르게 다시 시작한다는 의미입니다.- 가상 머신 상태 저장 – 가상 머신의 전체 상태가 저장됩니다(메모리 포함). 다음에 시작할 때 가상 머신은 이 지점에서 다시 시작됩니다. VM 메모리(*.BIN 파일)를 유지하려면 디스크에 추가 여유 공간이 있어야 합니다. 게스트 OS가 다시 시작되지 않습니다.
- 가상 머신 끄기 – Hyper-V 호스트가 종료되면 가상 머신도 중지됩니다(실제 컴퓨터가 종료되는 것과 같은 방식으로). VM 상태는 저장되지 않으며 게스트 OS는 전체 부팅 사이클로 시작됩니다. 이 모드에서는 VM에서 실행되는 앱에서 일관성 없는 데이터를 얻을 위험이 있습니다.
- 게스트 운영 체제 종료 – 게스트 OS가 Hyper-V 통합 서비스를 사용하여 종료됩니다(단계적 종료). VM에서 실행 중인 모든 앱이 중지되고 일관성 없는 데이터를 얻을 위험이 매우 낮습니다.
PowerShell을 사용하여 Hyper-V 가상 머신의 자동 시작 및 종료 설정을 보고 변경할 수 있습니다.
모든 VM의 현재 시작 및 종료 설정 표시:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
AutomaticStartAction을 사용하여 VM의 자동 시작 설정을 변경할 수 있습니다. 옵션. 가능한 값은 Nothing
입니다. , StartIfRunning
, Start
.
Get-VM –VMname lon-win10| Set-VM –AutomaticStartAction Start
하나를 제외한 모든 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 시작 지연을 다르게 설정하여 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
또 다른 방법은 PowerShell 시작 스크립트를 사용하여 VM을 차례로 시작하는 것입니다. 스크립트에서 다음 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 스크립트는 가상 머신을 특정 순서로 시작하고 PowerShell cmdlet Test-NetConnection을 사용하여 VM의 일부 서비스(TCP 포트)에 대한 추가 가용성 검사를 실행합니다.
$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 스크립트를 추가하여 자동 시작하거나 작업 스케줄러를 사용하여 실행합니다(이 스크립트를 사용하여 시작된 모든 VM에 대해 자동 시작을 비활성화하는 것을 잊지 마십시오). PowerShell 스크립트 실행은 기본적으로 Windows에서 제한됩니다. 필요한 경우 PS1 스크립트에 서명하거나 PowerShell 스크립트 실행 정책을 변경합니다.