NexxDigital - компьютеры и операционные системы

11.02.2012 - 18:26

Рассмотрим скрипт по экспортированию ВМ на сервере Hyper-V.
Задача стоит в автоматизации процесса с максимальной логикой не в ущерб производительности. В результате, мною был написан скрипт, который я подавал раннем . Ситуация менялась с каждым днём, система уже работала в продуктиве, поэтому нужно было сократить риск что-то поломать до минимального. В результате, я доработал скрипт, концепция которого не изменилась:

  1. Находим ВМ
  2. Выключаем ВМ
  3. Экспортируем ВМ
  4. Включаем ВМ

Добавились только "рюшечки" и "вензеля".
Основное требование - сохранение 2-х копий ВМ, текущей и предыдущей. При формировании новой копии, предыдущая удаляется, а текущая переименовывается в предыдущую. Все реализовано на примере каталогов Today и Yesterday.

Основные возможности скрипта:

  1. Проверяет наличие нужной ВМ среди списка ВМ. Все действия записываются в log-файл.
  2. Если ВМ найдена - Удаляет каталог с прошлой записью, текущий каталог переименовывает в прошлый, создаёт каталог для текущей записи.
  3. Проверяет состояние ВМ. Если ВМ запущена - Останавливает ВМ. Экспортирует ВМ в назначенный каталог. Запускает.
  4. Если ВМ остановлена - экспортирует ВМ в назначенный каталог.
  5. Если ВМ в другом состоянии - пишет в лог.
  6. Если ВМ не найдена - пишет в лог.
  7. Позле экспорта - снимает всю информацию про VHD, тестирует VHD. Пишет в лог.
  8. Отправляет e-mail адресатам о проведённых операциях с установкой важности письма при неудаче.

Есть парочка особенностей:

  1. При отправке письма, лог, который планируется отправить вложением, не может находиться по UNC пути. Другими словами, если требуется отправить лог во вложении, нужно его разместить на локальном диске либо сетевой каталог подключить отдельным диском.
  2. Скрипт дополнительными функциями собирает информацию про VHD диск. Для успешной отработки функций аудита, диск не должен располагаться по UNC пути, опять придётся подключать сетевой диск.
  3. Для контроля выполнения экспорта машин по графику, было предпринято внедрить параметр "Имя ВМ".

Для успешной работы скрипта, нужно установить данный модуль . Я думаю, сложностей не возникнет.
Скрипт:

param ($VM ) # Входящий параметр Виртуальной Машины (ВМ)

if (! (Get-Module -Name hyperv) )
{
# Включить модуль
import-module hyperv
}
if ($VM -eq $null )
{
Write-Host "Введите имя виртуальной машины."
}

# ==== Начальные параметры
$ComputerName = Get-Content env:COMPUTERNAME
# Подключаем диск R: для получения информации про VHD
Invoke-Expression -Command "net use R: \\Server /y"
# Обнуляем счётчики
$count = $false # Триггер найденной ВМ
$export_count = $false # Счётчик успешного экспорта ВМ
# Определяем имя\адрес лог-файла
$log = "\\Server\backup\Logs\$ VM\" + (Get-Date -Format " yyy-MM") +" .log"
# Определяем путь к папке с РК
$BackupDir = "
\\Server\backup\" +$VM
# Путь к папке с РК для снятия информации с VHD
$InfoDir = "R:\backup\" +$VM
# Данные для email
$Sender = "
BackupOperator@ contoso.com"
$SMTP = " smtp.contoso.com"
$Recipients = @(" backup_monitoring@ contoso.com") # группа рассылки с адресатами, которые мониторят резервное копирование
$AttachePath = "
R:\backup\Logs\$VM \" + (Get-Date -Format "yyy-MM" ) +".log"

# Функция оптравки сообщения, на момент написания я не знал про функцию Send-MailMessage и написал свою функцию. Переделывать не хочу, "Работает - не трогай!"
function SendEmail($Subject ,$Body ,$Priority )
{
$Message = New-Object System.Net.Mail.MailMessage
$Server = New-Object System.Net.Mail.SMTPClient
$Attache = New-Object System.Net.Mail.Attachment($AttachePath )
# ==== Message
$Recipients | ForEach-Object { $Message .To.Add($_ ) }
$Message .From = $Sender
$Message .Subject = $Subject
$Message .Body = $Body
$Message .Attachments.Add($Attache )
$Message .Priority = [ System.Net.Mail.MailPriority] ::$Priority
# ==== Sending
$Server .Host = $SMTP
$Server .Send($Message )
}

