Partilhar via


Move-SCVirtualMachine

Move uma máquina virtual armazenada na biblioteca VMM ou implantada num hospedeiro para um novo local num hospedeiro.

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

O cmdlet Move-SCVirtualMachine move uma máquina virtual armazenada na biblioteca Virtual Machine Manager (VMM) ou implantada num anfitrião para um novo local num hospedeiro.

No System Center 2019, pode tirar partido das novas capacidades de migração incluídas na Windows Server 2016. Estas capacidades incluem a migração ao vivo de máquinas virtuais entre dois computadores autónomos e a migração ao vivo entre computadores autónomos e um nó de cluster. Além disso, são suportadas múltiplas migrações ao vivo simultâneas. Para obter mais informações sobre como migrar máquinas virtuais no System Center 2019, consulte Máquinas Virtuais e Armazenamento migratório em VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) na Biblioteca TechNet.

Se mover uma máquina virtual implantada num anfitrião que executa o Windows Server 2008 R2 para um anfitrião em execução Windows Server 2016, não é possível deslocar a máquina virtual de volta para um anfitrião que executa o Windows Server 2008 R2.

O VMM inclui funcionalidades de migração de armazenamento que permitem mover um ou mais discos rígidos virtuais de uma máquina virtual em execução para um local diferente. Pode utilizar o cmdlet atual e o cmdlet Move-SCVirtualHardDisk para mover ficheiros de disco rígido virtual (.vhd) baseados no Windows e ficheiros de disco rígido virtual baseado em VMware (.vmdk) para um local num anfitrião diferente. Também pode utilizar o cmdlet Move-SCVirtualHardDisk para mover um ficheiro .vhd ou um ficheiro .vmdk de um local para outro no mesmo anfitrião.

Para mover uma máquina virtual de um hospedeiro e guardá-la na biblioteca, deve utilizar o Save-SCVirtualMachine cmdlet.

A VMM pode utilizar qualquer um dos seguintes métodos de transferência, enumerados na ordem em que a VMM tenta usá-los:

  • Migração ao vivo do Hiper-V. Se uma máquina virtual estiver em funcionamento e estiver implantada num anfitrião Hiper-V que seja um nó de um Windows Server 2008 R2 ou Windows Server 2016 cluster de anfitrião, por padrão, o VMM utiliza a migração ao vivo Hyper-V para mover a máquina virtual para outro nó no cluster sem qualquer interrupção de serviço. Mover uma máquina virtual em funcionamento não a desliga da rede. A máquina virtual mantém o seu atributo de alta disponibilidade. Não precisa especificar um caminho. Pode iniciar a migração ao vivo de várias máquinas virtuais ao mesmo tempo.
  • Migração do cluster windows Server 2008. O System Center continua a suportar a migração do Cluster Windows 2008, que por vezes é chamada de Migração Rápida. A Migração do Cluster move uma máquina virtual em execução num nó Hiper-V de um cluster hospedeiro. Também permite mover uma máquina virtual que está num estado parado ou guardado, e que é implantada para outro nó no cluster. Pode utilizar a Migração do Cluster para mover uma máquina virtual num estado parado ou guardado se a máquina virtual for implantada em qualquer um dos seguintes nos dois:

----A nó num nó de cluster do Windows Server 2008 ----A num cluster R2 do Windows Server 2008

Não precisa especificar um caminho. A migração do cluster Windows Server 2008 coloca a máquina virtual num estado salvo durante a migração. Esta operação causa uma perda temporária de serviço a qualquer utilizadores daquela máquina virtual.

  • VMware migração ao vivo. Se uma máquina virtual implantada num anfitrião VMware ESX utilizar armazenamento partilhado, o VMM pode utilizar a funcionalidade de migração ao vivo VMware para mover a máquina virtual para um novo hospedeiro. Esta funcionalidade chama-se VMware VMotion. Não precisa especificar um caminho. O cmdlet atual pode usar VMware VMotion para mover uma máquina virtual de um anfitrião ESX para outro apenas se ambos os anfitriões ESX estiverem no mesmo recipiente datacenter no vCenter Server.
  • Citrix XenServer XenMotion. Se uma máquina virtual implantada num anfitrião Citrix XenServer utilizar armazenamento partilhado e fizer parte do mesmo Pool de Recursos, o VMM pode utilizar a funcionalidade de migração ao vivo do XenServer para mover a máquina virtual para um anfitrião XenServer diferente. A funcionalidade de migração ao vivo chama-se Citrix XenMotion.
  • Migração SAN (Canal de Fibra, iSCSI ou NPIV). Se a máquina virtual estiver num hospedeiro que esteja ligado a um SAN e a máquina virtual estiver num SAN LUN, o VMM pode mover essa máquina virtual para outro hospedeiro se esse hospedeiro tiver acesso ao mesmo SAN. Numa transferência SAN, os LUNs alvo são redirecionados do hospedeiro de origem para o anfitrião do destino. Esta migração não move ficheiros. Uma transferência SAN é muito mais rápida do que mover ficheiros de máquinas virtuais de um hospedeiro para outro através de uma rede de área local (LAN). A VMM suporta a migração de máquinas virtuais para dentro e para fora de um cluster. Tem de especificar um caminho. A VMM pode utilizar uma transferência NPIV SAN se estiver disponível um adaptador de autocarros anfitrião (HBA) com suporte NPIV.
  • Migração de Rede. Se não houver um método mais rápido disponível, o VMM utiliza uma transferência de rede para mover os ficheiros de máquinas virtuais de um hospedeiro para outro sobre a LAN que liga os dois anfitriões. Pode decidir utilizar este tipo de transferência mesmo que o tipo de transferência SAN esteja disponível. Tem de especificar um caminho.

