Первые Best Practice при использовании Hyper-V

Hyper-V была создана с нуля, поэтому к ней нужно привыкать так же с нуля.
Первый нюанс, с котором я сталкнулся — это использование виртуальных сетей. Если раньше, в  Virtual Server 2005 R2, у меня вирутальные сетевые карты были подключены к тому же интерфейсу, который был основным для хостовой машины и проблем особо не наблюдалась, то после перехода на Hyper-V и использовании той же конфигурации, мы сталкнулись с проблемами.
 
На одной из виртуальных машин работает контроллер домена. Хост машина входит в этот домен, и должна авторизоваться на этот самом DC. Так вот через несколько часов после старта хост-машина просто "потеряла" соединение с доменом. Выглядело это как проблемы с DNS — не возможно найти DC, ошибки получения GroupPolicy, крайне долгий вход в систему и прочее. При этом все остальные компьютеры в сети отлично авторизовались, DC был доступен.
После долгих проб и ошибок пришла идея разнести основной сетевой интерфейс хост-сервера и виртуальные сетевые интерфейсы гостевых машин по разным физическим интерфейсам. Данная мера помогла.
 
Вывод: рекомендуется разделять основной сетевой интерфейс хост-сервера и виртуальные интерфейсы гостевых машин по разным физическим интерфейсам.
Реклама

Миграция с Virtual Server 2005 R2 на Hyper-V

 
В связи со скорым выходом окончательной версии Hyper-V — нового средства виртуализации, встроенного в Windows 2008 Server, думаю у многих встанет вопрос о том, как максимально безболезнено перейти с Virtual Server 2005 на Hyper-V.
Процесс миграции достаточно прост, т.к. Hyper-V умеет работать с виртуальными дисками (.vhd) Virtual Server 2005 R2. но при этом, есть несколько подводных камней, знание которых поможет съэкономить массу времени и нервов.
Я буду описывать процесс миграции на основе Hyper-V RC1. Процесс разбит на 3 части: Подготовительная, Установка Windows 2008 Server и Hyper-V и Настройка виртуальных машин.

Ресурсы:
 
Часть 1. Подготовительная.
Перед началос процесса миграции необходимо произвести ряд подготовительных действий, начать которые я крайне рекомендую с прочтения документации, и в особоенности системных требований к Windows 2008 Server с ролью Hyper-V.
Основные требования к "железу", на котором будет работать Hyper-V — поддержка процессором и материнской платой опций Intel VT и Disable Execution Bit для Intel-овских компонентов и AMD-V и No Execute для AMD-шных.
После прочтения документации и подготовки необходимого аппаратного обеспечения, можно приступать к работе.
  1. Необходимо получить последнюю версию Hyper-V и средств управления. На момент написания статьи был доступен Hyper-V RC1.
  2. В случае, если это первый сервер под управлением Windows Server 2008, и вы используете Windows XP в кач-ве рабочей станции для управления, необходимо озаботиться установкой клиента RDP 6.0 (или выше) для подключения к новому серверу. Установить средства управления Hyper-V на Windows XP нельзя. Средства управления hyper-V можно установить, если управление будет производиться с рабочей станции под управлением Windows Vista (не ниже SP1).
  3. Все гостевые системы Virtual server 2005 R2 необходимо обновить:
    — Windows Server 2003: не ниже SP2
    — Windows Server 2000: не ниже SP4
    — Windows XP: не ниже SP3
  4. Следует помнить, что после включения виртуальных машин на хост-машине с Hyper-V, в них появится новая (или новые) сетевые карты, а те, что использовались с Virtual Server 2005, будут недоступны. В связи с этим необходимо проделать такие же необходимые операции, как и в обычном сервере при смене сетевой карты. Минимально что я бы рекомендовал — удалить все назначенные в ручную IP-адреса. Максимально — удалить адреса и удалить все сетевые интерфейсы из устройств перед выключением виртуальной машины.
  5. Запомнить или записать настройки всех виртуальных машин (объем памяти, диски и пр.).
  6. Удалить из всех виртуальных машин VM Additions.
  7. Выключить все виртуальные машины. Hyper-V не поддерживает виртуальные диски Virtual Server 2005 R2 с сохраненным состоянием системы (Save).
  8. Выключить сервис Virtual Server и сделать полный бакап системы и виртуальных дисков в случае, если миграция будет происходить in-place, т.е. Hyper-V будет работать на том же сервере, на котором работал Virtual Server 2005 R2.
 
