Установка и настройка Debian Linux под Hyper-V

Установка и настройка Debian Linux под Hyper-V

  • Comments 21
  • Likes

Давайте продолжим наши упражнения в виртуализации Linux систем под Hyper-V. Сегодня мы займемся установкой и настройкой Debian 6 под Hyper-V. Все что я буду писать ниже можно применять не только к Debian 6, но и к Debian 5 и к остальным дистрибутивам основанным на Debian таким как Ubuntu, Kubuntu, Xubuntu, Ebuntu.

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

Установка Debian 6 под Hyper-V довольно банальна. Единственное что нужно сделать на этапе создания виртуальной машины это добавить в систему эмулируемый сетевой интерфейс Legacy. Он нам понадобится для первоначального обновления системы и установки новейшего ядра Linux.

Debian_legacy_network_hyperv

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

Debian6_4

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

# apt-get update

# aptitude update

# apt-get install build-essential ncurses-dev kernel-package fakeroot install linux-headers-2.6 linux-source-2.6.32

Теперь приступим к сборке нового ядра 2.6.36 взятого с kernel.org

# cd /usr/src

# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2

# bzip2 -d linux-2.6.36.tar.bz2

# tar xf linux-2.6.36.tar

# cd linux-2.6.36

# cp /boot/config* ./.config

# make menuconfig

В меню выбираем Device Drivers -> Stagging Drivers –> Microsoft Hyper-V Client Drivers

Debian6_kernel_compile_cut

На этом этапе так же можно удалить лишние драйвера для устройств, которых никогда не будет в виртуальной машине, таких как wi-fi, звуковые карты, USB, PCI. Впрочем, это не обязательно, если не желаете, можете не делать.

После этого можем начать сборку deb пакетов ядра. Для того чтобы лучше отличать ядра добавляем в название символы hyper-v.

# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-hyper-v kernel_image kernel_headers

Компиляция ядра занимает довольно продолжительное время. После этого в /usr/src появятся два deb пакета которые можно установить в систему командой dpkg –i.

Так же эти пакеты можно будет перенести и установить в другие виртуальные машины с Debian дабы не повторять процесс компиляции.

Редактируем /etc/initramfs-tools/modules и добавляем следующие строки указывающие загружать нужные модули при старте системы:

hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc
Обновляем initramfs: 
# update-initramfs –u –k 2.6.36-hyper-v

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

Debian6_kernel_compile_7
После этого проверяем с помощью lsmod | grep hv что все нужные для работы Hyper-V модули загрузились.
Debian6_big_scsi_hdd  

Обратите внимание, в новых версиях ядер Linux сетевой синтетический интерфейс Hyper-V переименован из seth в eth. Это может вводить в заблуждение.

Debian_synthetic_network

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

Debian6_12

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

Comments
  • Вы бы это на ITBand запостили бы, а то там пользователи альтернативных ОС жалуются на отсутствие статей по их темам.

  • Надо будет как нибудь сделать дайджест всего что про Linux/Unix и Hyper-V написано и запостить.

    Странно что они жалуются. Поисковики вроде еще не отменили. :)

  • Андрей, ставили мы тут Дебиан на виртуалку. С сборкой ядра возникли проблемы, но это мой косяк, скорее всего.

    Проблема у нас следующая. Сейчас на кластере Hyper-V крутится две машины на Убунте с синтетическими интерфейсами. Маки, естественно, статические. При переезде между узлами теряется пинг до этих машин. 3-5 минут нет пинга вообще.

    Причем, если из виртуалки пингануть чего-нибудь, сеть появляется.

    Есть какие-то идеи по этому поводу?

  • Alexandr если собственное ядро собрать не удалось можно воспользоваться например ядром которое сделал наш турецкий коллега.

    Взять его можно тут

    www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers-32-bit.html

    www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers.html

    К сожалению Ubuntu в кластере Hyper-V не запускал и наверно в ближайшее время не смогу. Нет под рукой оборудования для кластера.

    Есть такое ощущение что проблема в Ubuntu т.к остальные Linux системы в кластере живут нормально. Впрочем я могу и ошибаться. Упоминаний о проблеме в сети довольно мало

    www.google.ru

    Может быть стоит попробовать Debian вместо Ubuntu в кластере? Если это не поможет тогда остается мигрировать на что то официально поддерживаемое вроде SLES или RHEL. Если это не вариант то можно попробовать CentOS.

    По крайней мере этим системам уделяется больше внимания от Microsoft.  

  • Андрей, спасибо за ответ.

    Мы до Убунты пробовали Дебиан. История была та же самая.

    Сейчас у меня вырисовывается только костыльное решение: в крон поставить пинг каждые 3-4 минуты. Но крайне не хочется применять костыли.

  • А почему не перейти например на CentOS он явно лучше поддерживаться будет чем Debian и Ubuntu. Все таки у RedHat большая доля рынка и ресурсов явно больше.

  • Добрый день, Андрей!

    Сделал по Вашему мануалу, только ядро уже взял 2.6.38.3, Debian 6.0.1 Squeeze, всё компилирую, в меню загрузки появляется новое ядро с Hyper-V, выбираю его, но машина не грузится.

    Останавливается на Loading, please wait ...

    Снимок экрана можно посмотреть тут http://files.kipk.ru/error.gif

    Не подскажете, в чём может быть проблемка?

  • Если самосборное ядро не удалось заставить работать попробуйте для начала взять уже готовое ядро

    www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers-32-bit.html

    www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers.html

    Попрактикуйтесь на нем. А затем уже переходите на более новое ядро.

  • Пробовал, у него Debian 5.0.6 и ядро скомпиливано под него, на 6.0.1 не взлетает, ладно, буду пробовать дальше :)

  • Поставил Debian 6 с ядром 2.6.38.3 под Hyper-V. Все отлично кроме одного неприятного момента: машина падает при выходе из состояния save, что затрудняет оперативный бэкап.

  • А с помощью чего вы делает бэкап? Зачем машину с Linux при этом отправлять в Save state?

  • У меня так и не получилось заставить рабоать модули ядра для HyperV, как только уже не делал, компилировал ядро с нуля, делал отдельные модули и копировал их в текущее ядро, ничего не получается. Что за магия?

    У Юсуфа на странице целая дискуссия, но что я делаю не так? :-D

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

    Бэкап с помощью backup exec.

  • Если у вас стоят компоненты Hyper-v в Linux то там должен срабатывать VSS Writer. Это означает что во время резервного копирования нет нужды переводить виртуальную машину в save state. Она должна копироваться прозрачно.

  • Заработало на ядре 2.6.39 c нетронутым /etc/initramfs-tools/modules

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment