Разное

Клонирование виртуальной машины hyper v – Hyper-V: Клонируем виртуальную машину

11.10.2020

Содержание

Hyper-V: Клонируем виртуальную машину

Windows Server 2008 Hyper-V не имеет опции для создания клона существующей виртуальной машины. Однако, это не ознаечает что это невозможно или что это сложно сделать. В действительности такая возможность есть и она довольно проста в применении.

Существуют два способа клонировать виртуальную машину в Hyper-V.



1. Использовать функцию эскпорта/импорта виртуальных машин
2. Скопировать виртуальный жесткий диск и создать новую виртуальную машину с этим диском.

1. Используем функцию эспорта/импорта в Hyper-V

Данный способ наиболее простой и доступный путь клонировать виртуальную машину.

Экспорт виртуальной машины

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

экспорт виртуальной машины

Во время экпорта вы можете выбрать что экспортировать: целиком виртуальную машину или только конфигурацию виртуальной машины.

опции экспорта виртуальной машины

Импорт виртуальной машины

Для импорта виртуальной машины нажмите “Import Virtual Machine” из меню Action . Укажите директорию с экспортированной виртуальной машиной и нажмите Import.

импорт виртуальной машины

опции импорта виртуальной машины

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

После того как виртуальная машина импортирована, вы можете изменить её настройки, к примеру IP адрес, имя хоста и т.д.

2. Копируем VHD и создаем новую виртуальную машину

Просто скопируйте VHD файл оригинальной виртуальной машины и потом создайте новую виртуальную машину, но в качестве жесткого диска укажите скопированный файл. В меню, когды вы дойдете до окна “Connect Virtual Hard Disk” , выберите опцию “Use an existing virtual Hard Disk” и укажите его местоположение.

Постовой

Китайское — не всегда значит плохое. Здесь продаются китайские фронтальные погрузчики по ценам завода-производителя.

Нужен забор для дачи, коттеджа, дома? Обращайтесь в «Профзабор» — изготовление заборов на заказ из любых материалов.

Еще записи по теме

guruadmin.ru

Клонирование виртуальной машины Hyper-V | Настройка серверов windows и linux

Клонирование виртуальной машины Hyper-V

Клонирование виртуальной машины Hyper-V

Добрый день уважаемые читатели и гости блога, не так давно я вам рассказывал про экспорт и импорт виртуальной машины Hyper-V, все это здорово, но подразумевает, что вы выключите вашу виртуалку, а что делать в ситуациях, когда она должно работать, а иметь ее копию вам нужно, данная задача решается двумя путями, первый это сделать резервную копию с помощью Veeam Backup Replication либо же произвести клонирование виртуальной машины Hyper-V с помощью System Center 2012 R2 Virtual Machine Manager, чем мы и займемся.

Поэтапное клонирование виртуальных машин Hyper-V

Как и в случае с гипервизором VMware у Microsoft, для выполнения процедуры по клонированию виртуальных машин существует отдельный программный продукт по централизованному управлению инфраструктурой, под названием «System Center 2012 R2 Virtual Machine Manager». В нем есть необходимый нам функционал.

  • Переходим в оснастку VMM, выбираем необходимую виртуальную машину. В верхнем левом углу, нажимаем кнопку «Создать» и выбираем «Клонировать»

  • Задаем новое имя для виртуалки, при желании вы можете указать к ней описание.

  • Переходим к настройке оборудования. Так как у нас виртуальная машина находится в рабочем состоянии, то поменять текущие параметры оперативной памяти или процессора у вас не получится в рамках профиля по умолчанию, нажимаем далее.

  • Если вы получаете ошибку «Указанное значение минимального объема памяти больше, чем указанное значение памяти, выделяемое при запуске. Убедитесь, что значение минимального объема памяти меньше значения памяти выделенное при запуске, или не используйте функцию динамического выделения памяти. ИД:23248». Вот поэтому я и не люблю в своей практике динамические ресурсы, виртуалку выключить нельзя, поэтому придется создавать новый профиль оборудования.

  • Идем на вкладку библиотека > создать новый профиль оборудования

  • Задаем профилю оборудование имя и описание, а так же во вкладке «Профиль оборудования» все необходимые ресурса оперативной памяти и процессора.

  • Теперь при попытке клонировать виртуальную машину Hyper-V укажите новый профиль оборудования.

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

  • Указываем на какой хост Hyper-V вы хотите поместить клон, System Center 2012 R2 Virtual Machine Manager вам подскажет в виде звездочек, куда лучше выполнить данную процедуру.

  • Далее вам необходимо задать расположение папки, в которой будут находится все файлы клона.

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

  • На данном этапе вы можете задать, что будет делаться с виртуалкой во время клонирования.
  1. Выберите действие, которое будет автоматически выполнятся при запуске сервера виртуализации > Не включать виртуалку, чтобы не было конфликтов
  2. Действие, выполняемое при остановке сервера > Сохранить состояние
  3. Операционная система > выбираете вашу

  • Все создаем задание, обратите внимание, что в правом углу есть кнопка «Просмотр сценария», она показывает все те же действия, но в powershell, готовый скрипт

  • Все у вас появится дополнительное окно с ходом клонирования. По времени все зависит от объема виртуальных жестких дисков. Набираемся немного терпения и ждем, если у вас остались вопросы на тему, как производится клонирование виртуальной машины Hyper-V, то жду их в комментариях.

 

