Поделиться через


Move-SCVirtualMachine

Перемещает виртуальную машину, хранящуюся в библиотеке VMM или развернутую на узле, в новое расположение на узле.

Синтаксис

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

Описание

Командлет Move-SCVirtualMachine перемещает виртуальную машину, хранящуюся в библиотеке Virtual Machine Manager (VMM) или развернутую на узле, в новое расположение на узле.

В System Center 2019 вы можете воспользоваться новыми возможностями миграции, включенными в Windows Server 2016. Эти возможности включают динамическую миграцию виртуальных машин между двумя автономными компьютерами и динамической миграцией между автономными компьютерами и узлом кластера. Кроме того, поддерживаются несколько параллельных динамических миграций. Дополнительные сведения о переносе виртуальных машин в System Center 2019 см. в статье "Миграция Виртуальные машины и хранилище в VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) в библиотеке TechNet.

При перемещении виртуальной машины, развернутой на узле под управлением Windows Server 2008 R2, на узел под управлением Windows Server 2016 невозможно переместить виртуальную машину обратно на узел под управлением Windows Server 2008 R2.

VMM включает функции миграции хранилища, позволяющие переместить один или несколько виртуальных жестких дисков работающей виртуальной машины в другое расположение. Текущий командлет и командлет Move-SCVirtualHardDisk можно использовать для перемещения файлов виртуального жесткого диска (VHD) на основе Windows и файлов виртуального жесткого диска (VMDK) на основе VMware в расположение на другом узле. Вы также можете использовать командлет Move-SCVirtualHardDisk для перемещения VHD-файла или VMDK-файла из одного расположения в другое на том же узле.

Чтобы переместить виртуальную машину из узла и сохранить ее в библиотеке, необходимо использовать командлет Save-SCVirtualMachine.

VMM может использовать любой из следующих методов передачи, указанных в том порядке, в котором VMM пытается использовать их:

  • Динамическая миграция Hyper-V. Если виртуальная машина запущена и развернута на узле Hyper-V, который является узлом кластера узлов Windows Server 2008 R2 или Windows Server 2016, по умолчанию VMM использует динамическую миграцию Hyper-V для перемещения виртуальной машины на другой узел в кластере без прерывания работы службы. Перемещение работающей виртуальной машины не отключает ее от сети. Виртуальная машина сохраняет свой атрибут высокой доступности. Не нужно указывать путь. Вы можете запустить динамическую миграцию нескольких виртуальных машин одновременно.
  • Миграция кластера Windows Server 2008. System Center продолжает поддерживать миграцию кластера Windows 2008, которая иногда называется быстрой миграцией. Миграция кластера перемещает запущенную виртуальную машину на узле Hyper-V кластера узлов. Она также позволяет перемещать виртуальную машину, которая находится в остановленном или сохраненном состоянии, и развертывается на другом узле в кластере. Миграцию кластера можно использовать для перемещения виртуальной машины в остановленном или сохраненном состоянии, если виртуальная машина развернута на любом из следующих узлов:

узел ----A в кластере Windows Server 2008 ----A в кластере Windows Server 2008 R2

Не нужно указывать путь. Миграция кластера Windows Server 2008 помещает виртуальную машину в сохраненное состояние во время миграции. Эта операция приводит к временной потере службы для всех пользователей этой виртуальной машины.

  • Динамическая миграция VMware. Если виртуальная машина, развернутая на узле VMware ESX, использует общее хранилище, VMM может использовать функцию динамической миграции VMware для перемещения виртуальной машины на новый узел. Эта функция называется VMware VMotion. Не нужно указывать путь. Текущий командлет может использовать VMware VMotion для перемещения виртуальной машины из одного узла ESX в другой, только если оба узла ESX находятся в одном контейнере центра обработки данных на сервере vCenter Server.
  • Citrix XenServer XenMotion. Если виртуальная машина, развернутая на узле Citrix XenServer, использует общее хранилище и является частью одного пула ресурсов, VMM может использовать функцию динамической миграции XenServer для перемещения виртуальной машины на другой узел XenServer. Функция динамической миграции называется Citrix XenMotion.
  • Миграция SAN (Fibre Channel, iSCSI или NPIV). Если виртуальная машина находится на узле, подключенном к сети SAN, а виртуальная машина находится в LUN SAN, VMM может переместить виртуальную машину на другой узел, если этот узел имеет доступ к той же сети SAN. При передаче SAN целевые LUN перенаправляются с исходного узла на целевой узел. Эта миграция не перемещает файлы. Передача san выполняется гораздо быстрее, чем перемещение файлов виртуальных машин с одного узла на другой по локальной сети (LAN). VMM поддерживает миграцию виртуальных машин san в кластер и из него. Необходимо указать путь. VMM может использовать передачу SAN NPIV, если доступен адаптер шины узла (HBA) с поддержкой NPIV.
  • Миграция сети. Если более быстрый метод недоступен, VMM использует сетевую передачу для перемещения файлов виртуальных машин с одного узла на другой по локальной сети, которая подключает два узла. Этот тип передачи можно использовать, даже если доступен тип передачи SAN. Необходимо указать путь.

Если доступно несколько типов передачи, этот командлет автоматически использует самый быстрый доступный тип передачи для перемещения виртуальной машины. Если метод не подходит или доступен для виртуальной машины, которую требуется переместить, 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. В этом примере виртуальная машина, хранящуюся в библиотеке VMM на сервере библиотеки с именем LibServer01. В этом примере предполагается, что в настоящее время в LibServer01 хранится только одна виртуальная машина с именем VM01.

Вторая команда получает объект узла с именем VMHost01, а затем сохраняет этот объект в переменной $VMHost.

Последняя команда перемещает виртуальную машину из текущего расположения в библиотеке в расположение D:\VirtualMachinePath на узле, хранящемся в $VMHost. Команда автоматически использует самый быстрый доступный тип передачи. Когда команда завершится, она возвращает сведения о перемещенной виртуальной машине.

Пример 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

Первые две команды в этом примере идентичны командам в первом примере, за исключением имени узла виртуальной машины.

Третья команда перемещает виртуальную машину из текущего расположения в D:\VirtualMachinePath на VMHost02. Команда указывает параметр RunAsynchronously , чтобы немедленно вернуть управление в командную оболочку. Команда указывает параметр JobVariable для отслеживания хода выполнения задания. Команда сохраняет запись хода выполнения задания в переменной $MoveVMJob. Для параметра JobVariable не указывайте знак доллара ($), чтобы создать переменную.

Последняя команда отображает содержимое $MoveVMJob, включающее описание задания перемещения, его состояние, ход выполнения и другие сведения.

Пример 3. Перемещение виртуальной машины из библиотеки на узел путем принудительной передачи локальной сети

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

Первая команда получает объект виртуальной машины с именем VM03 на сервере библиотеки LibServer01, а затем сохраняет этот объект в переменной $VM.

Вторая команда получает объект узла с именем VMHost03, а затем сохраняет этот объект в переменной $VMHost.

Последняя команда перемещает виртуальную машину VM03 из текущего расположения библиотеки в D:\VirtualMachinePath на VMHost03. Команда задает параметр 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]"

Первая команда получает объект виртуальной машины с именем VM04 в ESXHost01, а затем сохраняет этот объект в переменной $VM.

Вторая команда получает объект узла ESX с именем ESXHost02, а затем сохраняет этот объект в переменной $VMHost.

Последняя команда использует VMware VMotion для перемещения виртуальной машины с текущего узла ESX на другой узел ESX.

ПРИМЕЧАНИЕ. Командлет Move-SCVirtualMachine может использовать функцию VMware VMotion для перемещения виртуальной машины с одного узла ESX на другой, только если оба сервера ESX находятся в одном контейнере центра обработки данных на сервере vCenter Server.

Пример 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\"

Первая команда получает объект виртуальной машины с именем HAVM05 на VMHVHostNode05A, а затем сохраняет этот объект в переменной $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 — это идентификатор группы заданий, который работает в качестве идентификатора, который группирует последующие команды, включающие этот идентификатор в одну группу заданий.

Шестая команда задает путь к виртуальному жесткому диску значения, хранящегося в $MoveVhdPath, и подключает виртуальный жесткий диск к шине 1 и LUN 1 на виртуальном контроллере интегрированной среды разработки на виртуальной машине. Эта команда указывает параметр JobGroup , чтобы он фактически не выполнялся, пока Move-SCVirtualMachine не активирует выполнение любых команд в списке групп заданий.

Последняя команда перемещает VM06 в E:\VirtualMachinePath на том же узле. Командлет выполняется Move-SCVirtualHardDisk в рамках $JobGroupID. Команда перемещает виртуальный жесткий диск виртуальной машины в E:\VHDs.

Параметры

-BlockLiveMigrationIfHostBusy

Указывает, что командлет блокирует повторную динамическую миграцию Hyper-V, если миграция завершилась сбоем, так как исходный узел или конечный узел уже участвует в другой динамической миграции.

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

-DiscardSavedState

Указывает, что этот командлет удаляет сохраненное состояние, связанное с виртуальной машиной или службой.

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

Указывает имя пользователя. Этот командлет работает от имени пользователя, указанного этим параметром.

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

-OnBehalfOfUserRole

Указывает роль пользователя. Чтобы получить роль пользователя, используйте командлет Get-SCUserRole . Этот командлет работает от имени роли пользователя, указанной этим параметром.

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), активировав это действие. Этот параметр позволяет проводить аудит советов 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

Указывает, что виртуальная машина запускается, как только этот командлет перемещает ее на целевой узел.

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

-UseCluster

Указывает, что этот командлет использует миграцию кластера для передачи виртуальной машины, которая находится в сохраненном состоянии на узел, даже если кластер поддерживает динамическую миграцию Hyper-V.

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

-UseDiffDiskOptimization

Указывает, что командлет использует оптимизацию разностного диска.

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

-UseLAN

Указывает, что этот командлет использует передачу по локальной сети, даже если доступен более быстрый механизм передачи.

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 .

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

Выходные данные

VirtualMachine

Этот командлет возвращает объект VirtualMachine .