# =========================================
# Начинаем запись лога
(Get-Date) + " `r` n Начало работы скрипта экспорта ВМ " +$VM + " сервер: " + $ComputerName + "`r` n Получение списка Виртуальных машин... `r` n"

# Получаем список ВМ
$VMArray = Get-VM | Select-Object -Property VMElementName
foreach($element in $VMArray )
{
# Ищем заданную ВМ
if ($VM -eq $element .VMElementName)
{
$log_string = $log_string + "Виртуальная машина найдена. Выполняю заданные действия... `r` n"
$count = $true
# ========== Операции с папками ===============

# Удаляем папку Yesterday
Remove-Item -Path ($BackupDir + "\Yesterday" ) -Recurse -ErrorVariable err
if ($err )
{
# Если ошибка удаления - останавливаем выполнение.
`r` n"
" Удаление каталога Yesterday не удалось, экспорт $VM прерван. Ошибка: " + $err
}
else
{
$log_string = $log_string + "Удаление каталога Yesterday проведено успешно. `r` n"
# Переименовываем папку Today
Rename-Item -Path ($BackupDir + "\T oday" ) -NewName ($BackupDir + "\Yesterday" ) -Force -ErrorVariable err
if ($err )
{
# Если ошибка переименовывания - останавливаем выполнение.
$log_string = $log_string + $err + "`r` n"
" Переименование каталога Yesterday не удалось, экспорт $VM прерван. Ошибка: " + $err
}
else
{
$log_string = $log_string + "Переименование папок проведено успешно. `r` n"
# Создаём папку Today
New-Item -Path ($BackupDir + "\T oday" ) -ItemType Directory -Force -ErrorVariable err
if ($err )
{
# Если ошибка создания - останавливаем выполнение.
$log_string = $log_string + $err + "`r` n"
$MailBody = $Mailbody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + "Создание каталога Yesterday не удалось, экспорт $VM прерван. Ошибка: " + $err
}
else
{
$log_string = $log_string + "Создание папки Today проведено успешно. `r` n"
#========== Конец работы с папками

#========== Работа с ВМ
# Если состояние машины - "Работает", то
if ((Get-VMSummary $VM ) .enabledstate -eq "Running" )
{
# Запустить выключение
$log_string = $log_string + ((Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина запущена. Выполняю остановку. `r` n" )
invoke-vmshutdown -VM $VM -Reason "Export VM." -Force -ErrorVariable err
if ($err )
{
$log_string = $log_string + $err + "`r` n"
$MailBody = $Mailbody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Остановка ВМ не произведена, экспорт $VM прерван. Ошибка: " + $err
}
else
{

" Виртуальная машина остановлена. Выполняю экспорт.`r` n"
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина остановлена.`r` n"
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Выполняю экспорт виртуальной машины.`r` n"
\T oday"
if ($err )
{
$log_string = $log_string + $err + "`r` n"
$MailBody = $Mailbody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Экспорт ВМ завершён с ошибкой, экспорт $VM прерван. Ошибка: " + $err
}
else
{
$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина успешно экспортирована. Выполняю запуск.`r` n"
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) +
$export_count = $true
}
# Запуск ВМ потверждением включения на протяжении 300с перед выполнением следующей команды
Start-VM -vm $VM -HeartBeatTimeOut 300 -ErrorVariable err
if ($err )
{
$log_string = $log_string + $err + "`r` n"
$MailBody = $Mailbody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Запуск ВМ не произведен. Ошибка: " + $err
}
else
{
$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) +
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина запущена.`r` n"
}
}
}
elseif((Get-VMSummary $VM ) .enabledstate -eq "Stopped" )
{
# Экспорт ВМ без подтверждения со всеми файлами (xml, vhd и т.д.) и подождать, пока не выполнится
$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина находится в режиме Остановлена. Выполняю экспорт.`r` n"
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина находится в режиме Остановлена.`r` n"
export-VM -VM $VM -path ($backupDir + "\T oday" ) -force -copystate -wait -ErrorVariable err
if ($err )
{
$log_string = $log_string + $err + "`r` n"
$MailBody = $Mailbody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Экспорт ВМ не произведен, экспорт $VM прерван. Ошибка: " + $err
}
else
{
$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина успешно экспортирована.`r` n"
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Виртуальная машина успешно экспортирована.`r` n"
$export_count = $true
}
}
else
{
$vm_state = (Get-VMSummary -VM $VM ) .EnabledState
$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) +
$MailBody = $MailBody + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Экспорт виртуальной машины не произведён, состояние $VM = $vm_state .`r` n"
}
}
}
}
}
}
if ($count ) # Если ВМ найдена
{
if (! ($export_count ) ) # Если ВМ не экспортирована
{
$log_string = $log_string + "Экспорт виртуальной машины $VM выполнен с ошибками. Процесс прерван. `r` n"
$MailBody = $MailBody + "Экспорт виртуальной машины $VM выполнен с ошибками. Процесс прерван.`r` n"
}
else # Если ВМ экспортирована
{
$log_string = $log_string + "Провожу поиск *.VHD для $VM ... `r` n"
# Проводим поиск *.vhd в заданном каталоге
if (Get-Item -Path ($InfoDir + "\T oday\" + $VM + " \Virtual Hard Disks\* ") -Include *.*vhd | Select-Object -Property Name)
{
#$VHDInfo = "
VHD Info:` r` n"
foreach($element in (Get-Item -Path ($InfoDir + " \Today\" + $VM + "\V irtual Hard Disks\*" ) -Include * .* vhd | Select-Object -Property Name) )
{
# Для каждого найденного элемента получаем информацию и пишем в лог и строку для письма
$log_string = $log_string + "Информация для " + $element .Name + ":`r` n"
$SomeVHDInfo = Get-VHDInfo -VHDPaths ($InfoDir + "\T oday\" + $VM + " \Virtual Hard Disks\" + $element .Name)
$log_string = $log_string + "Путь: " + $SomeVHDInfo .Path + "`r` n"
$log_string = $log_string + "Объём файла: " + ([ System.Math] ::Round(($SomeVHDInfo .FileSize/ 1Gb) ,2 ) ) + "Gb`r` n"
$log_string = $log_string + "Привязка к VM: " + $SomeVHDInfo .InSavedState + "`r` n"
$log_string = $log_string + "Смонтирован: " + $SomeVHDInfo .InUse + "`r` n"
$log_string = $log_string + "Максимальный объём файла: " + ([ System.Math] ::Round(($SomeVHDInfo .MaxInternalSize/ 1Gb) ,2 ) ) + "Gb`r` n"
$log_string = $log_string + "Тип образа: " + $SomeVHDInfo .TypeName + "`r` n"
# Проводим валидацию VHD ВМ
$TestVHD = "VHD: " + $element .Name + ": " + (Test-VHD -VHDPaths ($InfoDir + "\T oday\" + $VM + " \Virtual Hard Disks\" + $element .Name) )
$log_string = $log_string + $TestVHD + "`r` n"
$MailBody = $Mailbody + $TestVHD + "`r` n"
}
}
else # Вдруг VHD нет в этом каталоге О_О
{
$log_string = $log_string + "*.VHD для $VM не найдены.`r` n"
$MailBody = $MailBody + "*.VHD для $VM не найдены.`r` n"
}
}
}
else # ВМ не найдена на сервере
{
$log_string = $log_string +
$MailBody = $MailBody + "Виртуальная машина $VM не найдена. Процесс завершён.`r` n"
}

$log_string = $log_string + (Get-Date -Format "(yyyy-MM-dd) hh:mm:ss" ) + " Работа над $VM окончена.`r` n"
$log_string = $log_string + "======================== `r` n"

$MailSubject = "$VM export report."
# Отправляем письмо:
SendEmail -Subject $MailSubject -Body $MailBody -Priority $MailPriority

#net use R: /delete /y Данную функцию запускать не обязательно.

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

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

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

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

Рассматриваемые вопросы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отличного Вам дня!

Симптомы проблемы

В случае, если Вы хотите перенести виртуальную машину с сервера Hyper-V 2008 R2 на сервер Hyper-V 2012 R2, у Вас возникнут проблемы: после экспорта виртуальной машины из Hyper-V 2008 R2 и копирования файлов на новый сервер, при попытке импорта в Hyper-V 2012 R2 Вы получите сообщение вида:
Hyper-V did Not Find virtual machines to import from location d:\..
или
Hyper-V не удалось найти виртуальные машины для импорта из расположения d:\..

Причины проблемы

Hyper-V в 2012 R2 использует новую версию WMI 2.0 , которая не поддерживает.EXP файлы, полученные после экспорта машины Hyper-V 2008 R2, в котором используется WMI 1.0. Поэтому и решение в данном случае: копирование+импорт, т.к. импорт без экспорта виртуальной машины поддерживается на уровне Server 2012 R2 и этих.exp при импорте просто нет, поэтому всё проходит гладко).
@The namespace for version 1.0 of WMI is deprecated. Prepare to adapt scripts for a revised namespace.@
@The WMI root\virtualization namespace is deprecated. The new namespace is root\virtualization\v2.@
http://technet.microsoft.com/en-us/library/hh831568.aspx

Решение проблемы

Необходимо использовать не экспорт+импорт, а копирование+импорт. Сделайте следующее:

  1. Остановите виртуальную машину (ВМ), которую необходимо перенести.
  2. Скопируйте.XML файл, содержащий конфигурацию виртуальной машины, а также.VHD или.VHDX файлы жестких дисков виртуальной машины на новый сервер.
  3. Импортируйте виртуальную машину в Hyper-V 2012 R2
  4. Если Вы уже сделали экспорт виртуальной машины, просто удалите (или переименуйте) файл с расширением.EXP, находящейся в папке с экспортированной ВМ.
  1. Когда делаете экспорт (или подготавливаете виртуальную машину к переносу), выключив виртуальную машину, зайдите в ее конфигурацию, и переключите MAC адрес сетевой карты с динамического в статический. При этом по умолчанию в качестве статического MAC адреса будет предложен старый MAC сетевой карты.
    Это позволит не перенастраивать параметры TCP/IP в виртуальной машине после переноса, поскольку MAC адрес карты не изменится и операционная система будет считать, что сетевая карта та же самая.
  2. Вы можете (это рекомендуется Microsoft) сменить (на время переноса виртуальной машины) тип использования оперативной памяти: назначить статическое выделение RAM. После импорта виртуальной машины (на новом сервере) можно снова поставить динамическое выделение RAM.
  3. Если у Вас несколько виртуальных машин на одном хосте, то иногда бывает сложно выяснить, какой.XML файл принадлежит нужной виртуальной машине: все XML файлы могут оказаться в одной папке. Ничего страшного! Скопируйте их все! При импорте виртуальной машины укажите папку с этими XML файлами, и Hyper-V 2012 R2 попросит Вас выбрать нужную виртуальную машину для импорта.
  4. При импорте (если Вы именно переносите виртуальную машину - т.е. на старом сервере она в результате будет удалена, а на новом должна быть запущена та же ВМ) выберите, каким способом производить импорт:
    1. Register the virtual machine in-place — зарегистрировать ВМ по месту с тем-же ID;
    2. Restore the virtual machine — скопировать ВМ в другую папку, ID оставить без изменения;
      Для переноса ВМ выберите этот вариант .
    3. Copy the virtual machine — скопировать ВМ в другую папку и сгенерировать для нее новый ID.
  5. Поскольку импорт (помимо всего прочего) требует копирования файлов жестких дисков, в случае больших файлов VHD(X) этот процесс хочется ускорить. С этой целью скопируйте (или переместите) VHD файл сразу в ту папку, где он должен будет находиться после импорта виртуальной машины. Затем в процессе импорта Hyper-V 2012 R2 запросит Вас, в какой папке взять файлы жестких дисков импортируемой виртуальной машины, а также куда их копировать в процессе импорта. На оба этих вопроса укажите папку, в которую Вы положили VHD файл импортируемой ВМ. То есть у Вас будет указана одинаковая папка "откуда копировать виртуальный диск" и "куда сохранять виртуальный диск".

При подготовке статьи использовались материалы.

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

По умолчанию все виртуальные машины Hyper-V по сути песочницы и полностью изолированы от других компьютеров и сетей. И если вы хотите, чтобы ваша виртуальная машина взаимодействовала с другими ВМ, физическими компьютерами, сетью и интернетом, нужно создать виртуальный коммутатор. Сделать это вы можете в менеджере Hyper-V, щелкнув на правой его панели по Virtual Switch Manager.

Но сначала вы должны решить, какой виртуальный коммутатор вы создаете. А Virtual Switch Manager предлагает текстовое описание каждого типа коммутатора.

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

Дальше вы должны сконфигурировать опции своего виртуального коммутатора. Здесь важно определить, к какому сетевому адаптеру вашего компьютера вы его подключаете. На вашем компьютере может быть проводное и беспроводное соединение. Выберите правильное.

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

После того, как вы создали виртуальный коммутатор, его нужно подключить к виртуальной машине. В центральной области менеджера Hyper-V, щелкните по соответствующей ВМ. Затем в нижней правой области, щелкните по настройкам. Что откроет настройки виртуальной машины.

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

В самом верху настроек адаптера сети, выберите созданный вами виртуальный коммутатор и нажмите OK. Настраивать еще что-нибудь нет необходимости. Ваша виртуальная машина теперь имеет сетевой доступ.

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

Создание контрольных точек Hyper-V

Если вы, в своей Windows 8.1 делаете какие-то существенные изменения, например, установку настольной программы или обновления Windows, создается системная точка восстановления. То есть сохраняется копия критических файлов операционной системы, таких как реестр Windows, до их изменения. И если что-то пойдет не так, изменение можно откатить и вернуться к более раннему состоянию Windows.

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

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

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

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

  • Ранее экспортируемую в Hyper-V виртуальную машину вы можете потом импортировать. Для чего не выделяя ВМ в верхнем правом углу окна менеджера Hyper-V, щелкните по ссылке импорт виртуальной машины.

  • Откроется мастер импорта виртуальной машины, где вас спросят, в какой папке (не файл) находится сохраненная копия ВМ.

  • Затем вы увидите название ВМ и подробности ее создания. Если это то, что вам надо, щелкните дальше.

  • Теперь вас спросят, как вы хотите импортировать ВМ. Для этого существуют три возможности:
  1. Зарегистрированная виртуальная машина . Используется если вы выполняете прямой импорт. ВМ находится в той же папке, куда и экспортировалась, и вы хотите оставить ее там.
  2. Восстановление виртуальной машины . Используется, если ВМ не находится в той папке, куда экспортировалась. Например, это копия, сделанная из основного образа на сервере.
  3. Копия виртуальной машины . Используется, если вы хотите создать локальную копию существующей ВМ, оставляя «основную» неповрежденной, например, для последующего ее импорта на другой ПК. А также эта опция используется, если вы создаете копию уже импортированной ВМ.

Внимание . Если вы импортируете ВМ, не делая с нее копии, любые изменения, которые вы в ней сделаете и любые проблемы останутся в ней, и вы фактически теряете свою чистую основную копию.

  • Если вы хотите создать копию виртуальной машины, вас спросят, где вы хотите ее сохранить.

  • Последний шаг - подтвердить выбранные настройки.

Интегрирование в виртуальную машину дополнительных служб

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

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

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

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

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

Форматы виртуальных дисков у разных гипервизоров также различны, однако это не представляет сложности - достаточно использовать специализированное ПО для конвертации. Единственная тонкость - гостевая ОС должна поддерживаться обоими типами гипервизора. В противном случае придется предпринимать дополнительные меры для обеспечения нормальной работы, однако эта тема выходит за рамки данной статьи.

Рассмотрим процесс на реальном примере. Один наш клиент приобрел коробочную версию "Мегаплан", который разработчики распространяют весьма оригинальным способом: в виде образа виртуальной машины формата Open Virtualization Format (OVF) , который поддерживают VMWare и VirtualBox . Собственно, внутри виртуалки содержится Ubuntu 12.04 с настроенным веб-сервером, СУБД и прочими компонентами необходимыми для работы "Мегаплана", который представляет собой обычное веб-приложение. При этом лицензионное соглашение запрещает доступ к гостевой ОС.

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

Если виртуальная машина уже работала на платформе VMWare (как чаще всего и бывает), то удаляем из нее VMWare Tools и выключаем машину.

Теперь можно приступать к конвертации виртуального диска. Для этого воспользуемся бесплатной утилитой StarWind V2V Converter . Ее интерфейс и использование предельно просты. Выберем исходный виртуальный диск (файл с расширением vmdk ).

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

Конвертация Hyper-V виртуальных машин в VMWare производится аналогичным образом. Конвертируем виртуальный диск в VMDK, если использовался диск формата VHDX, то предварительно его следует преобразовать в VHD средствами Hyper-V аналогично тому как мы делали выше. Затем создаем в VMWare виртуальную машину для используемой гостевой системы с идентичными параметрами и в настройках диска указываем использовать сконвертитрованый нами VMDK диск. После запуска виртуальной машины не забываем установить пакет VMWare Tools необходимый для полноценной работы гостевой системы.

  • Теги:

Please enable JavaScript to view the

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы