Compartilhar via


Move-SCVirtualMachine

Move uma máquina virtual armazenada na biblioteca do VMM ou implantada em um host para um novo local em um host.

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 do VMM (Virtual Machine Manager) ou implantada em um host para um novo local em um host.

No System Center 2019, você pode aproveitar os novos recursos de migração incluídos no Windows Server 2016. Esses recursos incluem a migração dinâmica de máquinas virtuais entre dois computadores autônomos e a migração dinâmica entre computadores autônomos e um nó de cluster. Além disso, há suporte para várias migrações dinâmicas simultâneas. Para obter mais informações sobre como migrar máquinas virtuais no System Center 2019, consulte Migrando Máquinas Virtuais e Armazenamento no 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 do TechNet.

Se você mover uma máquina virtual implantada em um host executando o Windows Server 2008 R2 para um host em execução Windows Server 2016, não será possível mover a máquina virtual de volta para um host executando o Windows Server 2008 R2.

O VMM inclui recursos 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. Você pode usar o cmdlet atual e o cmdlet Move-SCVirtualHardDisk para mover arquivos de disco rígido virtual baseado no Windows (.vhd) e arquivos de disco rígido virtual baseado em VMware (.vmdk) para um local em um host diferente. Você também pode usar o cmdlet Move-SCVirtualHardDisk para mover um arquivo .vhd ou um arquivo .vmdk de um local para outro no mesmo host.

Para mover uma máquina virtual de um host e armazená-la na biblioteca, você deve usar o cmdlet Save-SCVirtualMachine.

O VMM pode usar qualquer um dos seguintes métodos de transferência, listados na ordem em que o VMM tenta usá-los:

  • Migração dinâmica do Hyper-V. Se uma máquina virtual estiver em execução e for implantada em um host Hyper-V que seja um nó de um Windows Server 2008 R2 ou Windows Server 2016 cluster de host, por padrão, o VMM usará a migração dinâmica do Hyper-V para mover a máquina virtual para outro nó no cluster sem qualquer interrupção do serviço. Mover uma máquina virtual em execução não a desconecta da rede. A máquina virtual mantém seu atributo de alta disponibilidade. Você não precisa especificar um caminho. Você pode iniciar a migração dinâmica de várias máquinas virtuais ao mesmo tempo.
  • Migração de cluster do Windows Server 2008. O System Center continua a dar suporte à Migração de Cluster do Windows 2008, que às vezes é chamada de Migração Rápida. A Migração de Cluster move uma máquina virtual em execução em um nó Hyper-V de um cluster host. Ele também permite mover uma máquina virtual que está em um estado parado ou salvo e que é implantada em outro nó no cluster. Você pode usar a Migração de Cluster para mover uma máquina virtual em um estado parado ou salvo se a máquina virtual for implantada em qualquer um dos seguintes nós:

nó ----A em um nó ----A do cluster do Windows Server 2008 em um cluster do Windows Server 2008 R2

Você não precisa especificar um caminho. A Migração de Cluster do Windows Server 2008 coloca a máquina virtual em um estado salvo durante a migração. Essa operação causa uma perda temporária de serviço para qualquer usuário dessa máquina virtual.

  • Migração dinâmica do VMware. Se uma máquina virtual implantada em um host VMware ESX usar o armazenamento compartilhado, o VMM poderá usar o recurso de migração dinâmica do VMware para mover a máquina virtual para um novo host. Esse recurso é chamado VMware VMotion. Você não precisa especificar um caminho. O cmdlet atual pode usar o VMware VMotion para mover uma máquina virtual de um host ESX para outro somente se ambos os hosts ESX estiverem no mesmo contêiner do Datacenter no vCenter Server.
  • Citrix XenServer XenMotion. Se uma máquina virtual implantada em um host Citrix XenServer usa armazenamento compartilhado e faz parte do mesmo Pool de Recursos, o VMM pode usar o recurso de migração dinâmica XenServer para mover a máquina virtual para um host XenServer diferente. O recurso de migração ao vivo é chamado Citrix XenMotion.
  • Migração san (Fibre Channel, iSCSI ou NPIV). Se a máquina virtual estiver em um host conectado a uma SAN e a máquina virtual estiver em um SAN LUN, o VMM poderá mover essa máquina virtual para outro host se esse host tiver acesso à mesma SAN. Em uma transferência de SAN, os LUNs de destino são redirecionados do host de origem para o host de destino. Essa migração não move arquivos. Uma transferência de SAN é muito mais rápida do que mover arquivos de máquina virtual de um host para outro em uma LAN (rede de área local). O VMM dá suporte à migração SAN de máquinas virtuais para dentro e fora de um cluster. Você deve especificar um caminho. O VMM poderá usar uma transferência NPIV SAN se um HBA (adaptador de barramento de host) com suporte de NPIV estiver disponível.
  • Migração de Rede. Se nenhum método mais rápido estiver disponível, o VMM usará uma transferência de rede para mover os arquivos de máquina virtual de um host para outro pela LAN que conecta os dois hosts. Você pode decidir usar esse tipo de transferência mesmo se o tipo de transferência SAN estiver disponível. Você deve especificar um caminho.

Quando mais de um tipo de transferência está disponível, esse cmdlet usa automaticamente o tipo de transferência mais rápido disponível para mover uma máquina virtual. Se um método não for apropriado ou disponível para a máquina virtual que você deseja mover, o VMM tentará usar o próximo método na lista. Se você quiser forçar o uso de uma transferência de rede, especifique o parâmetro UseLAN .

Exemplos

Exemplo 1: mover uma máquina virtual da biblioteca para um host

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 obtém o objeto de máquina virtual chamado VM01 e armazena esse objeto na variável $VM. Neste exemplo, a máquina virtual armazenada na biblioteca do VMM no servidor de biblioteca chamada LibServer01. Este exemplo pressupõe que apenas uma máquina virtual chamada VM01 esteja armazenada atualmente no LibServer01.

O segundo comando obtém o objeto host chamado VMHost01 e armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual de seu local atual na biblioteca para o local D:\VirtualMachinePath no host armazenado em $VMHost. O comando usa automaticamente o tipo de transferência disponível mais rápido. Quando o comando for concluído, ele retornará informações sobre a máquina virtual movida.

Exemplo 2: mover uma máquina virtual da biblioteca para um host de forma assíncrona

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, exceto pelo nome do host da máquina virtual.

O terceiro comando move a máquina virtual de seu local atual para D:\VirtualMachinePath na VMHost02. O comando especifica o parâmetro RunAsynchronously para retornar o controle ao shell de comando imediatamente. O comando especifica o parâmetro JobVariable para acompanhar o progresso do trabalho. O comando armazena um registro do progresso do trabalho na variável $MoveVMJob. Para o parâmetro JobVariable , você não especifica o sinal de dólar ($) para criar a variável.

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

Exemplo 3: mover uma máquina virtual da biblioteca para um host forçando uma transferência de 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 de biblioteca LibServer01 e armazena esse objeto na variável $VM.

O segundo comando obtém o objeto host chamado VMHost03 e armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual VM03 de seu local atual na biblioteca para D:\VirtualMachinePath na VMHost03. O comando especifica o parâmetro UseLAN para especificar que a transferência use uma transferência de rede, mesmo que mecanismos de transferência mais rápidos estejam disponíveis.

Exemplo 4: mover uma máquina virtual entre hosts usando 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]"

O primeiro comando obtém o objeto de máquina virtual chamado VM04 no ESXHost01 e armazena esse objeto na variável $VM.

O segundo comando obtém o objeto host ESX chamado ESXHost02 e armazena esse objeto na variável $VMHost.

O comando final usa o VMware VMotion para mover a máquina virtual do host ESX atual para o outro host ESX.

