Move-SCVirtualMachine

VMM 라이브러리에 저장되거나 호스트에 배포된 가상 머신을 호스트의 새 위치로 이동합니다.

Syntax

Move-SCVirtualMachine
    [-VM] <VM>
    [-VMHost <Host>]
    [-ReplicationGroup <ReplicationGroup>]
    [-BlockLiveMigrationIfHostBusy]
    [-UseDiffDiskOptimization]
    [-StartVMOnTarget]
    [-DiscardSavedState]
    [-UseLAN]
    [-UseCluster]
    [-HighlyAvailable <Boolean>]
    [-Path <String>]
    [-JobGroup <Guid>]
    [-RunAsynchronously]
    [-PROTipID <Guid>]
    [-JobVariable <String>]
    [-OnBehalfOfUser <String>]
    [-OnBehalfOfUserRole <UserRole>]
    [<CommonParameters>]

Description

Move-SCVirtualMachine cmdlet은 VMM(Virtual Machine Manager) 라이브러리에 저장되거나 호스트에 배포된 가상 머신을 호스트의 새 위치로 이동합니다.

System Center 2019 이상에서는 Windows Server 2016 포함된 새로운 마이그레이션 기능을 활용할 수 있습니다. 이러한 기능에는 두 독립 실행형 컴퓨터 간의 가상 머신 실시간 마이그레이션과 독립 실행형 컴퓨터와 클러스터 노드 간의 실시간 마이그레이션이 포함됩니다. 또한 여러 동시 실시간 마이그레이션이 지원됩니다. System Center에서 가상 머신을 마이그레이션하는 방법에 대한 자세한 내용은 TechNet 라이브러리의 VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx에서 Virtual Machines 및 스토리지 마이그레이션(https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx)을 참조하세요.

Windows Server 2008 R2를 실행하는 호스트에 배포된 가상 머신을 Windows Server 2016 실행하는 호스트로 이동하는 경우 가상 머신을 Windows Server 2008 R2를 실행하는 호스트로 다시 이동할 수 없습니다.

VMM에는 실행 중인 가상 머신의 하나 이상의 가상 하드 디스크를 다른 위치로 이동할 수 있는 스토리지 마이그레이션 기능이 포함되어 있습니다. 현재 cmdlet 및 Move-SCVirtualHardDisk cmdlet을 사용하여 Windows 기반 가상 하드 디스크(.vhd) 파일 및 VMware 기반 가상 하드 디스크(.vmdk) 파일을 다른 호스트의 위치로 이동할 수 있습니다. Move-SCVirtualHardDisk cmdlet을 사용하여 .vhd 파일 또는 .vmdk 파일을 동일한 호스트의 한 위치에서 다른 위치로 이동할 수도 있습니다.

호스트에서 가상 머신을 이동하고 라이브러리에 저장하려면 Save-SCVirtualMachine cmdlet을 사용해야 합니다.

VMM은 VMM에서 사용하려고 하는 순서대로 나열된 다음 전송 방법 중 하나라도 사용할 수 있습니다.

  • Hyper-V 실시간 마이그레이션. 가상 머신이 실행 중이고 Windows Server 2008 R2 또는 Windows Server 2016 호스트 클러스터의 노드인 Hyper-V 호스트에 배포되는 경우 VMM은 기본적으로 Hyper-V 라이브 마이그레이션을 사용하여 서비스 중단 없이 가상 머신을 클러스터의 다른 노드로 이동합니다. 실행 중인 가상 머신을 이동해도 네트워크에서 연결이 끊어지지 않습니다. 가상 머신은 고가용성 특성을 유지합니다. 경로를 지정할 필요가 없습니다. 여러 가상 머신의 실시간 마이그레이션을 동시에 시작할 수 있습니다.
  • Windows Server 2008 클러스터 마이그레이션. System Center는 빠른 마이그레이션이라고도 하는 Windows 2008 클러스터 마이그레이션을 계속 지원합니다. 클러스터 마이그레이션은 호스트 클러스터의 Hyper-V 노드에서 실행 중인 가상 머신을 이동합니다. 또한 중지되거나 저장된 상태이고 클러스터의 다른 노드에 배포된 가상 머신을 이동할 수 있습니다. 다음 노드 중 하나에 가상 머신이 배포된 경우 클러스터 마이그레이션을 사용하여 가상 머신을 중지되거나 저장된 상태로 이동할 수 있습니다.

windows Server 2008 클러스터의 ----A 노드 ---- Windows Server 2008 R2 클러스터의 노드