Иван Семин

pyatilistnik.org

Копирование виртуальных машин Hyper-V | Заметки об ИТ

В процессе развертывания тестового стенда возникла потребность клонирования виртуальных машин. У меня есть одна виртуальная машина с предустановленной на ней Windows Server 2012 R2. Задача заключается в том, чтобы скопировать виртуальную машину. При этом, соответвтенно, в новой копии должен быть свой уникальный UID и MAC адрес для сетевой карты. Клонирование виртуальных машин в Hyper-V происходит через процедуру экспорта-импорта. Данная задача может быть выполнена как через GUI оснастки «Hyper-V manager» так и с помощью командлетов PowerShell.

Клонирование виртуальных машин Hyper-V из оснастки «Hyper-V Manager»

Выбрав виртуальную машину, которая будет клонирована, жмем правой кнопкой мыши и в открывшемся диалоговом окне выбираем «Export». Аналогичное действие можно произвести и из панели действий, в случае если она включена.

Далее будет предложено выбрать каталог в который будет осуществлять экспортирование. И, собственно, это все действия, которые потребуется предпринять ля экспорта виртуальной машины. Состояние процесса экспорта будет отражено в графе «Status» выбранной виртуальной машины.

По факту, при экспорте копируется .vhdx файл виртуального жесткого диска и .xml файл конфигурации виртуальной машины, в который вносятся некоторые изменения.

Второй этап, как логично предположить — это импорт. Данный процесс чуть более богат параметрами и даже имеется мастер импорта. Запуск процедуры импорта возможен из меню «Action» — «Import virtual Machine» или же аналогичной командой из панели «Actions».

В открывшемся мастере «Import virtual machine» сперва необходимо выбрать каталог из которого будет осуществлен импорт а затем виртуальную машину, которую будем импортировать. Самое основное, что нас интересует в данном мастере — это выбор опций импорта, представленный на третьем шаге.

Здесь доступны три опции:

  • Register the virtual machine in-place (use the existing unique ID).
  • Restore the virtual machine (use the existing unique ID)
  • Copy the virtual machine (create a new unique ID)

Так как виртуальная машина будет скопирована на тот же хост Hyper-V, а на одном хосте может быть только одна машина с уникальным ID, то подходит только третья опция «Copy the virtual machine (create a new unique ID). Первые же две опции могут быть использованы, например, для копирования виртуальной машины на другой хост Hyper-V.

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

После окончания процесса импорта мы получаем новую виртуальную машину с тем же именем, но новым идентификатором. Казалось бы все хорошо, но есть ряд нюансов. Во первых, имя виртуального сервера и его IP адрес будут такими же как и у сервера, который мы клонировали. Во-вторых, имя виртуальной машины и имя виртуального жесткого диска будут дублированы, хотя это и не критично (ведь ID разные), но наличие большого числа виртуальных машин с одним именем вызывает когнитивный диссонанс. В-третьих, если в настройках виртуальной машины было указано статическое назначение MAC адреса, то мы получим еще и дублирование MAС. Все эти нюансы стоит учесть при клонировании виртуальных машин в производственной среде. Исправить все эти недоработки лучше через PowerShell, об этом ниже.

Клонирование виртуальных машин Hyper-V с использованием PowerShell

1. Экспорт виртуальной машины.

Export-VM -Name SYD-DC -Path ‘D:\VMM\Export’

2. Импорт виртуальной машины.

Import-VM -Path ‘D:\VMM\Export\SYD-DC\Virtual Machines\4E9FC690-E871-47A1-A783-786A0B604CB4.XML’ -VhdDestinationPath ‘D:\VMM\VHD\SRV2′ -Copy -GenerateNewId

3. Переименовываем виртуальную машину.

Для начала узнаем ID клонированной машины.

get-vm | select VMNAME,VMId

Нас интересуют две машины с одинаковым именем, но разными ID. Переименовывать будем машину ID которой отличается от ID импортируемой на шаге 2 машины. Следующий набор команд выполнит переименование. 5F3E5C8D-1280-43ED-8F1E-7274AB3B9643 — это полученный при выполнении предыдущей команды идентификатор.

get-vm | Where-Object {$_.VMId -eq «5F3E5C8D-1280-43ED-8F1E-7274AB3B9643»} | Rename-VM -NewName SRV2

4. Переименовываем виртуальный жесткий диск.

Get-VHD -VMId 5f3e5c8d-1280-43ed-8f1e-7274ab3b9643 | Select Path | Rename-Item -NewName SRV2.vhdx

Remove-VMHardDiskDrive -VMName SRV2 -ControllerType SCSI -ControllerLocation 0 -ControllerNumber 0

Add-VMHardDiskDrive -VMName SRV2 -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path «D:\VMM\VHD\SRV2\SRV2.vhdx»

5. Изменяем MAC адрес для виртуального адаптера виртуальной машины. Здесь может быть два варианта. Первый, это выставить динамическое получение MAC адреса. И, соответственно, второй — это указать MAC в ручную.

Set-VMNetworkAdapter -VMName SRV2 -DynamicMacAddress

Set-VMNetworkAdapter -VMName SRV2 -StaticMacAddress ’00-15-5D-80-55-01’

Start-VM -Name SRV2

6. Меняем IP адрес и имя виртуального сервера. К сожалению, у меня не получилось реализовать данные задачи без запуска виртуальной машины. Следующие команды необходимо выполнить непосредственно в консоли powershell виртуального сервера.

Rename-Computer SRV2

Remove-NetIPAddress -InterfaceAlias «Ethernet» -AddressFamily IPV4

New-NetIPAddress -IPAddress 192.168.0.20 -InterfaceAlias «Ethernet» -AddressFamily IPv4 -PrefixLength 24

Restart-Computer

Понравилось это:

Нравится Загрузка…

itevernote.wordpress.com

Импорт и экспорт в Hyperv или перенос виртуальных машин

Импорт и экспорт в Hyper V это возможность копирование и переноса виртуальных машин. Эта возможность используется в тестовой среде, когда у нас есть образ или шаблон машины и для переноса с одного сервера на другой. Я так же слышал, что кто-то использует эту возможность как резервное копирование. Мы рассмотрим на примерах с GUI и в Powershell.

Если вы хотите создать шаблон виртуальной машины, то перед экспортом нужно сделать sysprep. Что бы просто перенести виртуальную машину Hyper V этого делать не надо.

Sysprep — это утилита сброса уникальных идентификаторов. Когда в одной сети находятся машины с одинаковыми идентификаторами могут быть ошибки и конфликты. После сброса идентификаторов нужно будет заново устанавливать те данные, которые требуются при первой установке Windows. Я бы крайне рекомендовал делать эту операцию во избежание проблем. Вы можете запустить эту команду из CMD:


%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe

Либо запустить файл sysprep.exe в этой папке:


C:\Windows\System32\Sysprep

И подтвердить действия с этими настройками:

экспорт hyper v

После окончания работы утилиты компьютер выключится и его нельзя будет включать. Если вы его включите, то идентификаторы сгенерируются и операцию нужно будет проделывать заново.

 

Экспорт Hyper V

Теперь выполним экспорт виртуальной машины Hyper V, в этот момент ВМ может быть включена. Нажмите на нее правой кнопкой и найдите кнопку экспорта:

экспорт hyper v

Выберете путь, куда хотите экспортировать ВМ и нажмите кнопку подтверждения. ВМ будет экспортирована со всеми настройками и виртуальным диском:

копирование hyper v

После этого мы выполнили в Hyper V копирование виртуальной машины.

 

Импорт Hyper V

Что бы выполнить в Hyper V импорт виртуальной машины нажмите следующую кнопку:

импорт hyper v

После стартового окна нам нужно будет выбрать папку, куда мы экспортировали ВМ:

копирование hyper v

Проверяем, что имя ВМ совпадает с той, которую мы хотим импортировать:

перенос hyper v

На следующем окне у нас появляется три возможных пункта клонирования виртуальной машины Hyper V. Так как ВМ тоже имеет уникальные идентификаторы этот пункт очень важен: 

  • Регистрировать виртуальную машину по мету (Register the virtual machine in-place) — если файлы ВМ уже находятся там, где они должны и вы не планируете переносить их в новое место. Это может быть ВМ с подключенной флешки или iSCSI диска. В этом случае уникальный идентификатор не генерируется.
  • Восстановить виртуальную машину (Restore the virtual machine) — в отличие от предыдущего пункта все файлы переносятся в новое место, которые вы укажете в следующем окне. Уникальный идентификатор так же остается прежним.
  • Копировать виртуальную машину (Copy the virtual machine) — копирует ВМ с новым сгенерированным идентификатором. В следующем окне нужно будет указать куда копировать эти файлы. Этот случай используется когда мы используем шаблон ВМ.

Если в этот момент уже работает ВМ с этим идентификатором, то мы получим ошибку:

The operation failed because a virtual machine with the same identifier already exists. Select a new identifier and try the operation again.

Ошибка загрузки конфигурации виртуальной машины hyper v

Я выполню копирование машины, но остальные варианты аналогичны:

hyper v перенос виртуальной машины

В случае с копированием мы можем выбрать новое расположение файлов чекпоинтов, конфигураций и кэша либо использовать установленное по умолчанию:

hyper v импорт виртуальной машины

В этом окне выбирается расположение диска:

hyper v копирование виртуальной машины

В этой ВМ адаптер подключен к другому коммутатору и его не существует на этом хосте гипервизора. Проверка коммутаторов идет по именам и если раньше коммутатор, на этом же хосте, назывался ‘Ext 1’, а затем был удален или переименован на ‘Ext 01’ вы тоже получите ошибку. Можно выбрать новый коммутатор или пропустить этот шаг:

hyper v скопировать машину

На последнем шаге мы проверяем введенные данные и нажимаем кнопку подтверждения:

скопировать виртуальную машину hyper v

После этого ВМ импортируется и вам может понадобится подключиться к коммутатору и переименовать ее.

В обоих случаях вам нужно зайти в настройки ВМ:

Настройки виртуальной машины Hyper V

Для переименовывания машины нужно зайти на вкладку «Имя»:

Переименование виртуальной машины Hyper V

Если сетевых адаптеров у ВМ нет, то нужно зайти во вкладку добавления устройств и добавить сетевой адаптер:

Добавить сетевой адаптер Hyper V

А затем подключить к коммутатору:

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

 

Экспорт и импорт виртуальной машины Hyper V в Powershell