Часть 2. Установка Windows Server 2008 с ролью Hyper-V
Подробно описывать сам процесс установки не буду, опишу лишь те части его, на которые необходимо обратить внимание.
  1. Установить Windows Server 2008 x64 Standard, Enterprise или Datacenter на хост-машину в полном или Core-режимах.
  2. Для бОльшей стабильности и производительности крайне рекомендуется установить драйвера на компоненты сервера от производителя, в особенности это касается сетевых карт и различных RAID-контроллеров. От себя добавлю, что не сморя на то, что в Intel-овском наборе PROset для встроенных сетевых карт на сайте не значится поддержка Windows Server 2008, на самом деле она там есть, что написано в readme-файле этого набора.
  3. Установить обновление, соотвествующее текущей версии Hyper-V (на момент написания статьи — Windows6.0-KB950049-x64.msu)
  4. Через "Диспетчер сервера" или "Панель Управления" — "Программы и компоненты" добавить роль Hyper-V.

Часть 3. Настройка Hyper-V и виртуальных машин

  1. Необходимо мастером создать каждую из существовавших виртуальных машин с такими же параметрами, как они были раньше. В параметрах дисков необходимо выбрать файл .vhd, соотвутствующей каждой вирутальной машине. Крайне рекомендуется ен включать
  2. После этого необходимо добавить необходимое кол-во виртуальных SCSI-контроллеров, сетевых интерфейсов, процессоров и пр. Особенно внимательно надо отнестить к сетевым интерфейсам. См. Примечание в конце статьи.
  3. Запустить виртуальную машину. Надо быть готовым к тому, что:
    — в случае, если используется несколько виртуальных дисков, буквы дисков могут быть изменены, т.к. в системе могут появиться новые контроллеры.
    — виртуальный сервер запуститься отключенным от сети, в случае использования Native виртуального сетевого адаптера. См. Примечание в конце статьи.
  4. Запустить установку компонентов интеграции. Для этого в окне управления виртуальной машины выбрать "Действие" — "Вставьте установочный диск служб интеграции"
    image
  5. В Windows Server 2003 процесс установки будет проивходить в 2 этапа: в начале будет заменен HAL системы, потребуется перезагрузка. После перезагрузки будет запущен процесс установки самих компонентов интеграции. После установки вновь потребуется перезагрузка:
    замена HAL image image
    Замечание. После замены HAL и перезагрузки может появится вот окно Waiting for previous device installation to complete:
    image
    В этом случае надо завтрыть окно "Мастера нового оборудования" и установка продолжится автоматически.
  6. Необходимо назначить IP-адрес сетевому адаптеру (или прописать нужный МАС-адрес в настройках виртуальной машины) в виртуальных машинах и проверить назачение букв дисков.
  7. Проверить запуск всех сервисов каждой виртуальной машины.
Примечание. Legacy сетевые карты и обычные
В Hyper-V доступны 2 вида сетевых карт, отмечу различные особенности каждой их них:
  1. Legacy сетевая карта эмулирует сетевую карту DEC 21140, что позволяет использовать её без драйверов вплоть до Windows 95. "Обычная" виртуальная сетевая карта используется собственный драйвер, доступный только с компонентами интеграции Hyper-V. Как следствие, "обычная" карта будет работать только в тех ОС, для которых есть компоненты интеграции.
  2. Legacy сетевая карта позволяет производить установку ОС из сети. Обычная, как следствие пункта 1, нет.
  3. Legacy сетевая карта имеет крайне низкую производительность по сравнению с "обычной" сетевой картой

Дополнительная информация по теме: Работа с унаследованными (Legacy) сетевыми адаптерами в Windows XP и Server 2003 x64

SPItemEventProperties и ItemUpdating, или Очередной привет от Sharepoint

 
У списка и типа содержимого есть различные Receivers — ItemUpdating, ItemAdding и т.д.
Как известно из SDK, чтобы перехватывать эти события, необходимо создать свой класс и переопределить в нем нужные методы.
Вот так выглядет ItemUpdating:
public override void ItemUpdating(SPItemEventProperties properties)
{
    properties.Cancel = false;
}
Как подсказывает тот же SDK, переменная properties содержит 2 важных, особенно для ItemUpdating, свойства — AfterProperties и BeforeProperties.
 
Но самое интересное, что эти 2 свойства работаю совсем не так, как ожидается.
Для AfterProperties справедливо следующее:
1. properties.AfterProperties.ChangedProperties.Count всегда равно 0
2. AfterProperties содержит в себе все поля элемента, вне зависимости от того, менялись они или нет. Доступ к ним производится через операцию взятие индекса ([]), н-р properties.AfterProperties["Title"]
 
Для BeforeProperties справделиво только одно — оно всегда пустое. Не равно null, а просто пустое. Т.е. не содержит никаких полей.
 
В связи с этой особенностью, если есть необходимость сравнивать значения до изменения и после, нужно сравнивать properties.AfterProperties["имя_поля"] (это значение после изменения) и properties.ListItem["имя_поля"] (это будет значение до изменения)
 
PS Данное замечание спаведливо для типов содержимого списоков и самих списков. В библиотеке документов и типов содержимого основанных на документах дело обстоит иначе.
PS2 Тоже интересная ссылка по теме (ENG) http://www.sharepoint-tips.com/2006/08/bad-news-synchronous-list-events-bug.html