경로를 지정할 필요가 없습니다. Windows Server 2008 클러스터 마이그레이션은 마이그레이션 중에 가상 머신을 저장된 상태로 만듭니다. 이 작업을 수행하면 해당 가상 머신의 사용자에게 일시적인 서비스 손실이 발생합니다.

  • VMware 실시간 마이그레이션. VMware ESX 호스트에 배포된 가상 머신이 공유 스토리지를 사용하는 경우 VMM은 VMware 라이브 마이그레이션 기능을 사용하여 가상 머신을 새 호스트로 이동할 수 있습니다. 이 기능을 VMware VMotion이라고 합니다. 경로를 지정할 필요가 없습니다. 현재 cmdlet은 VMware VMotion을 사용하여 두 ESX 호스트가 vCenter Server의 동일한 Datacenter 컨테이너에 있는 경우에만 가상 머신을 한 ESX 호스트에서 다른 호스트로 이동할 수 있습니다.
  • Citrix XenServer XenMotion. Citrix XenServer 호스트에 배포된 가상 머신이 공유 스토리지를 사용하고 동일한 리소스 풀의 일부인 경우 VMM은 XenServer 라이브 마이그레이션 기능을 사용하여 가상 머신을 다른 XenServer 호스트로 이동할 수 있습니다. 라이브 마이그레이션 기능을 Citrix XenMotion이라고 합니다.
  • SAN 마이그레이션(파이버 채널, iSCSI 또는 NPIV). 가상 머신이 SAN에 연결된 호스트에 있고 가상 머신이 SAN LUN에 있는 경우 VMM은 해당 호스트가 동일한 SAN에 액세스할 수 있는 경우 해당 가상 머신을 다른 호스트로 이동할 수 있습니다. SAN 전송에서 대상 LUN은 원본 호스트에서 대상 호스트로 리디렉션됩니다. 이 마이그레이션은 파일을 이동하지 않습니다. SAN 전송은 LAN(로컬 영역 네트워크)을 통해 가상 머신 파일을 한 호스트에서 다른 호스트로 이동하는 것보다 훨씬 빠릅니다. VMM은 클러스터 내/외부 가상 머신의 SAN 마이그레이션을 지원합니다. 경로를 지정해야 합니다. NPIV가 지원되는 HBA(호스트 버스 어댑터)를 사용할 수 있는 경우 VMM에서 NPIV SAN 전송을 사용할 수 있습니다.
  • 네트워크 마이그레이션. 더 빠른 방법을 사용할 수 없는 경우 VMM은 네트워크 전송을 사용하여 두 호스트를 연결하는 LAN을 통해 가상 머신 파일을 한 호스트에서 다른 호스트로 이동합니다. SAN 전송 유형을 사용할 수 있는 경우에도 이 전송 유형을 사용하도록 결정할 수 있습니다. 경로를 지정해야 합니다.

둘 이상의 전송 유형을 사용할 수 있는 경우 이 cmdlet은 사용 가능한 가장 빠른 전송 유형을 자동으로 사용하여 가상 머신을 이동합니다. 이동하려는 가상 머신에 메서드가 적절하지 않거나 사용할 수 없는 경우 VMM은 목록에서 다음 메서드를 사용하려고 합니다. 네트워크 전송을 강제로 사용하려면 UseLAN 매개 변수를 지정합니다.

예제

예제 1: 라이브러리에서 호스트로 가상 머신 이동

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost01.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath"

첫 번째 명령 명령은 VM01이라는 가상 머신 개체를 가져오고 해당 개체를 $VM 변수에 저장합니다. 이 예제에서는 LibServer01이라는 라이브러리 서버의 VMM 라이브러리에 저장된 가상 머신입니다. 이 예제에서는 VM01이라는 가상 머신이 현재 LibServer01에 저장되어 있다고 가정합니다.

두 번째 명령은 VMHost01이라는 호스트 개체를 가져오고 해당 개체를 $VMHost 변수에 저장합니다.

마지막 명령은 라이브러리의 현재 위치에서 $VMHost 저장된 호스트의 D:\VirtualMachinePath 위치로 가상 머신을 이동합니다. 이 명령은 사용 가능한 전송 형식 중 속도가 가장 빠른 전송 형식을 자동으로 사용합니다. 명령이 완료되면 이동된 가상 머신에 대한 정보를 반환합니다.

예제 2: 라이브러리에서 호스트로 비동기적으로 가상 머신 이동

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost02.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -RunAsynchronously -JobVariable "MoveVMJob"
PS C:\> $MoveVMJob

이 예제의 처음 두 명령은 가상 머신 호스트의 이름을 제외하고 첫 번째 예제의 명령과 동일합니다.