Quando existe mais de um tipo de transferência, este cmdlet utiliza automaticamente o tipo de transferência mais rápido disponível para mover uma máquina virtual. Se um método não for adequado ou disponível para a máquina virtual que pretende mover, a VMM tenta utilizar o próximo método da lista. Se pretender forçar a utilização de uma transferência de rede, especifique o parâmetro UseLAN .

Exemplos

Exemplo 1: Mover uma máquina virtual da biblioteca para um anfitrião

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"

O primeiro comando recebe o objeto da máquina virtual chamado VM01 e, em seguida, armazena esse objeto na variável $VM. Neste exemplo, a máquina virtual armazenada na biblioteca VMM no servidor da biblioteca chamada LibServer01. Este exemplo pressupõe que apenas uma máquina virtual chamada VM01 está atualmente armazenada no LibServer01.

O segundo comando recebe o objeto hospedeiro chamado VMHost01, e depois armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual da sua localização atual na biblioteca para a localização D:\VirtualMachinePath no anfitrião armazenado em $VMHost. O comando utiliza automaticamente o tipo de transferência mais rápido disponível. Quando o comando termina, retorna informações sobre a máquina virtual movida.

Exemplo 2: Mover uma máquina virtual da biblioteca para um hospedeiro assíncronea

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

Os dois primeiros comandos neste exemplo são idênticos aos comandos no primeiro exemplo, com exceção do nome do hospedeiro de máquina virtual.

O terceiro comando move a máquina virtual da sua localização atual para D:\VirtualMachinePath em VMHost02. O comando especifica o parâmetro RunAsynchronously para devolver o controlo à concha de comando imediatamente. O comando especifica o parâmetro JobVariable para acompanhar o progresso do trabalho. O comando armazena um registo do progresso do trabalho na variável $MoveVMJob. Para o parâmetro JobVariable , não especifica o sinal de dólar ($) para criar a variável.

O último comando exibe o conteúdo de $MoveVMJob, que inclui uma descrição do trabalho de mudança, o seu estado, o seu progresso e outras informações.

Exemplo 3: Mover uma máquina virtual da biblioteca para um anfitrião forçando uma transferência 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

O primeiro comando obtém o objeto de máquina virtual chamado VM03 no servidor da biblioteca LibServer01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando recebe o objeto hospedeiro chamado VMHost03, e depois armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual VM03 da sua localização atual na biblioteca para D:\VirtualMachinePath em VMHost03. O comando especifica o parâmetro UseLAN para especificar que a transferência utiliza uma transferência de rede, mesmo que existam mecanismos de transferência mais rápidos.

Exemplo 4: Mover uma máquina virtual entre os anfitriões utilizando vMotion VMware

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]"

O primeiro comando recebe o objeto de máquina virtual chamado VM04 no ESXHost01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando recebe o objeto anfitrião ESX chamado ESXHost02, e depois armazena esse objeto na variável $VMHost.

O comando final utiliza vMware VMotion para mover a máquina virtual do seu atual anfitrião ESX para o outro anfitrião ESX.

NOTA: O cmdlet Move-SCVirtualMachine pode utilizar a função VMware VMotion para mover uma máquina virtual de um anfitrião ESX para outro apenas se ambos os servidores ESX estiverem no mesmo recipiente datacenter no servidor vCenter.

Exemplo 5: Mover uma máquina virtual altamente disponível entre nós num cluster de hospedeiros utilizando a migração ao vivo do 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\"

O primeiro comando obtém o objeto de máquina virtual chamado HAVM05 em VMHVHostNode05A e, em seguida, armazena esse objeto na variável $VM. Neste exemplo, o HAVM05 é uma máquina virtual altamente disponível. VMHVHostNode05A e VMHVHostNode05B são nós num cluster de hospedeiros Hyper-V.