Все команды имеют ключ ComputerName, а значит перенос виртуальной машины Hyper V может делаться на удаленном компьютере.

Получим список ВМ Hyper V, что бы узнать какую машину экспортировать:


Get-VM

Что бы через консоль Powershell в Hyper V скопировать виртуальную машину, в базовом варианте, нужно сделать следующее:


Export-VM -Name 'CentOS' -Path 'C:\VMimported\'

Где:

  • Name — имя ВМ, которую экспортируем
  • Path — путь, где будет лежать копия виртуальной машины Hyper V

Так как мы можем выполнить клонирование и включенной машины, то у нас есть несколько способов манипулировании с памятью. Для этого есть ключ CaptuteLiveState, которого нет в версии Windows Server 2012 r2 и ниже, со значениями:

  • CaptureSavedState — включает оперативную память
  • CaptureDataConsistentState — используется Production checkpoint
  • CaptureCrashConsistentState — память не сохраняется

По умолчанию используется CaptureSavedState.


Export-VM -Name 'CentOS' -Path 'C:\VMimported\' -CaptureLiveState CaptureCrashConsistentState

Export VM powershell Hyper V

Для импорта есть три варианта сохранения идентификаторов, которые описывались выше.

Если вы решили импортировать ВМ, которая уже находиться в нужной папке и с сохранением идентификаторов сделайте так:


Import-VM -Path "C:\wii\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx"

VMCX — это файл, который лежит в папке «Virtual Machines» экспортированной ВМ. Если виртуальная машина с этим идентификатором уже есть в Hyper V вы получите ошибку:

Import-VM : Failed to create virtual machine. The operation failed because a virtual machine with the same identifier already exists. Select a new identifier and try the operation again.

Для импорта ВМ, с сохранением идентификаторов, но в новое место на диске выполните:


Import-VM -Path 'C:\VMimported\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx' -VhdDestinationPath 'C:\NewPath\' -VirtualMachinePath 'C:\NewPath\' -Copy

Где:

  • VhdDestinationPath — куда будет скопирован виртуальный диск Hyper V
  • VirtualMachinePath — куда будут скопированы файлы конфигурации виртуально машины
  • Copy — указывает, что это операция копирования

Дополнительные ключи:

  • SnapshotFilePath — куда будут скопированы чекпоинты
  • SmartPagingFilePath — куда будет скопирован файл подкачки

Можно не указывать каждый тип файлов, а просто указать файл конфигурации в Path и действие Copy — тогда ВМ будет скопирована в местоположение указанное в настройках Hyper V.

В случае копирования VM с генерированием нового идентификатора можно сделать так:


Import-VM -Path "C:\wii\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx" -Copy -GenerateNewId

В этом случае все файлы будут перемещены в папку, которая была указана в настройках Hyper V. Операция клонирования выполнена.

Теги: #powershell

fixmypc.ru

автоматизированное развёртывание виртуальных машин Windows на Hyper-V при помощи Vagrant (часть 2) / Habr

В предыдыщей части мы рассмотрели, для чего нужна автоматизация разворачивания ВМ Windows и как подготовить хостовую систему. Сегодня я хотел бы заострить внимание на технической реализации самой массивной части процесса, а именно — подготовке базового бокса для Vagrant.После того, как установлен весь необходимый софт, пришло самое время подготовить образцовый бокс — шаблон, из которого будут разворачиваться машины.Бокс представляет из себя обычный tar-архив, содержащий в себе файл диска VHD и метаданные: настройки виртуалки и служебную информацию. Таким образом, необходимо начать подготовку образа с создания у себя новой ВМ, обновления её, настройки и сжатия с целью экономии места и ускорения деплоя. Я не буду подробно останавливаться на том, как создать новую виртуальную машину в Hyper-V Manager, как ставить систему и накатывать обновления. Заострю лишь внимание на нюансах:
  • Создавайте машину первого поколения (Gen1). Связано это с тем, что актуальная версия Vagrant (1.7.2) некорректно устанавливает параметры жёсткого диска (у Gen2 нет опции “IDE”, она заменена на “VHD”), поэтому я советую пока не связываться с Gen2. Впрочем, если очень нужно — можно поправить файл plugins/providers/hyperv/scripts/import_vm.ps1.
  • Используйте только один файл жёсткого диска, иначе бокс не сможет подняться (об этом см. ниже).
  • Не устанавливайте лишнее ПО (включая компоненты Windows) в бокс. Это утяжеляет его и увеличивает шанс, что через некоторое время там будет устаревшая версия. Правильнее это делать позже, в стадии провижионинга.
  • Для корректной работы Boxstarter необходимо отключить ограничения Powershell:
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  • По умолчанию Vagrant обращается к машине через SSH (что требовало установки последнего на машину), однако в последних версиях он научился работать по родному для Windows протоколу WinRM. Всё, что нужно — настроить WinRM:
    winrm set winrm/config/client/auth ‘@{Basic=«true»}’
    winrm set winrm/config/service/auth ‘@{Basic=«true»}’
    winrm set winrm/config/service ‘@{AllowUnencrypted=«true»}
  • Я обычно отключаю (ставлю ручной режим запуска) ненужных служб (Print Spooler тот же), а также убираю индексацию диска и автоматическое еженедельное дефрагментирование: у нас оптимизация Storage Tier проводится самим гипервизором.