세 번째 명령은 가상 머신을 현재 위치에서 VMHost02의 D:\VirtualMachinePath로 이동합니다. 명령은 명령 셸에 컨트롤을 즉시 반환하는 RunAsynchronously 매개 변수를 지정합니다. 명령은 작업의 진행률을 추적하기 위해 JobVariable 매개 변수를 지정합니다. 명령은 작업 진행률에 대한 레코드를 $MoveVMJob 변수에 저장합니다. JobVariable 매개 변수의 경우 변수를 만들 달러 기호($)를 지정하지 않습니다.

마지막 명령은 이동 작업, 상태, 진행률 및 기타 정보에 대한 설명을 포함하는 $MoveVMJob 내용을 표시합니다.

예제 3: LAN 전송을 강제로 수행하여 라이브러리에서 호스트로 가상 머신 이동

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM03" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost03.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -UseLAN

첫 번째 명령은 라이브러리 서버 LibServer01에서 VM03이라는 가상 머신 개체를 가져오고 해당 개체를 $VM 변수에 저장합니다.

두 번째 명령은 VMHost03이라는 호스트 개체를 가져오고 해당 개체를 $VMHost 변수에 저장합니다.

마지막 명령은 가상 머신 VM03을 라이브러리의 현재 위치에서 VMHost03의 D:\VirtualMachinePath로 이동합니다. 명령은 빠른 전송 메커니즘을 사용할 수 있더라도 전송이 네트워크 전송을 사용하도록 지정하는 UseLAN 매개 변수를 지정합니다.

예제 4: VMware VMotion을 사용하여 호스트 간에 가상 머신 이동