O segundo comando recebe o objeto anfitrião chamado VMHVHostNode05B, e depois armazena esse objeto na variável $VMHost.

O comando final utiliza a migração ao vivo para mover a máquina virtual de VMHVHostNode05A para VMHVHostNode05B.

Exemplo 6: Mover uma máquina virtual em execução num anfitrião Hiper-V para um novo local no mesmo anfitrião

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

O primeiro comando armazena a cadeia E:\VHDs em $MoveVhdPath. Este é o caminho para mover o disco rígido virtual da máquina virtual.

O segundo comando recebe o objeto da máquina virtual chamado VM06, e depois armazena que o objeto da variável $VM.

O terceiro comando recebe o objeto hospedeiro chamado VMHost06, e depois armazena esse objeto na variável $VMHost. Neste exemplo, o VMHost06 é um anfitrião Hiper-V.

O quarto comando armazena a cadeia E:\VirtualMachinePath na variável $HostPath. Este é o caminho para mover VM06.

O quinto comando cria uma nova cadeia GUID e armazena-a na variável $JobGroupID. Este GUID é um ID de grupo de trabalho que funciona como um identificador que agrupar comandos subsequentes que incluem este identificador em um único grupo de trabalho.

O sexto comando define o percurso de disco rígido virtual do valor armazenado em $MoveVhdPath e liga o disco rígido virtual ao Bus 1 e LUN 1 no controlador virtual IDE na máquina virtual. Este comando especifica o parâmetro Do Grupo de Trabalho de modo a que não seja executado até que o Move-SCVirtualMachine desencadeie o funcionamento de quaisquer comandos na lista de grupos de trabalho.

O último comando move VM06 para E:\VirtualMachinePath no mesmo anfitrião. O cmdlet funciona Move-SCVirtualHardDisk como parte de $JobGroupID. O comando move o disco rígido virtual da máquina virtual para E:\VHDs.

Parâmetros

-BlockLiveMigrationIfHostBusy

Indica que o cmdlet bloqueia a nova migração ao vivo de Um Hiper-V se a migração falhar porque o hospedeiro de origem ou o anfitrião do destino já estão a participar em outra migração ao vivo.

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

-DiscardSavedState

Indica que este cmdlet elimina o estado guardado associado a uma máquina ou serviço virtual.

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

-HighlyAvailable

Especifica se deve colocar uma máquina virtual num hospedeiro Hiper-V que faz parte de um cluster de hospedeiros.

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

-JobGroup

Especifica um identificador para uma série de comandos que funciona como um conjunto pouco antes do comando final que inclui o mesmo identificador do grupo de trabalho.

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

-JobVariable

Especifica o nome de uma variável para o progresso do trabalho.

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

-OnBehalfOfUser

Especifica um nome de utilizador. Este cmdlet funciona em nome do utilizador que este parâmetro especifica.

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

-OnBehalfOfUserRole

Especifica uma função de utilizador. Para obter uma função de utilizador, utilize o cmdlet Get-SCUserRole . Este cmdlet funciona em nome da função de utilizador que este parâmetro especifica.

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

-Path

Especifica o caminho da máquina virtual movida.

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

-PROTipID

Especifica o ID da ponta de otimização de desempenho e recursos (ponta PRO) que desencadeou esta ação. Este parâmetro permite-lhe auditar dicas PRO.

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

-ReplicationGroup

Especifica um grupo de replicação.

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

-RunAsynchronously

Indica que o trabalho funciona assíncronamente para que o controlo volte imediatamente à concha de comando.

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

-StartVMOnTarget

Especifica que uma máquina virtual começa assim que este cmdlet a move para o seu anfitrião de destino.

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

-UseCluster

Indica que este cmdlet usa a Migração cluster para a transferência de uma máquina virtual que está em estado salvo para um hospedeiro, mesmo que o cluster suporte a migração ao vivo Hyper-V.

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

-UseDiffDiskOptimization

Indica que o cmdlet utiliza uma otimização do disco diferente.

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

-UseLAN

Indica que este cmdlet utiliza transferência sobre a LAN mesmo que exista um mecanismo de transferência mais rápido.

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

-VM

Especifica um objeto de máquina virtual.

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

-VMHost

Especifica um objeto hospedeiro de máquina virtual. A VMM suporta anfitriões Hiper-V, anfitriões VMware ESX e anfitriões Citrix XenServer.

Para obter mais informações sobre cada tipo de hospedeiro, consulte o cmdlet Add-SCVMHost .

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

Saídas

VirtualMachine

Este cmdlet devolve um objeto VirtualMachine .