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 możesz skorzystać z nowych funkcji migracji uwzględnionych 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 i węzłem klastra. Ponadto obsługiwane są wiele współbieżnych migracji na żywo. Aby uzyskać więcej informacji na temat migrowania maszyn wirtualnych w programie System Center 2019, 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 na hoście z systemem Windows Server 2016 nie można przenieść maszyny wirtualnej z powrotem do hosta z systemem Windows Server 2008 R2.
Program VMM obejmuje funkcje migracji magazynu, które umożliwiają przenoszenie co najmniej jednego wirtualnego dysku twardego uruchomionej maszyny wirtualnej do innej lokalizacji. Możesz użyć bieżącego polecenia cmdlet i polecenia cmdlet Move-SCVirtualHardDisk , aby przenieść pliki wirtualnego dysku twardego opartego na systemie Windows (vhd) i pliki wirtualnego dysku twardego opartego na oprogramowaniu VMware (vmdk) 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żywać 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 wdrażana 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 przenosi 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. Możesz rozpocząć migrację na żywo wielu maszyn wirtualnych jednocześnie.
- 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 zostanie 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ą do nowego hosta. Ta funkcja jest nazywana VMware VMotion. Nie trzeba określać ścieżki. Bieżące polecenie cmdlet może użyć programu 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 Server.
- Citrix XenServer XenMotion. Jeśli maszyna wirtualna wdrożona na hoście Citrix XenServer korzysta z 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ą do innego hosta 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ą do innego hosta, jeśli ten host ma dostęp do tej samej sieci SAN. W transferze 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 maszyn wirtualnych 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 dostępna jest karta magistrali hosta (HBA) z obsługą serwera NPIV.
- Migracja sieci. Jeśli nie jest dostępna żadna 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, aby przenieść maszynę wirtualną. 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 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. Przenoszenie maszyny wirtualnej z biblioteki do hosta asynchronicznie
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 folderu D:\VirtualMachinePath na maszynie wirtualnejHost02. 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 maszynie WIRTUALNEJHost03. 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 programu 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 programu 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 Server.
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 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 przechowuje go w zmiennej $JobGroupID. Ten identyfikator GUID to identyfikator grupy zadań, który działa jako identyfikator, który grupuje kolejne polecenia, które zawierają ten identyfikator w jednej grupie 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 , aby nie był uruchamiany do momentu wyzwolenia polecenia Move-SCVirtualMachine uruchomienia wszystkich poleceń na liście grup zadań.
Ostatnie polecenie przenosi maszynę wirtualną VM06 do folderu E:\VirtualMachinePath na tym samym hoście. Polecenie cmdlet uruchamia 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 .
Linki powiązane
- Add-SCVMHost
- Get-SCUserRole
- Get-SCVirtualMachine
- Get-SCVMHost
- Move-SCVirtualHardDisk
- New-SCVirtualMachine
- Read-SCVirtualMachine
- Register-SCVirtualMachine
- Repair-SCVirtualMachine
- Reset-SCVirtualMachine
- Resume-SCVirtualMachine
- Save-SCVirtualMachine
- Set-SCVirtualMachine
- Start-SCVirtualMachine
- Suspend-SCVirtualMachine
- Stop-SCVirtualMachine