PS C:\> $VM = Get-SCVirtualMachine -Name "VM04" | Where-Object {$_.VMHost.Name -Eq "ESXHost01"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "ESXHost02"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "[Storage2]"

첫 번째 명령은 ESXHost01에서 VM04라는 가상 머신 개체를 가져오고 해당 개체를 $VM 변수에 저장합니다.

두 번째 명령은 ESXHost02라는 ESX 호스트 개체를 가져오고 해당 개체를 $VMHost 변수에 저장합니다.

최종 명령은 VMware VMotion을 사용하여 가상 머신을 현재 ESX 호스트에서 다른 ESX 호스트로 이동합니다.

참고: Move-SCVirtualMachine cmdlet은 VMware VMotion 기능을 사용하여 두 ESX 서버가 vCenter Server의 동일한 데이터 센터 컨테이너에 있는 경우에만 가상 머신을 한 ESX 호스트에서 다른 호스트로 이동할 수 있습니다.

예제 5: Hyper-V 실시간 마이그레이션을 사용하여 호스트 클러스터의 노드 간에 고가용성 가상 머신 이동

PS C:\> $VM = Get-SCVirtualMachine -Name "HAVM05" | Where-Object {$_.VMHost.Name -Eq "VMHVHostNode05A.Contoso.com"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "VMHVHostNode05B.Contoso.com"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "D:\VMs\"

첫 번째 명령은 VMHVHostNode05A에서 HAVM05라는 가상 머신 개체를 가져오고 해당 개체를 $VM 변수에 저장합니다. 이 예제에서 HAVM05는 고가용성 가상 머신입니다. VMHVHostNode05A 및 VMHVHostNode05B는 Hyper-V 호스트 클러스터의 노드입니다.

두 번째 명령은 VMHVHostNode05B라는 호스트 개체를 가져오고 해당 개체를 $VMHost 변수에 저장합니다.

최종 명령은 실시간 마이그레이션을 사용하여 가상 머신을 VMHVHostNode05A에서 VMHVHostNode05B로 이동합니다.

예제 6: Hyper-V 호스트에서 실행 중인 가상 머신을 동일한 호스트의 새 위치로 이동

PS C:\> $MoveVhdPath = "E:\VHDs"
PS C:\> $VM = Get-SCVirtualMachine "VM06"
PS C:\> $VMHost = Get-SCVMHost "VMHost06"
PS C:\> $HostPath = "E:\VirtualMachinePath"
PS C:\> $JobGroupID = [System.Guid]::NewGuid().ToString()
PS C:\> Move-SCVirtualHardDisk -IDE -Bus 1 -Lun 1 -Path $MoveVhdPath -JobGroup $JobGroupID
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path $HostPath -JobGroup $JobGroupID

첫 번째 명령은 문자열 E:\VHD를 $MoveVhdPath 저장합니다. 가상 머신의 가상 하드 디스크를 이동하는 경로입니다.

두 번째 명령은 VM06이라는 가상 머신 개체를 가져오고 해당 개체를 $VM 변수를 저장합니다.

세 번째 명령은 VMHost06이라는 호스트 개체를 가져오고 해당 개체를 $VMHost 변수에 저장합니다. 이 예제에서 VMHost06은 Hyper-V 호스트입니다.

네 번째 명령은 문자열 E:\VirtualMachinePath를 $HostPath 변수에 저장합니다. VM06을 이동할 경로입니다.

다섯 번째 명령은 새 GUID 문자열을 만들고 $JobGroupID 변수에 저장합니다. 이 GUID는 작업 그룹 ID로, 해당 식별자가 포함된 후속 명령을 단일 작업 그룹으로 그룹화하는 데 사용됩니다.

여섯 번째 명령은 $MoveVhdPath 저장된 값의 가상 하드 디스크 경로를 설정하고 가상 머신의 가상 IDE 컨트롤러에서 가상 하드 디스크를 Bus 1 및 LUN 1에 연결합니다. 이 명령은 Move-SCVirtualMachine이 작업 그룹 목록의 명령 실행을 트리거할 때까지 실제로 실행되지 않도록 JobGroup 매개 변수를 지정합니다.

마지막 명령은 동일한 호스트에서 VM06을 E:\VirtualMachinePath로 이동합니다. cmdlet은 $JobGroupID 일부로 Move-SCVirtualHardDisk 실행됩니다. 명령은 가상 머신의 가상 하드 디스크를 E:\VHD로 이동합니다.

매개 변수

-BlockLiveMigrationIfHostBusy

원본 호스트 또는 대상 호스트가 이미 다른 라이브 마이그레이션에 참여하고 있기 때문에 마이그레이션이 실패한 경우 cmdlet이 Hyper-V 라이브 마이그레이션 재시도를 차단한다는 것을 나타냅니다.

Type:SwitchParameter
Aliases:BlockLMIfHostBusy
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DiscardSavedState

이 cmdlet이 가상 머신 또는 서비스와 연결된 저장된 상태를 삭제했음을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HighlyAvailable

호스트 클러스터의 일부인 Hyper-V 호스트에 가상 머신을 배치할지 여부를 지정합니다.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-JobGroup

동일한 작업 그룹 식별자를 포함하는 최종 명령이 실행되기 직전에 집합으로 실행되는 일련의 명령에 대한 식별자를 지정합니다.

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-JobVariable

작업 진행률에 대한 변수의 이름을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OnBehalfOfUser

사용자 이름을 지정합니다. 이 cmdlet은 이 매개 변수가 지정하는 사용자를 대신하여 작동합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OnBehalfOfUserRole

사용자 역할을 지정합니다. 사용자 역할을 가져오려면 Get-SCUserRole cmdlet을 사용합니다. 이 cmdlet은 이 매개 변수가 지정하는 사용자 역할을 대신하여 작동합니다.

Type:UserRole
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

이동된 가상 머신의 경로를 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PROTipID

이 작업을 트리거한 PRO 팁(성능 및 리소스 최적화 팁)의 ID를 지정합니다. 이 매개 변수를 사용하면 PRO 팁을 감사할 수 있습니다.

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReplicationGroup

복제 그룹을 지정합니다.

Type:ReplicationGroup
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsynchronously

컨트롤이 명령 셸로 즉시 반환되도록 작업이 비동기적으로 실행됨을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StartVMOnTarget

이 cmdlet이 가상 머신을 대상 호스트로 이동하는 즉시 가상 머신이 시작되도록 지정합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCluster

이 cmdlet은 클러스터가 Hyper-V 실시간 마이그레이션을 지원하는 경우에도 저장된 상태의 가상 머신을 호스트로 전송하기 위해 클러스터 마이그레이션을 사용한다는 것을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseDiffDiskOptimization

cmdlet이 차이점 디스크 최적화를 사용한다는 것을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseLAN

이 cmdlet은 더 빠른 전송 메커니즘을 사용할 수 있더라도 LAN을 통해 전송을 사용한다는 것을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VM

가상 컴퓨터 개체를 지정합니다.

Type:VM
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMHost

가상 컴퓨터 호스트 개체를 지정합니다. VMM은 Hyper-V 호스트, VMware ESX 호스트 및 Citrix XenServer 호스트를 지원합니다.

각 호스트 유형에 대한 자세한 내용은 Add-SCVMHost cmdlet을 참조하세요.

Type:Host
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

출력

VirtualMachine

이 cmdlet은 VirtualMachine 개체를 반환합니다.