Udostępnij za pośrednictwem


Move-SCVirtualMachine

Przenosi maszynę wirtualną przechowywaną w bibliotece programu VMM lub wdrożona na hoście w nowej lokalizacji na hoście.

Składnia

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

Opis

Polecenie cmdlet Move-SCVirtualMachine przenosi maszynę wirtualną przechowywaną w bibliotece programu Virtual Machine Manager (VMM) lub wdrożoną na hoście w nowej lokalizacji na hoście.

W programie System Center 2019 lub nowszym można korzystać z nowych funkcji migracji dostępnych w Windows Server 2016. Te możliwości obejmują migrację na żywo maszyn wirtualnych między dwoma autonomicznymi komputerami i migracją na żywo między komputerami autonomicznymi a węzłem klastra. Ponadto jest obsługiwanych wiele współbieżnych migracji na żywo. Aby uzyskać więcej informacji na temat migrowania maszyn wirtualnych w programie System Center, zobacz Migrowanie Virtual Machines i magazynu w programie VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) w bibliotece TechNet.

W przypadku przeniesienia maszyny wirtualnej wdrożonej na hoście z systemem Windows Server 2008 R2 do hosta z systemem Windows Server 2016 nie można przenieść maszyny wirtualnej z powrotem na hosta z systemem Windows Server 2008 R2.

Program VMM zawiera funkcje migracji magazynu, które umożliwiają przeniesienie jednego lub większej liczby wirtualnych dysków twardych uruchomionej maszyny wirtualnej do innej lokalizacji. Za pomocą bieżącego polecenia cmdlet i polecenia cmdlet Move-SCVirtualHardDisk można przenieść pliki wirtualnego dysku twardego (vhd) z systemem Windows i pliki wirtualnego dysku twardego (vmdk) opartego na oprogramowaniu VMware do lokalizacji na innym hoście. Możesz również użyć polecenia cmdlet Move-SCVirtualHardDisk , aby przenieść plik vhd lub plik vmdk z jednej lokalizacji do innej na tym samym hoście.

Aby przenieść maszynę wirtualną z hosta i zapisać ją w bibliotece, należy użyć polecenia cmdlet Save-SCVirtualMachine.

Program VMM może użyć dowolnej z następujących metod transferu wymienionych w kolejności, w której program VMM próbuje ich użyć:

  • Migracja na żywo funkcji Hyper-V. Jeśli maszyna wirtualna jest uruchomiona i jest wdrożona na hoście funkcji Hyper-V, który jest węzłem systemu Windows Server 2008 R2 lub Windows Server 2016 klastra hostów, domyślnie program VMM używa migracji na żywo funkcji Hyper-V, aby przenieść maszynę wirtualną do innego węzła w klastrze bez żadnych zakłóceń w usłudze. Przeniesienie uruchomionej maszyny wirtualnej nie powoduje odłączenia jej od sieci. Maszyna wirtualna zachowuje atrybut wysokiej dostępności. Nie trzeba określać ścieżki. Migrację na żywo wielu maszyn wirtualnych można rozpocząć w tym samym czasie.
  • Migracja klastra systemu Windows Server 2008. Program System Center nadal obsługuje migrację klastra systemu Windows 2008, która jest czasami nazywana szybką migracją. Migracja klastra przenosi uruchomioną maszynę wirtualną w węźle funkcji Hyper-V klastra hostów. Umożliwia również przenoszenie maszyny wirtualnej, która jest w stanie zatrzymanym lub zapisanym, i jest wdrażana w innym węźle w klastrze. Migracja klastra umożliwia przeniesienie maszyny wirtualnej w stanie zatrzymanym lub zapisanym, jeśli maszyna wirtualna jest wdrożona w jednym z następujących węzłów:

węzeł ----A w klastrze systemu Windows Server 2008 ----A w klastrze systemu Windows Server 2008 R2

