Одним из широко обсуждаемых преимуществ виртуализации является консолидация — возможность слияния множества систем на одном-двух физических серверах. Организации обычно консолидируют серверы, дабы избежать значительных затрат, которых требует содержание сложной корпоративной инфраструктуры. Но инфраструктура не всегда состоит только из мощного, работающего на пределе возможностей серверного оборудования. Развитие большинства компаний происходило в то время, когда осуществлялась поддержка различных операционных систем, из-за чего во многих производственных средах остались рабочие станции, функционирующие под управлением устаревших систем Windows. На таких машинах работают приложения, использующие традиционную клиент-серверную модель и обслуживающие небольшую группу пользователей, которым необходим определенный набор ресурсов.
Такие системы всегда берут на себя функцию скромных рабочих лошадок. Они стоят в углу, не привлекая к себе внимания администраторов, спокойно гудят и собирают пыль, пока в один прекрасный день древнее оборудование окончательно не выходит из строя. Вместо того чтобы тратить время и силы на попытки восстановить систему (после долгих поисков единственного техника, который что-то когда-то слышал об этом оборудовании), лучше сделать полный снимок данной системы и перенести его на виртуальную машину. В результате можно будет старое оборудование списать, а система начнет новый жизненный цикл, используя современные аппаратные ресурсы.
Я столкнулся с подобной ситуацией, когда в нашем окружении закончился жизненный цикл компьютера, на котором размещалась база данных службы безопасности. Никто из работавших на тот момент сотрудников отдела ИТ не принимал участия в установке системы, поэтому мы мало что знали об этом продукте. Мы столкнулись с тем, что попытка перестроить систему повлечет за собой длительный период простоя, так как нам придется искать новую аппаратную платформу и приглашать специалистов со стороны, которые смогут выполнить перенос данных, а также установку и настройку новой системы.
Мы задумались и о том, насколько разумно с точки зрения безопасности хранить важные данные на физически доступной, переносной системе. Взвесив все за и против, мы решили перенести эту систему на виртуальную машину, созданную на базе гипервизора Microsoft Hyper-V. Оригинальная система представляла собой компьютер класса Pentium D, содержащий 1 Гбайт оперативной памяти и использующий платформу Windows XP Professional. Гипервизор Hyper-V полностью поддерживает эту операционную систему, к тому же мы могли выделить виртуальной машине меньший объем оперативной памяти, так как установленный объем в 1 Гбайт превышал потребности данной системы.
Мы используем роль Hyper-V сервера Windows Server 2008, начиная с апреля 2008 года, однако до сих пор окончательно не перешли от технологии создания образов Symantec Ghost Solution Suite к службе Windows Deployment Services (WDS). У нас имеются все средства и утилиты, необходимые для использования службы Ghost, а окружение WDS находится в «зачаточном» состоянии. Для нас было принципиально важно минимизировать время простоя, поэтому мы приняли решение переносить систему на платформу Hyper-V с помощью механизмов Ghost, не задействуя службу WDS. Мы воспользовались имеющимися навыками и знаниями, не тратя время на изучение механизмов службы WDS для решения одной задачи. Однако для решения более сложной задачи, возможно, пришлось бы разобраться в принципах работы с WDS.
Идея заключалась в том, чтобы установить на виртуальную машину агент службы Ghost, и тогда система сможет взаимодействовать с сервером GhostCast. Мы распространили клиент для систем DOS по сети, с помощью службы WDS, работающей на платформе Windows 2003 R2 в смешанном режиме. Мастер Symantec Ghost Boot Wizard позволяет создавать загружаемые образы дисков, используя пакетные сетевые драйверы или сетевые драйверы NDIS 2.0, совместимые со службой Microsoft Remote Installation Services (RIS). Образы, создаваемые службой Ghost, хранятся на центральном сервере GhostCast, к которому подключаются клиенты. Данный сервер легко настраивается и не требователен к ресурсам, однако при добавлении нового сетевого интерфейса каждый раз придется создавать новый загружаемый образ.
Вместо того чтобы искать совместимые драйверы для виртуальных сетевых устройств на сервере Hyper-V, мы решили немного оптимизировать процесс и задействовать среду предварительной установки Windows Preinstallation Environment (WinPE). Использование WinPE в данной ситуации давало нам следующие преимущества:
- пакет WinPE распространяется бесплатно;
- данная среда построена на ядре Windows, поэтому обладает необходимой гибкостью;
- данная среда поддерживает различные аппаратные платформы и устройства;
- данная среда использует самые актуальные драйверы устройств;
- обращение к загружаемым образам WinPE может выполняться через CD-ROM, через образ ISO или через сеть с помощью службы WDS.
Установка
Естественно, для подготовки к установке необходимо выполнить некоторые действия. Для создания образа WinPE с помощью клиента Ghost и переноса его на виртуальную машину Hyper-V потребуются следующие средства.
- Пакет Windows Automated Installation Kit (WAIK), который можно бесплатно загрузить с сайта Microsoft (http://www.microsoft.com/downloads/details.aspx?FamilyID=94bb6e34-d890-4932-81a5-5b50c657de08).
- Сервер Symantec GhostCast. В роли сервера может выступать любая рабочая станция с установленной серверной службой Ghost, обладающая дисковой емкостью, достаточной для хранения образов. Здесь совсем не нужен мощный корпоративный сервер. Версия службы Ghost не имеет принципиального значения, однако новейшие версии обеспечивают более широкую поддержку файловых систем. В качестве сервера Ghost может использоваться и виртуальная машина: поддерживаемая платформа не имеет значения.
- Приложение Ghost32.exe, размещенное на сервере GhostCast. Это 32-разрядная версия клиентской программы, которая работает как самостоятельное приложение.
- Виртуальная машина Hyper-V. Данной виртуальной машине должен быть выделен сетевой адаптер, но в том случае, если вы не планируете использовать загрузку по сети, тип адаптера может быть выбран произвольно. Виртуальная машина также должна обладать хотя бы одним виртуальным диском и иметь соединение с сервером GhostCast через виртуальную сеть. В качестве хост-системы могут применяться платформы Server 2008 или Hyper-V Server.
- Образ Vmguest.iso — образ компакт-диска, содержащий компоненты интеграции гостевых систем Hyper-V и драйверы для виртуальной аппаратной платформы, обнаруженные в папке C:\Windows\System32 хост-системы Hyper-V.
- Служба WDS, запущенная на сервере Windows 2003 SP1 или Server 2008. Наличие службы WDS не является обязательным, ведь вы можете использовать загружаемые компакт-диски (об этом ниже), однако с ее помощью можно сделать процесс распространения образов WinPE в сети более удобным.
Для начала загрузите и установите пакет WAIK на административную машину; эту задачу может выполнять как сервер GhostCast при условии, что поддерживается его операционная система, так и любая другая рабочая станция. Пакет представляет собой образ ISO, который вы можете монтировать, чтобы извлечь его содержимое, или записать на диск, используя любую бесплатную программу, например InfraRecorder (http://infrarecorder.org/). Если программа не запускается автоматически, в меню автозагрузки выберите пункт Windows AIK Setup и дважды щелкните мышью на файле StartCD.exe.
После завершения установки пакета WAIK создайте рабочую структуру WinPE, выбрав в меню Start пункт All Programs (в системах Windows Vista и Server 2008), Microsoft Windows AIK, Windows PE Tools Command Prompt. Откроется окно командной строки, при этом каталоги, содержащие различные средства WinPE, добавляются в системный путь, чтобы облегчить доступ к ним. Для создания структуры WinPE введите команду copype:
copype x86 c:\winpe-x86
Как показано на экране 1, данная команда создает папку C:\winpe-x86 и распаковывает в нее файлы, необходимые для работы 32-разрядной версии WinPE. В их состав входят: файл winpe.wim, папка Mount, которую можно задействовать для монтирования образов Windows Imaging Format (WIM) с помощью технологии ImageX, папка ISO, содержащая все файлы, необходимые для создания образа WinPE ISO, и файл BIN, необходимый для того, чтобы сделать образ ISO загрузочным. Если вы хотите использовать 64-разрядную загружаемую среду, замените выражение x86 в коде команды на amd64, но имейте в виду, что любые приложения и драйверы, добавляемые в образ, также должны иметь 64-разрядную архитектуру.
Для настройки образа необходимо просмотреть его содержимое. В том же окне командной строки введите следующую команду:
imagex/mountrw c:\winpe-x86\
winpe.wim 1
c:\winpe-x86\mount
Как показано на экране 2, эта команда монтирует первый образ, содержащийся в файле WIM, в папку C:\winpe-x86 в режиме «чтение/запись». Перейдите в эту папку, и вы увидите структуру файла WinPE.
Следующим шагом будет добавление драйверов платформы Hyper-V в образ, чтобы при загрузке виртуальной машины в среде WinPE у вас была возможность работать с сетью и аппаратными средствами виртуальной машины. Драйверы Hyper-V могут использоваться для работы виртуальных сетевых карт, однако для загрузки виртуальной машины Hyper-V по сети необходимо установить сетевую карту, для которой не требуются дополнительные драйверы. С другой стороны, достаточно просто добавить драйверы в образ, и в дальнейшем данный шаг обеспечит поддержку различных аппаратных платформ.
Смонтируйте образ vmguest.iso с помощью утилиты управления виртуальными дисками (например, DAEMON Tools, http://www.daemon-tools.cc/eng/home) или распакуйте его с помощью WinRAR или любого другого приложения, которое может читать содержимое файлов ISO. Далее в окне командной строки WinPE введите следующую команду:
peimg/inf=w:\support\x86\en-us\
*.inf c:\winpe-x86\mount
В данном случае W:\ — имя виртуального диска, на который монтируется образ. Вам придется заменить данный путь в соответствии с настройками системы. Затем скопируйте файл ghost32.exe c помощью команды:
xcopy PATH\ghost32.exe c:\winpe-x86\
mount\windows\system32
Компоненты WinPE по умолчанию при загрузке размещаются в папке \Windows\System32, поэтому, чтобы упростить процесс загрузки службы ghost32.exe, логично будет переместить данный файл в эту папку. Чтобы сохранить изменения, воспользуйтесь следующей командой (см. экран 3):
imagex/unmount/commit
c:\winpe-x86\mount
Если вы забудете указать параметр /commit, внесенные изменения не будут сохранены.
Завершение настройки среды WinPE
После завершения настройки среды WinPE у вас есть два варианта. Первый — создать загружаемый образ ISO из модифицированного файла WIM, и в дальнейшем либо записать этот образ на диск, либо перенести его на виртуальную машину с помощью менеджера Hyper-V Manager. Процесс записи диска занимает больше времени, чем использование образа ISO, однако виртуальные машины Hyper-V могут работать с физическими носителями, и в дальнейшем вы сможете задействовать записанный диск для настройки других систем. Чтобы создать образ ISO, введите следующую команду в окне командной строки WinPE:
oscdimg -bc:\winpe-x86\etfsboot.com -n
-o c:\winpe-x86\iso c:\winpe-x86.iso
В результате выполнения команды создается образ winpe-x86.iso. Для того чтобы перенести его на виртуальную машину, убедитесь, что хост-система Hyper-V имеет доступ к месту хранения данного образа, и откройте менеджер Hyper-V Manager. Щелкните правой кнопкой мыши на узле VM, и в контекстном меню выберите пункт Settings. В левом окне в поле IDE Controller 1 нужно выбрать значение DVD Drive. После этого в правом окне выберите тип привода Image file и укажите путь к образу ISO. Нажмите OK, чтобы подтвердить изменения.
Второй вариант заключается в том, чтобы после настройки среды WinPE с помощью службы сделать WDS ее доступной через сеть. Для этого необходим сервер (Windows 2003 SP1 либо Server 2008). Скопируйте файл C:\winpe-x86\winpe.wim на сервер WDS и запустите на нем консоль управления WDS.
Разверните дерево и щелкните правой кнопкой мыши на узле Boot images. В контекстном меню выберите пункт Add Boot Image, укажите путь к файлу winpe.wim и нажмите OK, а затем Next. Укажите имя образа и его описание (или подтвердите имена, предложенные «по умолчанию») и дважды щелкните мышью на кнопке Next. Служба WDS добавит файл образа в список доступных загружаемых образов. Убедитесь, что виртуальная машина находится в той же подсети, что и сервер WDS, выполните ее загрузку по сети, после чего выберите из меню загрузки нужный образ (см. экран 4).
Подготовка физической системы
Настало время подготовить физическую систему к созданию снимка. Стоит начать с очистки системы. Я в свое время этого не сделал, и мне пришлось пройти через кошмарный процесс исправления ошибок установки. Откройте окно Add/Remove Programs и удалите все пакеты драйверов — графические драйверы, сетевые драйверы и т. д. — они не понадобятся на виртуальной машине. Оставьте лишь средства, обеспечивающие базовую функциональность.
Кроме того, стоит провести очистку и дефрагментацию жесткого диска, так как оптимизация размещения данных на диске позволит уменьшить количество возможных проблем во время переноса образа. Кроме того, откройте окно System Configuration (в меню старт Start выберите пункт Run и введите команду msconfig) и отключите все приложения автозагрузки. До тех пор пока на виртуальную машину не будет установлен пакет Hyper-V Integration Services, ее функциональные возможности будут доступны лишь частично, поэтому лучше избежать автоматической загрузки приложений при первом запуске виртуальной машины.
Если в целевой физической системе установлен жесткий диск IDE, то при его переносе на виртуальный диск IDE вряд ли возникнут проблемы. Однако если в физической системе установлен контроллер RAID или SATA, то использование процедуры прямого переноса образов приведет к тому, что при загрузке виртуальной машины появится «синий экран». Это происходит из-за того, что у загрузочного диска меняется тип контроллера. Скорее всего, вы столкнетесь с подобной проблемой в старых операционных системах, таких как Windows XP и Windows 2000, — в Vista подобных сбоев быть не должно.
Однако мы пытаемся сохранить устаревшие системы, и, скорее всего, вы будете иметь дело с одной из более ранних операционных систем. Поэтому вы можете сберечь немало времени и нервов, применив утилиту Sysprep. Вызвав с помощью команды Sysprep короткий процесс настройки, вы сможете избежать проблем с «синим экраном» при первом запуске виртуальной машины после размещения образа. Если вам хочется найти более изящное решение, попробуйте скопировать содержимое папки \support\x86\en-us на жесткий диск физической машины до запуска утилиты Sysprep, и тогда драйверы виртуальных устройств будут обнаружены гостевой системой в процессе поиска устройств plug-and-play. Тем не менее вам все равно придется устанавливать пакет Integration Services после переноса образа — помимо драйверов, системе требуется синхронизация времени, служебных настроек и процессов обмена данными.
Из-за излишней спешки при проведении миграции системы я не использовал утилиту Sysprep и столкнулся с проблемой «синих экранов» на виртуальной машине. Процесс исправления ошибок установки позволил решить проблему, однако его выполнение заняло так много времени, что куда быстрее было бы вернуться на шаг назад, запустить утилиту Sysprep и заново создать образ.
Размещение образа
Завершив подготовку физической системы, выключите ее и загрузите клиентское приложение Ghost. Для этого можно использовать образ WinPE ISO, созданный ранее. Или, если старая система поддерживает загрузку по сети, открыть ей доступ к образу, размещенному на сервере WDS. Вы даже можете перенести загружаемый образ ISO на USB-ключ и загрузить физическую систему с данного ключа — согласитесь, отличное переносное решение.
Для создания образа следует открыть серверное приложение GhostCast и выбрать пункт Create Image. Задайте имя сессии и имя файла. После этого со стороны клиента обратитесь к серверу GhostCast, выберите тип подключения Unicast и введите имя сессии, чтобы начать процесс создания образа. После завершения процесса следует открыть полученный файл с помощью инструмента Ghost Explorer в системе GhostCast и убедиться в корректности созданных файлов образа.
После создания образа запустите виртуальную машину на хост-системе Hyper-V и загрузите на ней оболочку WinPE (см. экран 5). Помните, что при выполнении загрузки по сети нужно будет назначить виртуальной машине сетевой адаптер, для которого не требуются дополнительные драйверы. После загрузки системы вы увидите окно командной строки. Перейдите в папку X:\Windows\System32 и введите команду ghost32.exe для запуска службы Ghost (см. экран 6).
Если виртуальная машина и сервер GhostCast находятся в различных подсетях, придется указать IP-адрес сервера вручную. Если вы планируете часто работать с образами систем, расположенных в различных подсетях, можно прописать адрес IP на маршрутизаторе, и тогда вам не придется каждый раз вводить адрес сервера. Дождитесь завершения процесса восстановления образа и перезагрузите виртуальную машину. Теперь вам осталось лишь установить компоненты службы Integration Service — и работа завершена.
Как поступить в следующий раз?
Этот метод миграции P2V, строго говоря, особым изяществом не отличается. Однако среди его достоинств надо отметить высокую надежность — если что-то вдруг случится с виртуальной машиной, то благодаря использованию службы Ghost у вас останется двойной резерв: исходная машина (не стоит сразу же списывать ее после успешного завершения миграции!) и созданный образ, так что вы сможете избежать потери данных.
Данный метод также позволяет познакомиться с возможностями служб WinPE и WDS. Вместе они образуют мощное сочетание и могут сформировать базис для широкого набора различных инструментов, предназначенных для обслуживания поддерживаемых систем. Служба WinPE является отличной платформой для распространения полезных утилит по всем уголкам корпоративной сети, физической или виртуальной, — по аналогии с приложением ghost32.exe.
Буду ли я использовать данный подход в дальнейшем? Да, до тех пор, пока у нас используется инфраструктура Ghost. Когда мы полностью перейдем на систему WDS, в ход пойдут уже другие средства. Существуют способы конвертирования физического жесткого диска в виртуальный диск VHD, который можно установить на виртуальную машину Hyper-V. Это более простой (хоть и занимающий примерно столько же времени) процесс, который, безусловно, стоит иметь в виду. Другой, более рациональный подход заключается в использовании системы System Center Virtual Machine Manager (SCVMM), которая поддерживает механизмы миграции P2V. Обратной стороной медали является высокая стоимость SCVMM, и компании, которые на данном этапе только знакомятся с возможностями Hyper-V, могут быть не готовы к столь значительным вложениям. Однако, если вы рассматриваете Hyper-V в качестве основной платформы виртуализации, пакет SCVMM может стать для вас бесценным средством управления и должен быть непременно изучен.
Джеймс Беннен (james@bannan.com.au) — системный и сетевой менеджер в институте K-12 в Мельбурне (Австралия). С 2003 года пишет статьи по клиентским и серверным платформам Windows
Экран 1. Создание рабочей структуры WinPE
Экран 2. Монтирование образа WIM в режиме «чтение/запись»
Экран 3. Сохранение изменений после добавления драйверов
Экран 4. Выбор загружаемого образа в системe WDS
Экран 5. Загрузка настроенного образа WinPE