Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Перенос образов из Hyper-V в VirtualBox
Запись от Артем Enot Грунин размещена 17.12.2010 в 14:23
Теги virtualization
Недавно на одном из моих проектов случился легкий казус: нам впервые попался заказчик, использующий не-Microsoft решения виртуализации. Дело в том, что разработка прототипа привычно велась в среде Hyper-V, и вот в какой-то момент потребовалось развернуть его у заказчика. Вот тут-то и выяснилось, что заказчик использует Sun VirtualBox (в девичестве VirtualBox, ныне Oracle VM VirtualBox). В результате мне второпях пришлось искать решение, которое позволило бы быстро конвертировать диски в другой формат и переносить виртуалки на иную платформу. О полученном уроке я и расскажу в этом посте.
Первое с чем я столкнулся: две платформы виртуализации могут чудовищно плохо уживаться на одной машине. Наиболее отвратительно в данной ситуации ведет себя супервизор Hyper-V! Во-первых, эта технология (в отличие от предыдущих решений) не может работать на железе без аппаратной поддержки виртуализации, такой как Intel VT и AMD-V. Во-вторых, Hyper-V скрывает от пользователя (включая хостовую машину!) ряд инструкций процессора, в том числе те что отвечают за поддержку виртуализации! Иными словами, монополизирует некоторые возможности платформы для своих нужд! Подробнее об этом можно прочитать тут: Работа процессора в Hyper-V. На практике это обозначает, что в одной системе не удастся нормально использовать Hyper-V и VirtualBox. Во-первых VirtualBox не сможет использовать аппаратное ускорение (что приведет к чудовищному "торможению" системы), во-вторых, что куда печальнее, VirtualBox не сможет хостить 64 разрядные гостевые системы. Помимо этого, различные технологии виртуализации используют различные подходы к реализации сетевых подключений. Могут использоваться дополнительные драйверы и протоколы сетевых подключений, создаваться виртуальные сетевые адаптеры и т.д. Иногда установка конкурирующих решений на хостовой машине может приводить к понижению скорости работы сети, или полной ее неработоспособности. Итак, для конвертирования образов вам потребуется выденная машина. Погасить службу Hyper-V недостаточно, придется деинсталлировать роль.
Второй важный момент переезда - это дополнения которые ставятся в гостевую операционную систему для улучшения взаимодействия с супервизором. Это могут быть средства удаленного выключения, поддержка буфера обмена, синхронизация системного времени и пр. пр. пр. Совершенно непредсказуемо, как эти компоненты поведут себя после переезда, так что их следует удалить еще до переноса, в родной виртуальной среде. В случае с Windows Server 2008 R2, эти службы устанавливаются автоматически и с высокой долей вероятности будут причиной падения на других платформах. В настройках самого гипервизора эти службы выглядят так:
А так они выглядят в оснастке "Службы" гостевой операционной системы Windows Server R2:
Чтобы гарантировать успешный переезд, остановите эти службы и отключите их автозапуск.
Далее мы будем работать только с виртуальным жестким диском, поэтому выключите виртуалку, чтобы с ним не производилось никаких операций.
Если в процессе разработки вы использовали снапшоты (снимки системы), их необходимо смергевать в основной образ. Для этого можно просто удалить все снимки, или, если вы рассчитываете продолжить разработку в среде Hyper-V и эти снимки вам нужны, то вы можете смергевать все изменения в отдельный диск. Для этого, зайдите в оснастку Диспечер Hyper-V непосредственно на виртуальном сервере (на удаленной машине фокус не получится из-за бага) и в разделе управления сервером выберите пункт "Изменить диск":
Выберите наиболее поздний образ AVHD (тот где отключены службы интеграции Hyper-V) нужной вам виртуалки. Из-за глюка, при подключении с удаленной машины эти файлы не будут видны - используйте серверную консоль. Выберите пункт "Объединить" и укажите куда сохранить объединенный VHD файл:
Теперь остается только правильно подключить его к виртуальной машине VirtualBox. Создайте новую виртуальную машину VirtualBox и выберите нужный вам тип гостевой операционной системы с нужной вам разрядностью:
Выдайте ей необходимое количество оперативной памяти, и откажитесь от подключения загрузочного диска. Далее выберите пункт "Носители" в настройках созданной вами виртуальной машины и подключите диск к IDE интерфейсу:
Если подключить диск при создании виртуалки, то по умолчанию VirtualBox подключит его к интерфейсу SATA, и машина будет "кувыркаться" с ошибками при загрузке. Что делать если в Hyper-V вы использовали интерфейс SCSI? Понятия не имею! Зачем вы это сделали? Теперь вам конец.
Вот теперь все готово к запуску. Машина должна запускаться и работать "как тут и была".
Если у вас есть желание или необходимость использовать "родные" форматы файлов, то в интернете есть куча конвертеров которыми вы можете воспользоваться. Мне, например, удалось конвертировать VHD в VDI (формат дисков VirtualBox) при помощи утилиты NHC. Процесс занимает длительное время, но машина так же успешно запустилась. Кроме того, утилита имеет действительно интуитивно понятный интерфейс класса "Далее-Далее-Далее", иначе я бы в ней никогда не разобрался:
Напоследок расскажу о моих впечатления относительно VirtualBox. ВЕЩЬ! Просто, быстро, удобно, понятно. Поддержка нормального буфера обмена, USB, аппаратное ускорение 2D/3D графики и звука, а так же возможность запускать x64 системы на 32 разрядной гостевой системе (если процессор поддерживает x64 и VT), убедили меня в том кто лидер в области визуализации. В конечном итоге вот ЭТО мне нужно как конечному пользователю, а не знаменитая кластеризация Hyper-V.
В вопросах виртуализации я еще тот специалист, так что если у вас есть какие-то замечания и дополнения - пишите!
Первое с чем я столкнулся: две платформы виртуализации могут чудовищно плохо уживаться на одной машине. Наиболее отвратительно в данной ситуации ведет себя супервизор Hyper-V! Во-первых, эта технология (в отличие от предыдущих решений) не может работать на железе без аппаратной поддержки виртуализации, такой как Intel VT и AMD-V. Во-вторых, Hyper-V скрывает от пользователя (включая хостовую машину!) ряд инструкций процессора, в том числе те что отвечают за поддержку виртуализации! Иными словами, монополизирует некоторые возможности платформы для своих нужд! Подробнее об этом можно прочитать тут: Работа процессора в Hyper-V. На практике это обозначает, что в одной системе не удастся нормально использовать Hyper-V и VirtualBox. Во-первых VirtualBox не сможет использовать аппаратное ускорение (что приведет к чудовищному "торможению" системы), во-вторых, что куда печальнее, VirtualBox не сможет хостить 64 разрядные гостевые системы. Помимо этого, различные технологии виртуализации используют различные подходы к реализации сетевых подключений. Могут использоваться дополнительные драйверы и протоколы сетевых подключений, создаваться виртуальные сетевые адаптеры и т.д. Иногда установка конкурирующих решений на хостовой машине может приводить к понижению скорости работы сети, или полной ее неработоспособности. Итак, для конвертирования образов вам потребуется выденная машина. Погасить службу Hyper-V недостаточно, придется деинсталлировать роль.
Второй важный момент переезда - это дополнения которые ставятся в гостевую операционную систему для улучшения взаимодействия с супервизором. Это могут быть средства удаленного выключения, поддержка буфера обмена, синхронизация системного времени и пр. пр. пр. Совершенно непредсказуемо, как эти компоненты поведут себя после переезда, так что их следует удалить еще до переноса, в родной виртуальной среде. В случае с Windows Server 2008 R2, эти службы устанавливаются автоматически и с высокой долей вероятности будут причиной падения на других платформах. В настройках самого гипервизора эти службы выглядят так:
А так они выглядят в оснастке "Службы" гостевой операционной системы Windows Server R2:
Чтобы гарантировать успешный переезд, остановите эти службы и отключите их автозапуск.
Далее мы будем работать только с виртуальным жестким диском, поэтому выключите виртуалку, чтобы с ним не производилось никаких операций.
Если в процессе разработки вы использовали снапшоты (снимки системы), их необходимо смергевать в основной образ. Для этого можно просто удалить все снимки, или, если вы рассчитываете продолжить разработку в среде Hyper-V и эти снимки вам нужны, то вы можете смергевать все изменения в отдельный диск. Для этого, зайдите в оснастку Диспечер Hyper-V непосредственно на виртуальном сервере (на удаленной машине фокус не получится из-за бага) и в разделе управления сервером выберите пункт "Изменить диск":
Выберите наиболее поздний образ AVHD (тот где отключены службы интеграции Hyper-V) нужной вам виртуалки. Из-за глюка, при подключении с удаленной машины эти файлы не будут видны - используйте серверную консоль. Выберите пункт "Объединить" и укажите куда сохранить объединенный VHD файл:
Теперь остается только правильно подключить его к виртуальной машине VirtualBox. Создайте новую виртуальную машину VirtualBox и выберите нужный вам тип гостевой операционной системы с нужной вам разрядностью:
Выдайте ей необходимое количество оперативной памяти, и откажитесь от подключения загрузочного диска. Далее выберите пункт "Носители" в настройках созданной вами виртуальной машины и подключите диск к IDE интерфейсу:
Если подключить диск при создании виртуалки, то по умолчанию VirtualBox подключит его к интерфейсу SATA, и машина будет "кувыркаться" с ошибками при загрузке. Что делать если в Hyper-V вы использовали интерфейс SCSI? Понятия не имею! Зачем вы это сделали? Теперь вам конец.
Вот теперь все готово к запуску. Машина должна запускаться и работать "как тут и была".
Если у вас есть желание или необходимость использовать "родные" форматы файлов, то в интернете есть куча конвертеров которыми вы можете воспользоваться. Мне, например, удалось конвертировать VHD в VDI (формат дисков VirtualBox) при помощи утилиты NHC. Процесс занимает длительное время, но машина так же успешно запустилась. Кроме того, утилита имеет действительно интуитивно понятный интерфейс класса "Далее-Далее-Далее", иначе я бы в ней никогда не разобрался:
Напоследок расскажу о моих впечатления относительно VirtualBox. ВЕЩЬ! Просто, быстро, удобно, понятно. Поддержка нормального буфера обмена, USB, аппаратное ускорение 2D/3D графики и звука, а так же возможность запускать x64 системы на 32 разрядной гостевой системе (если процессор поддерживает x64 и VT), убедили меня в том кто лидер в области визуализации. В конечном итоге вот ЭТО мне нужно как конечному пользователю, а не знаменитая кластеризация Hyper-V.
В вопросах виртуализации я еще тот специалист, так что если у вас есть какие-то замечания и дополнения - пишите!
Всего комментариев 2
Комментарии
-
Замечательный пост, спасибо... Недавно сам мучился с миграцией, не сделал... Вот из-за интерфейса диска...
Сейчас бьюсь над другой проблемой..
Есть сервер НР, на нем WinServer 12 c Hyper-V, убивать его нельзя, там AD, DNS, DHCP, на другой виртуалке SQL. Есть необходимость в третьей виртуалке под Oktell, но никак не могу установить на WinServer 2008r2 звук, без него не работает Oktell.
В сервере-12 звук определяется как "Удаленное устройство". В виртуалку никак не могу добавить звуковое устройство. И установить VMW на серв не получится, по причиние вами описанной, не видит процессор для 64-битной системы..
USB виртуалка хайпервишная тоже не видит, так бы воткнул USB гарнитуру и вот тебе звуковое устройство.. Но это не VMW.. )
Есть идеи?Запись от Gari размещена 05.06.2013 в 22:34 -
Спасибо
Ооочень спасибо. Замечательное решение. Иначе надо через VMware (VHD -> VMDK) с помощи "free converter" (Startwind V2V), потом VirtualBox дружит с VMware.Запись от cttnbg размещена 04.07.2015 в 11:31
Обновил(-а) cttnbg 04.07.2015 в 11:35