Nie trzeba określać ścieżki. Migracja klastra systemu Windows Server 2008 umieszcza maszynę wirtualną w stanie zapisanym podczas migracji. Ta operacja powoduje tymczasową utratę usługi dla wszystkich użytkowników tej maszyny wirtualnej.

  • Migracja na żywo programu VMware. Jeśli maszyna wirtualna wdrożona na hoście VMware ESX korzysta z magazynu udostępnionego, program VMM może użyć funkcji migracji na żywo VMware, aby przenieść maszynę wirtualną na nowy host. Ta funkcja nosi nazwę VMware VMotion. Nie trzeba określać ścieżki. Bieżące polecenie cmdlet może użyć narzędzia VMware VMotion, aby przenieść maszynę wirtualną z jednego hosta ESX do innego tylko wtedy, gdy oba hosty ESX znajdują się w tym samym kontenerze centrum danych na serwerze vCenter.
  • Citrix XenServer XenMotion. Jeśli maszyna wirtualna wdrożona na hoście Citrix XenServer używa magazynu udostępnionego i jest częścią tej samej puli zasobów, program VMM może użyć funkcji migracji na żywo XenServer, aby przenieść maszynę wirtualną na inny host XenServer. Funkcja migracji na żywo nosi nazwę Citrix XenMotion.
  • Migracja sieci SAN (Fibre Channel, iSCSI lub NPIV). Jeśli maszyna wirtualna znajduje się na hoście połączonym z siecią SAN, a maszyna wirtualna znajduje się w numerze LUN sieci SAN, program VMM może przenieść tę maszynę wirtualną na inny host, jeśli ten host ma dostęp do tej samej sieci SAN. W przypadku transferu sieci SAN docelowe lun są przekierowywane z hosta źródłowego do hosta docelowego. Ta migracja nie przenosi plików. Transfer sieci SAN jest znacznie szybszy niż przenoszenie plików maszyny wirtualnej z jednego hosta do drugiego za pośrednictwem sieci lokalnej (LAN). Program VMM obsługuje migrację sieci SAN maszyn wirtualnych do i z klastra. Musisz określić ścieżkę. Program VMM może używać transferu SIECI SAN NPIV, jeśli jest dostępna karta magistrali hosta (HBA) z obsługą npIV.
  • Migracja sieci. Jeśli nie jest dostępna szybsza metoda, program VMM używa transferu sieciowego do przenoszenia plików maszyny wirtualnej z jednego hosta do drugiego za pośrednictwem sieci LAN, która łączy dwa hosty. Możesz zdecydować się na użycie tego typu transferu, nawet jeśli typ transferu SIECI SAN jest dostępny. Musisz określić ścieżkę.

Jeśli jest dostępny więcej niż jeden typ transferu, to polecenie cmdlet automatycznie używa najszybszego dostępnego typu transferu do przeniesienia maszyny wirtualnej. Jeśli metoda nie jest odpowiednia lub dostępna dla maszyny wirtualnej, którą chcesz przenieść, program VMM próbuje użyć następnej metody na liście. Jeśli chcesz wymusić użycie transferu sieciowego, określ parametr UseLAN .

Przykłady

Przykład 1. Przenoszenie maszyny wirtualnej z biblioteki do hosta

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"

Pierwsze polecenie polecenie pobiera obiekt maszyny wirtualnej o nazwie VM01, a następnie przechowuje ten obiekt w zmiennej $VM. W tym przykładzie maszyna wirtualna przechowywana w bibliotece programu VMM na serwerze biblioteki o nazwie LibServer01. W tym przykładzie przyjęto założenie, że tylko jedna maszyna wirtualna o nazwie VM01 jest obecnie przechowywana na serwerze LibServer01.

Drugie polecenie pobiera obiekt hosta o nazwie VMHost01, a następnie przechowuje ten obiekt w zmiennej $VMHost.

Ostatnie polecenie przenosi maszynę wirtualną z bieżącej lokalizacji w bibliotece do lokalizacji D:\VirtualMachinePath na hoście przechowywanym w $VMHost. Polecenie automatycznie używa najszybszego dostępnego typu transferu. Po zakończeniu polecenia zwraca informacje o przeniesionej maszynie wirtualnej.

Przykład 2. Asynchroniczne przenoszenie maszyny wirtualnej z biblioteki do hosta

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

Pierwsze dwa polecenia w tym przykładzie są identyczne z poleceniami w pierwszym przykładzie, z wyjątkiem nazwy hosta maszyny wirtualnej.