После установки всех обновлений Windows обычно “распухает” до 12-15 гигабайт, что явно многовато для быстрого клонирования. Связано это с тем, что система кеширует установщики пакетов и дистрибутивы некоторых своих компонентов. Всё это, к счастью, легко вычищается. Итак, как же уменьшить объём, занимаемый VHD файлом?
  • Уменьшить размер файла подкачки, сделать этот размер фиксированным;
  • Очистить все логи:
    wevtutil el | Foreach-Object {wevtutil cl «$_»}
  • Удалить ненужные компоненты Windows Update:
    Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
    Dism.exe /online /Cleanup-Image /SPSuperseded
  • Удалить установщики компонент Windows. Запустив команду Get-WindowsFeature можно увидеть, что часть компонентов имеют Install State = Available. Обычно это значит, что эти компоненты можно установить, причём для этого достаточно кеша, который хранится прямо на локальном диске. Поэтому имеет смысл удалить этот кеш, выполнив команды:
    Get-WindowsFeature |
    ? { $_.InstallState -eq ‘Available’ } |
    Uninstall-WindowsFeature -Remove
  • В случае, если какой-то из компонентов может пригодиться впоследствии — имеет смысл его оставить, иначе при последующей установке придётся указывать путь к wim-файлу (параметр -Source). Впрочем, тут нет ничего страшного: этот файл есть в ISO файле, с которого ставилась система, и его можно использовать как локально, так и с сетевого ресурса. К тому же, часть компонентов спокойно ставится из Интернета — Powershell сам скачает необходимые файлы.
  • При желании можно установить Disk Cleanup — программу, которая автоматизированно очищает систему от временных файлов. Однако для этого необходимо добавлять роль Desktop-Experience, при удалении которой возникают проблемы с sysprep. Так что варианта тут два: либо оставлять эту фичу, которая сама подъедает место и утяжеляет реестр, (т.к. тянет за собой кучу обязательного, но лишнего барахла типа Ink and Handwriting), либо отказаться от sysprep, что ставит крест над использованием поднятой машины в домене.
  • После всех перечисленных операций размер динамического VHD файла останется прежним. Чтобы его сжать — необходимо сначала провести дефрагментацию, чтобы переместить все файлы в начало диска:
    Optimize-Volume -DriveLetter C -Defrag
  • После дефрагментации желательно обнулить всё свободное место при помощи команды sdelete, входящей в состав SysInternals:
    sdelete -z c:
    Это позволит эффективнее сжать её впоследствии.
После этого можно выключать виртуалку и запускать операцию Compact на её VHD. Итоговый размер может варьироваться, однако обычно он находится на уровне 5-7 Гб. Финальный размер бокса будет ещё меньше, ведь мы собираемся дополнительно сжать его при помощи tar и GZip. Однако, если планируется использование этой машины в доменном окружении — необходимо подготовить её, чтобы не возникло ситуации с дублированием SID. Для этого используется утилита Sysprep.
Хождение по Sysprep’у
В самом общем случае подготовка виртуалки к клонированию при помощи sysprep — процедура довольно банальная. Для этого можно воспользоваться как GUI
C:\Windows\System32\Sysprep\sysprep

так и командную строку, что нам ближе по душе и к тому же позволяет указать дополнительные параметры:
C:\Windows\System32\Sysprep\sysprep /generalize /oobe /mode:vm /shutdown
После этого программа выполнит все необходимые операции и потушит машину. При последующем включении система будет находиться в вышеупомянутом OOBE (Out-of-Box Experience) — состоянии, в котором находится свежеприобретённый ноутбук при первом включении: будет проведена инвентаризация железа, запрошен пароль локального администратора, лицензионный ключ, имя компьютера и так далее. Всё бы ничего, но вводить всё это приходится вручную, с клавиатуры. К счастью, всё это легко автоматизируется. Для этого нужно подготовить файл ответов, unattend.xml и положить его рядом с запускаемым файлом sysprep.exe (в папку C:\Windows\System32\Sysprep), либо указав путь к нему в качестве параметра командной строки — это позволит разместить файл на внешнем диске, чтобы его не оказалось на итоговом боксе. Подробно останавливаться на этом не буду, хочу лишь сказать, что для этого понадобится установочный образ Windows (точнее файл install.wim из него) и Windows Assessment and Deployment Kit (ADK) (ставить нужно только пункт Deployment Tools, который включает в себя Windows System Image Manager). Ссылки на дистрибутив, инструкции и примеры использования будут в соответствующем разделе в следующей, заключительной части статьи.
Важные нюансы:
  • Если вы ставили, а потом удаляли компонент Desktop-Experience, то Sysprep будет вываливаться с ошибкой. Как я и упоминал выше — варианта два: либо оставлять этот компонент установленным, либо обходиться без него. Подробности есть у Мэта Рока (автора Boxstarter) в блоге.
  • При подготовке бокса часто возникает необходимость доработать что-либо, для этого бокс поднимается в состоянии OOBE, проходят все настройки в соответствии с файлом ответов, потом делаются необходимые изменения и система снова прогоняется Sysprep. Хочу обратить внимание, что так получится сделать всего два раза (т.е. три прогона sysprep). Это связано с особенностями лицензирования Microsoft. В принципе, это обходится хитрым редактированием реестра, однако это можно делать только для временных или тестовых машин, а не в продакшене, поэтому я советую просто хранить образ для дальнейшей работы отдельно, при необходимости делая его копии и подготавливая новую версию независимо. Таким образом каждая виртуальная машина за весь период её жизни будет “отсиспреплена” всего единожды.
  • Лучше не устанавливать имя компьютера — тогда оно будет случайно сгенерировано, что позволит избежать путаницы и конфликтов, когда поднимается несколько машин одновременно. К тому же, его можно легко установить самим вагрантом на этапе провижионинга при подъёме.
  • Установите сложный и безопасный пароль для локального администратора. В будущем его, конечно, лучше сменить (или вообще заблокировать). Эта учётная запись понадобится при поднятии машины на этапе провижионинга (provisioning stage): именно под ней Vagrant будет устанавливать софт, обновлять систему и делать все необходимые настройки.
  • Имя машины в самом гипервизоре (как она называется в Hyper-V Manager) лучше сменить на что-то короткое и простое — именно так будет называться машина из развёрнутого бокса. Была неловкая ситуация, когда коллеги поднимали у себя мой пробный бокс и в результате у них появлялась машина вида “Winda 2k12 r2 x64 syspreped with bloody winrm settings version 111 test 222 yo”.