OBSERVAÇÃO: o cmdlet Move-SCVirtualMachine pode usar o recurso VMware VMotion para mover uma máquina virtual de um host ESX para outro somente se ambos os servidores ESX estiverem no mesmo contêiner do Datacenter no vCenter Server.

Exemplo 5: mover uma máquina virtual altamente disponível entre nós em um cluster de host usando a migração dinâmica 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 na VMHVHostNode05A e 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 em um cluster de host Hyper-V.

O segundo comando obtém o objeto host chamado VMHVHostNode05B e armazena esse objeto na variável $VMHost.

O comando final usa a migração dinâmica para mover a máquina virtual de VMHVHostNode05A para VMHVHostNode05B.

Exemplo 6: mover uma máquina virtual em execução em um host Hyper-V para um novo local no mesmo host

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 de caracteres E:\VHDs em $MoveVhdPath. Esse é o caminho do qual mover o disco rígido virtual da máquina virtual.

O segundo comando obtém o objeto de máquina virtual chamado VM06 e armazena esse objeto na variável $VM.

O terceiro comando obtém o objeto host chamado VMHost06 e armazena esse objeto na variável $VMHost. Neste exemplo, o VMHost06 é um host Hyper-V.

O quarto comando armazena a cadeia de caracteres E:\VirtualMachinePath na variável $HostPath. Esse é o caminho do qual mover a VM06.

O quinto comando cria uma nova cadeia de caracteres GUID e a armazena na variável $JobGroupID. Esse GUID é uma ID de grupo de trabalho que funciona como um identificador que agrupa os comandos subsequentes que incluem esse identificador em um único grupo de trabalho.

O sexto comando define o caminho do disco rígido virtual do valor armazenado em $MoveVhdPath e conecta o disco rígido virtual ao Barramento 1 e AO LUN 1 no controlador IDE virtual na máquina virtual. Esse comando especifica o parâmetro JobGroup para que ele não seja realmente executado até move-SCVirtualMachine disparar a execução de quaisquer comandos na lista de grupos de trabalho.

O último comando move a VM06 para E:\VirtualMachinePath no mesmo host. O cmdlet é executado Move-SCVirtualHardDisk como parte do $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 repetição de uma migração dinâmica do Hyper-V se a migração falhou porque o host de origem ou o host de destino já está participando de 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 esse cmdlet exclui o estado salvo associado a uma máquina virtual ou serviço.

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

-HighlyAvailable

Especifica se uma máquina virtual deve ser colocada em um host Hyper-V que faz parte de um cluster de host.

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 são executados como um conjunto pouco antes do comando final que inclui o mesmo identificador de grupo de trabalho ser executado.

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 usuário. Esse cmdlet opera em nome do usuário especificado por esse parâmetro.

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

-OnBehalfOfUserRole

Especifica uma função de usuário. Para obter uma função de usuário, use o cmdlet Get-SCUserRole . Esse cmdlet opera em nome da função de usuário especificada por esse parâmetro.

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 a ID da dica de Desempenho e Otimização de Recursos (dica PRO) que disparou essa ação. Esse parâmetro permite que você audite 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 é executado de forma assíncrona para que o controle retorne imediatamente ao shell 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 é iniciada assim que esse cmdlet a move para o host de destino.

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

-UseCluster

Indica que esse cmdlet usa a Migração de Cluster para a transferência de uma máquina virtual que está em um estado salvo para um host, mesmo que o cluster dê suporte à migração dinâmica do Hyper-V.

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

-UseDiffDiskOptimization

Indica que o cmdlet usa otimização de disco de diferenciação.

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

-UseLAN

Indica que esse cmdlet usa a transferência pela LAN mesmo se um mecanismo de transferência mais rápido estiver disponível.

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 host de máquina virtual. O VMM dá suporte a hosts Hyper-V, hosts VMware ESX e hosts Citrix XenServer.

Para obter mais informações sobre cada tipo de host, 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

Esse cmdlet retorna um objeto VirtualMachine .