Trzecie polecenie przenosi maszynę wirtualną z bieżącej lokalizacji do ścieżki D:\VirtualMachinePath na maszynie wirtualnej VMHost02. Polecenie określa parametr RunAsynchronously , aby natychmiast zwrócić kontrolę do powłoki poleceń. Polecenie określa parametr JobVariable do śledzenia postępu zadania. Polecenie przechowuje rekord postępu zadania w zmiennej $MoveVMJob. Dla parametru JobVariable nie należy określać znaku dolara ($), aby utworzyć zmienną.

Ostatnie polecenie wyświetla zawartość $MoveVMJob, która zawiera opis zadania przenoszenia, jego stan, postęp i inne informacje.

Przykład 3: Przenoszenie maszyny wirtualnej z biblioteki do hosta przez wymuszenie transferu sieci 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

Pierwsze polecenie pobiera obiekt maszyny wirtualnej o nazwie VM03 na serwerze biblioteki LibServer01, a następnie przechowuje ten obiekt w zmiennej $VM.

Drugie polecenie pobiera obiekt hosta o nazwie VMHost03, a następnie przechowuje ten obiekt w zmiennej $VMHost.

Ostatnie polecenie przenosi maszynę wirtualną VM03 z bieżącej lokalizacji w bibliotece do D:\VirtualMachinePath na vmHost03. Polecenie określa parametr UseLAN , aby określić, że transfer używa transferu sieciowego, nawet jeśli dostępne są szybsze mechanizmy transferu.

Przykład 4: Przenoszenie maszyny wirtualnej między hostami przy użyciu narzędzia 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]"

Pierwsze polecenie pobiera obiekt maszyny wirtualnej o nazwie VM04 na hoście ESXHost01, a następnie przechowuje ten obiekt w zmiennej $VM.

Drugie polecenie pobiera obiekt hosta ESX o nazwie ESXHost02, a następnie przechowuje ten obiekt w zmiennej $VMHost.

Ostatnie polecenie używa narzędzia VMware VMotion, aby przenieść maszynę wirtualną z bieżącego hosta ESX do innego hosta ESX.

UWAGA: Polecenie cmdlet Move-SCVirtualMachine może użyć funkcji VMware VMotion, aby przenieść maszynę wirtualną z jednego hosta ESX do innego tylko wtedy, gdy oba serwery ESX znajdują się w tym samym kontenerze centrum danych na serwerze vCenter.

Przykład 5: Przenoszenie maszyny wirtualnej o wysokiej dostępności między węzłami w klastrze hostów przy użyciu migracji na żywo funkcji 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\"

Pierwsze polecenie pobiera obiekt maszyny wirtualnej o nazwie HAVM05 na maszynie wirtualnej VMHVHostNode05A, a następnie przechowuje ten obiekt w zmiennej $VM. W tym przykładzie maszyna wirtualna HAVM05 jest maszyną wirtualną o wysokiej dostępności. VMHVHostNode05A i VMHVHostNode05B to węzły w klastrze hostów funkcji Hyper-V.

Drugie polecenie pobiera obiekt hosta o nazwie VMHVHostNode05B, a następnie przechowuje ten obiekt w zmiennej $VMHost.

Ostatnie polecenie używa migracji na żywo, aby przenieść maszynę wirtualną z VMHVHostNode05A do VMHVHostNode05B.

Przykład 6: Przenoszenie uruchomionej maszyny wirtualnej na hoście funkcji Hyper-V do nowej lokalizacji na tym samym hoście

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

Pierwsze polecenie przechowuje ciąg E:\VHDs w $MoveVhdPath. Jest to ścieżka przenoszenia wirtualnego dysku twardego maszyny wirtualnej.

Drugie polecenie pobiera obiekt maszyny wirtualnej o nazwie VM06, a następnie przechowuje ten obiekt $VM zmiennej.

Trzecie polecenie pobiera obiekt hosta o nazwie VMHost06, a następnie przechowuje ten obiekt w zmiennej $VMHost. W tym przykładzie vmHost06 jest hostem funkcji Hyper-V.

Czwarte polecenie przechowuje ciąg E:\VirtualMachinePath w zmiennej $HostPath. Jest to ścieżka do przeniesienia maszyny wirtualnej VM06.

Piąte polecenie tworzy nowy ciąg identyfikatora GUID i zapisuje go w zmiennej $JobGroupID. Ten identyfikator GUID to identyfikator grupy zadań, który działa jako identyfikator grupujący kolejne polecenia zawierające ten identyfikator w jedną grupę zadań.

Szóste polecenie ustawia ścieżkę wirtualnego dysku twardego wartości przechowywanej w $MoveVhdPath i łączy wirtualny dysk twardy z magistralą 1 i numerem LUN 1 na wirtualnym kontrolerze IDE na maszynie wirtualnej. To polecenie określa parametr JobGroup , tak aby nie był uruchamiany do momentu wyzwolenia polecenia Move-SCVirtualMachine uruchomienia dowolnych poleceń na liście grup zadań.

Ostatnie polecenie przenosi maszynę wirtualną VM06 do folderu E:\VirtualMachinePath na tym samym hoście. Polecenie cmdlet jest uruchamiane Move-SCVirtualHardDisk w ramach $JobGroupID. Polecenie przenosi wirtualny dysk twardy maszyny wirtualnej do dysków E:\VHD.

Parametry

-BlockLiveMigrationIfHostBusy

Wskazuje, że polecenie cmdlet blokuje ponowienie próby migracji na żywo funkcji Hyper-V, jeśli migracja nie powiodła się, ponieważ host źródłowy lub host docelowy już uczestniczy w innej migracji na żywo.

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

-DiscardSavedState

Wskazuje, że to polecenie cmdlet usuwa zapisany stan skojarzony z maszyną wirtualną lub usługą.

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

-HighlyAvailable

Określa, czy należy umieścić maszynę wirtualną na hoście funkcji Hyper-V, który jest częścią klastra hostów.

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

-JobGroup

Określa identyfikator serii poleceń uruchamianych jako zestaw tuż przed ostatnim poleceniem zawierającym ten sam identyfikator grupy zadań.

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

-JobVariable

Określa nazwę zmiennej postępu zadania.

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

-OnBehalfOfUser

Określa nazwę użytkownika. To polecenie cmdlet działa w imieniu użytkownika określonego przez ten parametr.

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

-OnBehalfOfUserRole

Określa rolę użytkownika. Aby uzyskać rolę użytkownika, użyj polecenia cmdlet Get-SCUserRole . To polecenie cmdlet działa w imieniu roli użytkownika, którą określa ten parametr.

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

-Path

Określa ścieżkę przeniesionej maszyny wirtualnej.

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

-PROTipID

Określa identyfikator porady wydajności i optymalizacji zasobów (porada PRO), która wyzwoliła tę akcję. Ten parametr umożliwia inspekcję porad PRO.

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

-ReplicationGroup

Określa grupę replikacji.

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

-RunAsynchronously

Wskazuje, że zadanie jest uruchamiane asynchronicznie, aby kontrolka natychmiast wracała do powłoki poleceń.

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

-StartVMOnTarget

Określa, że maszyna wirtualna jest uruchamiana zaraz po tym, jak to polecenie cmdlet przenosi go na hosta docelowego.

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

-UseCluster

Wskazuje, że to polecenie cmdlet używa migracji klastra do transferu maszyny wirtualnej, która jest w stanie zapisanym na hoście, nawet jeśli klaster obsługuje migrację na żywo funkcji Hyper-V.

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

-UseDiffDiskOptimization

Wskazuje, że polecenie cmdlet używa optymalizacji dysku różnicowego.

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

-UseLAN

Wskazuje, że to polecenie cmdlet używa transferu przez sieć LAN, nawet jeśli dostępny jest szybszy mechanizm transferu.

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

-VM

Określa obiekt maszyny wirtualnej.

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

-VMHost

Określa obiekt hosta maszyny wirtualnej. Program VMM obsługuje hosty funkcji Hyper-V, hosty VMware ESX i hosty Citrix XenServer.

Aby uzyskać więcej informacji na temat każdego typu hosta, zobacz polecenie cmdlet Add-SCVMHost .

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

Dane wyjściowe

VirtualMachine

To polecenie cmdlet zwraca obiekt VirtualMachine .