Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

이 글에서는 PowerShell 콘솔에서 Hyper-V 가상 머신(VM)을 관리하는 방법을 소개합니다. 가상 스위치와 가상 머신 생성, VM 설정 변경, 그리고 다양한 운영 작업 수행 방법까지 하나씩 살펴봅니다. 여기서 다루는 명령어들은 수동 관리뿐 아니라 PowerShell 스크립트에 활용해 반복 작업을 자동화할 때도 매우 유용합니다.

Windows Server 및 Windows 10/11에서 Hyper-V 역할 활성화

Hyper-V 역할을 설치하려면 호스트의 CPU가 SLAT(Second Level Address Translation)과 하드웨어 가상화를 지원해야 합니다. Windows Server에서는 아래 PowerShell 명령으로 Hyper-V 역할을 설치합니다.

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

데스크톱 버전(Windows 10/11)에서는 다음 명령을 사용합니다.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

Hyper-V 호스트를 관리하려면 컴퓨터에 Hyper-V PowerShell 모듈이 설치되어 있어야 합니다. 사용 가능한 전체 명령 목록(Windows 버전에 따라 다름)은 아래와 같이 확인할 수 있습니다.

Get-Command -Module hyper-v

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

Windows Server 2022의 Hyper-V 모듈에는 총 245개의 cmdlet이 포함되어 있습니다.

Hyper-V 호스트 설정 전체 목록을 확인하려면 다음 명령을 사용합니다.

Get-VMHost | fl *

사용 가능한 CPU 코어 수와 RAM 용량 정보만 표시하려면:

Get-VMHost | select LogicalProcessorCount, MemoryCapacity

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

Hyper-V 호스트 설정을 변경할 때는 Set-VMHost를 사용합니다. 다음 명령은 가상 디스크와 VM 구성 파일의 기본 저장 경로를 변경합니다.

Set-VMHost -VirtualMachinePath E:\VMs -VirtualHardDiskPath E:\VMs\VHD

PowerShell로 Hyper-V 가상 스위치 만들기

먼저 Hyper-V 호스트에 가상 스위치를 생성해야 합니다. 가상 머신은 가상 스위치를 통해서만 네트워크에 접근할 수 있습니다.

호스트에서 사용 가능한 물리적 네트워크 어댑터 목록을 먼저 확인합니다.

Get-NetAdapter | where {$_.status -eq "up"}

서버가 SR-IOV(Single-Root Input/Output Virtualization)를 지원한다면, 가상 스위치를 생성하는 시점에 해당 옵션을 반드시 활성화해야 합니다. 이미 생성된 vSwitch에는 SR-IOV를 나중에 추가할 수 없습니다.

외부(External) 가상 스위치를 생성하는 명령은 다음과 같습니다.

New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

PowerShell로 Hyper-V 가상 머신 생성하기

새 Hyper-V 가상 머신은 New-VM cmdlet으로 생성합니다. 이 예제에서는 RAM 1GB, VHDX 디스크 10GB를 갖춘 세대 2(Generation 2) VM을 새로 만듭니다.

$VMName = "mun-prx2"
$VM = @{
Name = $VMName
MemoryStartupBytes = 1Gb
Generation = 2
NewVHDPath = "E:\HV\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 10Gb
BootDevice = "VHD"
Path = "E:\HV\$VMName"
SwitchName = "ExternalVMSwitch"
}
New-VM @VM

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

이어서 VM 설정을 변경하는 데 사용할 수 있는 주요 명령들을 살펴보겠습니다.

VM의 RAM 크기를 늘리려면:

Get-VM -Name mun-prx2 | Set-VMMemory -StartupBytes 2Gb

vCPU 개수를 변경하려면:

Set-VMProcessor mun-prx2 -Count 2

Hyper-V 가상 머신의 자동 시작을 활성화하려면:

Get-VM –VMname mun-prx2 | Set-VM –AutomaticStartAction Start

VM에 추가 가상 디스크를 연결하려면 먼저 VHDX 파일을 생성합니다.

New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB

그다음 생성한 디스크를 VM에 연결합니다.

Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'

PowerShell로 Hyper-V VM 관리하기

Hyper-V 호스트의 가상 머신 목록을 표시하려면:

Get-VM

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

이 명령은 기본 속성과 함께 VM 목록을 반환합니다. 특정 VM의 모든 속성을 확인하려면:

Get-VM -Name mun-dmz1 | fl *

실행 중인 VM만 표시하려면:

Get-VM | where {$_.State -eq 'Running'}

가상 머신을 시작하려면:

Start-VM -Name mun-app01

중지된 모든 가상 머신을 한 번에 시작하려면:

Get-VM | where {$_.State -eq 'Off'} | Start-VM

VM을 정상적으로 종료하려면(게스트 OS의 Integration Services를 통한 안전한 종료):

Stop-VM -Name mun-app01

강제로 전원을 끄려면 TurnOff 옵션을 사용합니다.

Stop-VM -Name mun-app01 –TurnOff

ISO 파일을 가상 CD/DVD 장치에 마운트하려면:

Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso

실행 중인 VM의 파일을 서비스 중단 없이 다른 디스크로 이동하려면 다음 명령을 사용합니다.

Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01

Resize-VHD cmdlet을 사용하면 가상 디스크 파일을 확장하거나 축소할 수 있습니다.

Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb

VM의 체크포인트(스냅숏)를 생성하려면:

Get-VM -Name mun-app01 | Checkpoint-VM -SnapshotName "SAP 업그레이드 전"

사용 가능한 체크포인트 목록을 확인하려면:

Get-Vm -Name mun-app01 | Get-VMCheckpoint

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

체크포인트에서 이전 상태로 VM을 복원하려면:

Restore-VMCheckpoint -Name "SAP 업그레이드 전" -VMName mun-app01 -Confirm:$false

스냅숏을 삭제하려면:

Remove-VMCheckpoint -VMName mun-app01 -Name "SAP 업그레이드 전"

VM을 내보내는 예시는 다음과 같습니다.

Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState

가상 머신 게스트 OS의 IP 주소를 확인하려면:

Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status

가상 머신 콘솔에 연결하려면:

vmconnect.exe localhost mun-app01

PowerShell로 Hyper-V 가상 머신 관리하기: 생성부터 체크포인트까지

Windows Server 2016, Windows 10 이상에서는 PowerShell Direct를 사용해 vmbus를 통해 게스트 OS에 직접 연결할 수 있습니다. 스크립트 실행에는 Invoke-Command를, 대화형 PowerShell 세션에는 Enter-PSSession을 사용합니다.

Invoke-Command -VMName mun-app01 -ScriptBlock {Get-Process}
Enter-PSSession -VMName mun-app01

PowerShell Direct로 Hyper-V 호스트에서 가상 머신으로 파일을 복사하려면 다음 명령을 사용합니다.

$PSSession = New-PSSession -VMName mun-app01 -Credential (Get-Credential)
Copy-Item -ToSession $PSSession -Path E:\ISO\install_image.iso -Destination D:\ISO\

이처럼 PowerShell을 활용하면 Hyper-V 호스트의 가상 머신을 로컬 또는 원격으로 관리할 수 있습니다(Windows Server Full GUI 또는 Server Core, 무료 Windows Hyper-V Server, Windows 10 환경 모두 지원). Hyper-V 관리자나 Windows Admin Center 같은 그래픽 도구와 함께 사용하면 더욱 효율적인 관리가 가능합니다.