Упаковка бокса
После того, как Sysprep потушил машину, самое время упаковывать виртуалку в файл бокса. Вообще у Vagrant есть встроенный функционал для этого (команда provision), однако по состоянию на нынешний момент в Hyper-V она не работает. Так что паковать бокс мы будем руками — бояться тут нечего, делается это довольно просто:
  • У машины проверяется конфигурация оборудования: количество ядер процессора, объём памяти, приоритет загрузки. Именно эти параметры будут на вновь развёрнутых машинах (хотя ничего не мешает поменять их потом, конечно).
  • Удаляются все снимки (снапшоты) жёсткого диска.
  • Готовая выключенная машина экспортируется в отдельную папку на диске. Это необходимо, чтобы разместить рядом файл жёсткого диска и всю мета-информацию.
  • В папке с виртуальной машиной удаляется папка для файлов снапшотов — вагрантовский провайдер Hyper-V всё равно его не использует.
  • Там же создаётся текстовый файл metadata.json. Как минимум, там должен быть определён хотя бы один провайдер (Hyper-V в нашем случае). Пример файла для нашего случая:
    {
    «name»:«Windows2012R2»,
    «description»:«Windows 2012 R2 box sysprepped with ununtended provisioning»,
    «provider»: «hyperv»
    }
  • Теперь осталось только сделать из содержимого каталога файл .box. Для этого используется tar (можно использовать бесплатный 7-Zip или bsdtar из репозитария: версия, которая идёт с Vagrant 1.7.2, не подойдёт). Внимание: в архиве должно быть только содержание папки, куда экспортировалась машина, без вышестоящей папки, иначе бокс не распознается. Т.е. внутри, прямо в корне должны быть каталоги “Virtual Hard drives” и “Virtual Machines”, а также файл metadata.json. Получившийся файл потом можно сжать при помощи gzip (снова можно использовать 7-Zip, главное делать это отдельной итерацией, уже над файлом .tar) или LZMA (который даёт лучшее сжатие, но сэкономленное на копировании время потом потратится на более длительное, по сравнению с gzip, разархивирование) и поменять его расширение на box. Та-да! Бокс готов!

Теперь, чтобы Vagrant его скопировал себе и увидел — нужно добавить его при помощи команды add прямо из нашего каталога с файлом:
vagrant box add —provider hyperv —name Win2012R2x64 Win2012R2.box
Если всё прошло нормально — бокс станет доступным (вагрант скопирует его себе в %VAGRANT_HOME% и распакует) и его можно увидеть в выводе команды vagrant box list. Чтобы он был доступен и для коллег — можно выложить его на общий сетевой диск (тогда команда для добавления бокса будет вида vagrant box add —name Win2012R2x64 D:\Path\To\Win2012R2x64 \\fileserver.domain.local\boxes\win2012r2.box) или веб-сервер: локальный (vagrant box add —name Win2012R2x64 http://devops.local/boxes/win2012r2.box) или внешний. Например, на http://www.vagrantbox.es/ или Hashicorp Atlas.
В следующей части я покажу, как поднимать ВМ из бокса и проводить её автоматическую настройку при помощи провижионинга.

habr.com

Экспорт и импорт виртуальной машины Hyper-V

Hyper-V Import-Export

Механизм экспорта-импорта в гипервизоре Hyper-V предназначен для перемещения виртуальных машин с одного компьютера или сервера на другой. Экспорт – это, по сути, копирование виртуальной машины с полным сохранением ее конфигурации. При экспорте копируется виртуальный жесткий диск, настройки оборудования, сохраненный момент работы гостевой ОС, созданные контрольные точки (снапшоты).

Механизм экспорта-импорта Hyper-V также можно использовать для создания на том же сервере или на том же компьютере виртуальной машины-клона для тестирования и взаимодействия с виртуальной машиной-оригиналом. Машина-клон может получить другой ID (идентификатор), другой внутренний IP-адрес в сети Hyper-V, вследствие чего, по сути, не будет ничем отличаться от виртуальных машин, созданных с нуля.

Ниже рассмотрим процесс экспорта-импорта виртуальной машины на примере Hyper-V, входящего в состав Windows 10, детальнее.

Рассматриваемые вопросы:
  1. Экспорт виртуальной машины
  2. Экспорт снимка виртуальной машины
  3. Надежность формата экспорта Hyper-V
  4. Импорт виртуальной машины

1. Экспорт виртуальной машины

Одним из преимуществ новой версии Hyper-V, вошедшей в состав Windows Server 2012 R2, клиентских систем Windows 8.1 и 10, является способность осуществлять некоторые ресурсоемкие задачи, в частности, экспорт на лету, в процессе работы виртуальной машины, без ее остановки, даже без приостановки. Экспорт осуществляется в фоновом режиме, он проходит не быстро, поскольку задействует небольшое количество системных ресурсов, оставляя пользователю возможность работать с виртуальной машиной дальше.

Как осуществляется экспорт виртуальной машины? Выбираем в диспетчере Hyper-V нужную виртуальную машину, вызываем контекстное меню. Нам нужна команда «Экспорт».

3497

Далее используем кнопку обзора и указываем путь хранения файлов экспорта. Жмем «Экспорт».

3498

2. Экспорт снимка виртуальной машины

Еще одна относительно новая функция Hyper-V, которой не было в старых серверных версиях Windows – возможность экспорта отдельной контрольной точки, то есть, виртуальной машины в состоянии на момент создания этой контрольной точки. Ранее гипервизор Microsoft предусматривал только экспорт-импорт всей виртуальной машины. И в случае, если нужно было состояние какой-то отдельной контрольной точки, приходилось экспортировать виртуальную машину со всеми ее контрольными точками, а после импорта делать откат к нужной. Сейчас Hyper-V позволяет экспортировать каждую отдельную контрольную точку. Экспортировав отдельный снапшот, его можно затем импортировать как новую виртуальную машину, в частности, со своим уникальным идентификатором на том же сервере или компьютере.

Чтобы осуществить экспорт виртуальной машины из контрольной точки, выбираем в диспетчере Hyper-V и машину, и контрольную точку. На последней вызываем контекстное меню и выбираем «Экспорт».

3499

3. Надежность формата экспорта Hyper-V

Экспорт виртуальной машины Hyper-V осуществляется не в какой-нибудь отдельный сжатый формат файла, куда помещаются и виртуальный жесткий диск, и файлы конфигурации, и сохраненное состояние гостевой ОС, как, например, это предлагается механизмом экспорта-импорта в программе VirtualBox. В случае с виртуальными машинами VirtualBox экспорт-импорт возможен при участии посредника – файла формата OVA. При повреждении этого файла импорт виртуальной машины VirtualBox может не состояться. А вот в случае с Hyper-V экспорт виртуальной машины означает полное копирование виртуального жесткого диска в исходном его формате – VHDX (или VHD).

3500

Таким образом, если прочие данные экспорта повредятся, виртуальную машину все равно можно будет воссоздать. Нужно будет средствами Hyper-V создать новую виртуальную машину, использовав существующий файл VHDX (VHD).

4. Импорт виртуальной машины

Экспортированную виртуальную машину в дальнейшем можно импортировать в совместимой версии Hyper-V в составе серверных редакций Windows и клиентских Windows 8.1 и 10.

Для импорта виртуальной машины выбираем соответствующую функцию в диспетчере Hyper-V.

3501

Жмем «Далее» в окне приветствия мастера.

3502

В следующем окне используем кнопку обзора и указываем путь к папке с экспортированной виртуальной машиной. Жмем «Далее».

3503

Выбираем нужную виртуальную машину, если в указанной папке их несколько. Жмем «Далее».

3504

Затем нужно сделать выбор, как будет импортирована виртуальная машина. Если таковая перенесена с другого сервера или компьютера, можно использовать первый тип импорта, предусматривающий ее регистрацию с использованием исходного идентификатора. Этот вариант регистрирует виртуальную машину в той же папке, где хранятся файлы ее экспорта, следовательно, не будет затрачено время на копирование файлов.

Второй тип импорта также подойдет для случаев переноса виртуальной машины с другого сервера или компьютера, но при его использовании экспортированные файлы будут перенесены в указанную папку. Идентификатор виртуальной машины при этом останется прежним.

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

В нашем случае имеет место быть копирование виртуальной машины, это третий тип импорта. Жмем «Далее».

3505

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

3506

В нашем случае просто допишем в пути (через слеш) создание отдельной папки «Копия». Жмем «Далее».

3507

Этот же путь укажем и для файла VHDX, чтобы все находилось в одном месте. Жмем «Далее».

3508

Завершающий этап мастера – сводка данных импорта. Жмем «Готово».

3509

Теперь в нашем случае в диспетчере Hyper-V имеется две одинаковые виртуальные машины. Они с разными идентификаторами, но у них одно и то же название. Сменим название только что импортированной виртуальной машины.

3510

Все – процесс импорта осуществлен. Импортированную виртуальную машину можно запускать и тестировать.

3511

windowstips.ru

Как скопировать файл в виртуальную машину Hyper-V.

В своей работе системным администраторам бывает необходимо перенести файлы в гостевую систему виртуальной машины. В этой статье описано как это сделать в системе виртуализации Hyper-V при невозможности скопировать файлы по RDP или по сети(как скопировать файлы в виртуальную машину VMware описано в одноименной  статье).

Как скопировать файл в виртуальную машину Hyper-V.

Есть несколько способов это сделать. Не буду подробно описывать первые два, просто скажу, что они есть и работают(иногда, только с их помощью и можно решить поставленную задачу, например если на ВМ установлена не Windows). В любом случае, выбирайте способ, который подходит в вашей ситуации.

1. Первый способ заключается в создании ISO-образа, подключении его к машине, с которой надо скопировать файл, копировании на него нужных файлов, а потом монтировании к машине, на которую нужно эти файлы переместить.

2. Второй способ аналогичен первому, только вместо ISO-образа используется файл виртуального жесткого диска(создать его можно на хосте в управлении дисками или в оснастке Hyper-V).

Как скопировать файл в виртуальную машину Hyper-V.

Создание виртуального диска в Управлении дисками.

Как скопировать файл в виртуальную машину Hyper-V.

Создание виртуального диска в Диспетчере Hyper-V

 

С помощью вышеописанных способов, естественно можно переместить файлы и в обратном направлении, то есть из ВМ на хост Hyper-V.

Перед тем как приступить к описанию двух других способов, нужно сказать, что я не смог использовать их при копировании файлов в гостевую систему, отличную от Windows. Поэтому, если у вас в качестве гостевой ОС используется Linux, то, скорее всего, придется использовать первые два.

3.Итак, способ номер три:

В Hyper-V на Windows Server 2012 R2 и Windows 8.1 появился новый режим Enhanced Session Mode (ESM), позволяющий, при подключении к виртуальной машине через консоль, пробрасывать внутрь ВМ локальные ресурсы(диски,принтеры, usb-устройства) хоста, на котором открыта консоль Hyper-V. Этот режим позволяет копировать файлы в ВМ, если даже на ней отсутствуют сетевые адаптеры.

Как скопировать файл в виртуальную машину Hyper-V.

Для работы ESM должны быть выполнены следующие условия:
    В свойствах сервера Hyper-V должен быть включен Enhanced Session Mode.
    В качестве гостевых ОС могут выступать только виртуальные машины с ОС не старше Windows 8.1 (редакции Pro/Enterprise) и Windows Server 2012 R2.
    В гостевой ОС должна быть запущена служба Remote Desktop Services.
    Пользователь ОС должен на гостевой системе входить в локальную группу администраторов или группу Пользователи удаленного рабочего стола.

Для включения режима ESM откройте параметры Hyper-V и установите необходимую галку:

Как скопировать файл в виртуальную машину Hyper-V.

В свойствах самой виртуальной машины установите галочку на службах интеграции(по умолчанию она не стоит).

Как скопировать файл в виртуальную машину Hyper-V.

Установка гостевых служб в виртуальной машине.

Подключитесь к виртуальной машине. При первом подключении появится табличка с настройками параметров подключения.

Как скопировать файл в виртуальную машину Hyper-V.

Параметры подключения к ВМ.

 

Если появится необходимость изменить параметры подключения или табличка не появляется, закройте консоль подключения и нажмите «Изменить параметры сеанса» в Диспетчере Hyper-V.

 

Как скопировать файл в виртуальную машину Hyper-V.

Изменение параметров сеанса.

В открывшемся окне параметров сеанса можно изменить разрешение экрана консоли и настроить дополнительные параметры подключения. Для этого нажмите «Показать параметры» в левом нижнем углу.

Как скопировать файл в виртуальную машину Hyper-V.

Параметры подключения к ВМ.

После этого выберите вкладку локальные ресурсы. Установите галки «Принтеры»(если нужно предоставить доступ ВМ к принтерам) и «Буфер обмена». Нажмите «Дополнительно».

Как скопировать файл в виртуальную машину Hyper-V.

Настройка локальных ресурсов для подключения к ВМ.

В открывшемся окне отметьте галками какие ресурсы хоста будут доступны виртуальной машине(диски, USB-устройства и т.д).

Как скопировать файл в виртуальную машину Hyper-V.

Предоставление локальных ресурсов виртуальной машине.

Сохраните изменения, нажав ОК. Теперь при подключении к ВМ, указанные ресурсы хоста будут доступны и виртуальной машине.

Этот способ аналогичен способу копирования файлов при подключении по RDP, и мне представляется самым простым и удобным в случае с Windows-машинами.

4. Ну и четвертый способ предполагает использование Powershell.

При использовании этого метода консоль Powershell должна быть запущена от имени Администратора и, как и в предыдущем способе, в ВМ должны быть установлены Гостевые службы(Integration Services).

Для копирования файла в ВМ нужно выполнить команду:

Copy-VMFile -Name Windows10 -SourcePath D:\VMFiles\my_file.iso -DestinationPath D:\Files\ -CreateFullPath -FileSource Host

Значение параметров команды:

     -Name — имя ВМ;

      -SourcePath — путь к файлу;

      -DestinationPath — путь к папке назначения;

      -CreateFullPath — создать папку назначения, если она отсутствует;

      -FileSource — источник нахождения файла(хост Hyper-V).

Если нужно скопировать не один файл, то нужно использовать команды:

Get-ChildItem C:\MyFiles -Recurse -File | % { Copy-VMFile "Windows10" -SourcePath $_.FullName -DestinationPath $_.FullName -CreateFullPath -FileSource Host }

 

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

 

 

 

Поделиться ссылкой:

Похожее

fun-admin.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *