четверг, 15 октября 2009 г.

Загрузка Microsoft Hyper-V Server R2 с flash накопителя

Многим специалистам в области виртуализации известно о возможности загрузки и работы гипервизора VMware ESXi напрямую с flash накопителя.

Незадолго до релиза Hyper-V Server R2, Microsoft заявила о предоставлении аналогичной возможности своим OEM партнерам. До этого момента все попытки создания чего-то подобного пресекались одним неприятным фактом - установщик просто не видел никаких устройств со сменными носителями на этапе выбора места установки ОС.

Что же поменялось с выходом R2?

Да практически ничего. Установщик все также слеп. Однако, Microsoft добавила поддержку виртуальных дисков (в формате .vhd) на которых можно создавать разделы и устанавливать ОС, как если бы это были отдельные физические диски. Единственное требование - наличие еще одного системного раздела на физическом накопителе с записанным туда загрузчиком (bootmgr), который бы мог монтировать витуальный диск и запускать ОС.

Суть метода заключается в первоначальной установки ОС на поддерживаемый носитель (физический и виртуальный диски) с последующим переносом всех необходимых файлов, загрузочных секторов и загрузчика на flash накопитель. Для тестовых целей я устанавливал Hyper-V, используя VMware Workstation 6.5, т.к. он умеет презентовать usb устройства с хоста виртуальной машине. В качестве объекта эксперимента выступала моя новая 16Гб флешка, хотя должно хватить и 8Гб.

Установка ОС на виртуальный диск
Загрузитесь с установочного диска Microsoft Hyper-V Server R2.

Выберите язык установщика и языковые настройки. Запустите командную консоль cmd.exe, нажав комбинацию клавиш Shift + F10, либо в окне Install now выбрав Repair computer -> use recovery tools... -> Command Prompt.

В командной консоли запустите Diskpart и создайте новый раздел на диске:
select disk <НОМЕР_ДИСКА>
create partition primary
select partition 1
assign
format fs=ntfs label="Boot Partition"

Номер диска можно посмотреть при помощи команды list disk. Также можете выполнить detail partition, чтобы узнать букву, присвоенную разделу.

Создайте виртуальный диск на новом разделе и смонтируйте его:
create vdisk file=<ПУТЬ_К_ФАЙЛУ> maximum=<РАЗМЕР_ДИСКА> type=fixed
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
attach vdisk

Закройте командную консоль и продолжите установку Hyper-V. На экране выбора расположения ОС укажите созданный виртуальный диск. Установщик выведет предупреждение о том, что Windows не может быть установлена на данный диск. Можете его проигнорировать.
После завершения процесса установки загрузитесь в ОС и обновите/добавьте драйверы для устройств.

Если вы планируете использовать создаваемый образ для загрузки нескольких серверов или на сервере с другой аппаратной конфигурацией, то перед копированием выполните:
sysprep /generalize /shutdown

Sysprep при следующей загрузке системы (с флешки) выполнит генерацию нового SID компьютера, обновит список устройств, очистит журнал событий и удалит профили пользователей.

Копирование образа на flash накопитель
После выполнения Sysprep, загрузите систему с установочного диска Hyper-V Server R2 и зайдите в консоль.

Подключите flash накопитель. Запустите Diskpart.exe и при необходимости создайте и отформатируйте на флешке новый раздел:
select disk <НОМЕР_FLASH_НАКОПИТЕЛЯ>
clean
create partition primary
select partition 1
assign
format fs=ntfs label="Boot Flash"


Пометьте созданный раздел как активный:
active

Подмонтируйте виртуальный диск и назначьте ему букву.
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
attach vdisk
assign


Выйдите из Diskpart. Запишите на flash накопитель загрузочный сектор:
bootsect /nt60 <БУКВА_FLASH_НАКОПИТЕЛЯ>

Скопируйте загрузчик с виртуального диска на флешку:
bcdboot <БУКВА_ВИРТУАЛЬНОГО_ДИСКА>\Windows /s <БУКВА_FLASH_НАКОПИТЕЛЯ>
Запустите Diskpart еще раз и отмонтируйте виртуальный диск
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
detach vdisk


Скопируйте все содержимое физического диска на флешку (включая файл виртуального диска .vhd):
robocopy /copyall <БУКВА_РАЗДЕЛА_ДИСКА> <БУКВА_FLASH_НАКОПИТЕЛЯ>

Теперь можете выключить компьютер и вынуть из него жесткий диск. Зайдите в bios, и в качестве первичного загрузочного устройства выберите flash накопитель, а также проверьте, что включены Intel VT-x/AMD-V и DEP, затем перезагрузитесь, и вуаля!

Хочу отметить, что несмотря на низкую латентность flash накопителей, время загрузки гипервизора существенно увеличивается по сравнению с обычным (sata) жестким диском. Однако, если вас это не пугает, а также в наличии флешка с большой емкостью, можете и Windows 7/Windows Server 2008 R2 на нее установить.

Альтернативный вариант установки Hyper-V Server R2 с использованием утилит из Microsoft WAIK вы можете найти в данной статье.

пятница, 2 октября 2009 г.

Сетевая загрузка бездискового клиента Thinstation для VMware View

Внедрение терминальных рабочих станций (в классическом варианте или новомодном VDI) несет в себе много преимуществ для большинства компаний. Однако, большие первоначальные затраты на покупку оборудования и программного обеспечения/лицензий могут отпугнуть потенциальных потребителей данного решения. Не последнюю роль в общей стоимости играет цена самих терминальных клиентов - устройств с которых осуществляется удаленный доступ к терминальному серверу.

Понятно, что не всем по карману брендовые тонкие клиенты, как например HP T5735, цена на которые близка к стоимости среднего офисного компьютера; вариант же с перенастройкой существующих рабочих станций пользователей не всегда применим, поскольку требует больших усилий по отключению всех ненужных программ и ограничению функционала, поддержке системы, установке обновлений для ОС и антивирусной защиты. Кроме того, в случае использования Windows, вы не избавляетесь от необходимости покупки лицензий на ОС. Печально, однако недорогой и практичный выход из данной ситуации есть.

Уже давно и прочно закрепилась во всех современных сетевых картах возможность загрузки по сети (PXE - Preboot eXecution Environment). Данная технология позволяет избавиться от необходимости хранить на локальных носителях какую бы то ни было копию загружаемой ОС, а использовать только лишь сетевую копию, загружаемую с сервера каждый раз при старте компьютера. Функционал PXE не ограничивается только лишь клиентскими компьютерами, при желании вы и серверы можете таким образом загружать (да хоть VMware ESXi). И, пожалуй, самым популярным на сегодняшний день клиентом, поддерживающим загрузку по сети, является Thinstation.

Маленький, но крайне функциональный тонкий клиент поддерживает работу с большим количеством протоколов удаленного доступа: Telnet, SSH, Microsoft RDP, Citrix ICA, X Windows и, конечно же, VMware View. Большим преимуществом Thinstation является то, что он может быть легко сконфигурирован под ваши конкретные нужды; при желании вы сами можете собрать загрузочный образ, содержащий необходимые драйверы, программы и файлы настроек.

В этой статье я приведу пример подготовки подобного образа и настройки PXE сервера для загрузки тонких клиентов по сети, использующихся для подключения к VMware View Manager.

Создание собственного образа
Прежде всего нам потребуется загрузочный образ Thinstation. Конечно, вы можете собрать его вручную, но гораздо проще воспользоваться одним из online конфигураторов TS-O-Matic. В качестве примера я использую сервер Denmark.

Сам конфигуратор состоит из нескольких разделов:
Hardware - позволяет указать драйверы, которые требуется включить в образ.
Applications - задает приложения (терминальные клиенты, оконные менеджеры, дополнительные программы). В данном разделе обязательно выберите компонент vmview в Additional contributed packages.
Parameters - содержит различные настройки (пароли для учетных записей, разрешение экрана и т.п.)
Splash и Background - фоновое изображение в момент загрузки и при работе клиента.
Load Files - загрузка файла с требуемой конфигурацией образа, если не хотите все указывать вручную.

После завершения настроек нажмите кнопку Build и дождитесь, пока система создаст нужный образ, а затем нажмите Write image.

На странице загрузки, перейдите в раздел Build и скачайте thinstation.conf.example - файл настроек тонкого клиента. Затем перейдите в раздел Etherboot и скачайте файлы thinstation.nbi и thinstation.nbi.zpxe.

Теперь самое время отредактировать файл настроек. Для этого переименуйте его, сначала, в thinstation.conf.network, а затем откройте в любом текстовом редакторе.

Найдите раздел, начинающийся с комментария "# VMWare View options". Раскоментируйте нужные строчки с настройками подключения, удалив начальный символ "#", а также заменив "#" в каждой строчке на цифру - порядковый номер, начиная с 0, под которым данный пункт будет присутствовать в меню тонкого клиента.

В итоге у вас должно получиться что-то похожее на:

SESSION_#_TITLE - задает отображаемое имя в меню тонкого клиента
SESSION_#_TYPE - тип доступа
SESSION_#_AUTOSTART - включение/отключение автоматического выбора данного варианта при загрузке клиента
SESSION_#_VMVIEW_SERVERURL - адрес сервера VMware View.
SESSION_#_VMVIEW_FULLSCREEN - работа в полноэкранном режиме.

Если у вас есть желание - можете еще покопаться в настройках, благо, много понятно с первого взгляда.

Настройка сервера
После подготовки загрузочного образа, вам понадобится настроить на сервере DHCP и TFTP. В качестве сервера я использовал Windows Server 2003.

Для загрузки PXE клиента используется протокол TFTP (работающий на порту UDP 69). В Windows Server 2003 сервер TFTP входит в состав Remote Installation Services, либо, если у вас установлен SP2 - Windows Deployment Services. Так, что если вы не хотите заморачиваться с установкой, приведенной ниже, просто установите один из этих компонентов из мастера Установки/Удаления компонентов Windows, которые заодно установят и TFTPD, но не выполняйте первоначальную конфигурацию служб, а сразу переходите к редактированию реестра и добавлению корневой папки.

Для остальных же небольшая инструкция по установке TFTPD вручную.

Для начала, вам понадобится установить Windows Server 2003 Resource Kit. Загрузить его можно отсюда.

После этого, вставьте диск с дистрибутивом Windows Server 2003 в CD привод, откройте командную консоль и выполните:
expand X:\i386\tftpd.ex_ %systemroot%\tftpd.exe
Предполагается, что X - буква вашего CD привода.

После установки TFTPD вам потребуется зарегистрировать его в качестве службы Windows. Выполните следующую команду:
instsrv tftpd %systemroot%\tftpd.exe -a "NT AUTHORITY\NetworkService"
Ключ -a позволяет указать учетную запись из-под которой будет запускаться служба. В целях безопасности не рекомендуется запускать TFTPD из-под SYSTEM.

Теперь создайте папку, например: C:\TFTPRoot, которая будет является корневой для вашего сервера.

Запустите редактор реестра regedit и откройте ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\tftpd. Внутри tftpd создайте новый раздел Parameters. Внутри раздела создайте параметр Directory с типом REG_SZ, в качестве значения укажите путь к созданной корневой директории TFTP сервера.

Теперь запустите службу, запустив оснастку службы и найдя там tftpd, или набрав в консоли:
net start tftpd

Скопируйте в корневую папку три ранее загруженных файла: thinstation.nbi, thinstation.nbi.zpxe и thinstation.conf.network.

При загрузке по сети, PXE клиент посылает широковещательный запрос в поисках DHCP сервера, который мог бы сообщить клиенту необходимые сетевые настройки (IP-адрес, маску подсети, Default Gateway, адреса DNS серверов и т.п.). Дополнительно, DHCP сервер может передать настройки с DHCP Option 60, 66 и 67, сообщающие, что клиент должен скачать с определенного сервера загрузочный образ и загрузиться с него. Если такие настройки не передаются, клиент пытается послать еще один широковещательный запрос на порт UDP 4011 с целью обнаружения PXE сервера (так, например, работает WDS сервер Microsoft). В нашем случае мы будем использовать вышеперечисленные опции.

В качестве DHCP сервера я использую стандартный сервер, входящий в Windows Server 2003. Предположу, что вы уже установили нужную службу, создали область (scope), определили для нее диапазон адресов и исключений. Для дальнешей настройки откройте оснастку управления DHCP, щелкните правой кнопкой по имени сервера и выберите Set Predefined Options.

В открывшемся окне Predefined Options and Values нажмите Add... В окне Option Type введите имя (Name) "PXEClient", укажите тип опции (Data type) "String" и номер (Code) "060". Нажмите OK.
Вернувшись в предыдущее окно, в поле String укажите PXE Client. Нажмите OK.
Теперь раскройте созданную вами области, щелкните правой кнопкой мыши по Scope Options и выберите Configure Options.
В списке на вкладке General активируйте опцию "060 PXEClient" и убедитесь, что String value имеет значение "PXE Client".
Активируйте опцию "066 Boot Server Host Name", указав в String value адрес вашего TFTP сервера.
Активируйте опцию "067 Bootfile Name", указав в String value файл загрузчика thinstation.nbi.zpxe.
На этом настройка сервера закончена, можно приступать к тестированию.

Загрузка тонкого клиента
Для тестирования я использовал виртуальную машину. В качестве загрузочного устройства был выбран виртуальный сетевой адаптер.
Не прошло и минуты, как на экране появилось заветное меню тонкого клиента:
Просто и со вкусом.