Debian.pro

Про Debian


KVM на Debian.

Несколько недель назад я выбрал себе KVM для виртуализации. Сразу отвечу на вопросы «почему?»: виртуальные машины под KVM шустры и позволяют запускать любую ОС. Еретические ОС я не пробовал, но Debian и FreeBSD бегают под KVM+Debian очень и очень неплохо — это признают даже бывалые администраторы.

Если вы готовы за скорость заплатить удобством настройки и использования хост-машины — просим под кат.

Устанавливал я KVM на машинку с процессором core i7. Рекомендую использовать именно многоядерные процессоры с HT. При том не стоит отдавать виртуальным машинам виртуальных процессоров больше, чем есть ядер на хост-машине. В случае с i7 я получил 8 ядер, которые в дальнейшем смогу разделить как пожелаю между контейнерами.  Если раздать больше процессоров чем есть — это может сказаться на производительности.

Первым делом проверяем — поддерживает ли процессор аппаратную виртуализацию:

cat /proc/cpuinfo | egrep ‘(svm|vmx)’
Если после ввода команды на экране появился какой-либо текст — то ваш процессор поддерживает аппаратную виртуализацию. Если вывод команды пустой — то не стоит использовать KVM. Да и вообще не стоит использовать современные гипервизоры.

Теперь устанавливаем необходимые пакеты:

sudo apt-get install kvm libvirt-bin virtinst bridge-utils

После чего стоит перезагрузить хост. Конечно же стоит использовать последнее доступное стабильное linux-ядро, доступное в репозиториях.

Проверяем, установился ли KVM:

virsh -c qemu:///system list —all

Вывод команды опять же должен быть не пустым и не содержать ошибок вида «команда не найдена».

Приступим к настройке сети на хост машине. Приведем файл /etc/network/interfaces к следующему виду:

auto lo

iface lo inet loopback
auto  eth0
iface eth0 inet static
auto br0
iface br0 inet static
address   178.ххх.ххх.137
netmask   255.255.255.192

network 178.ххх.ххх.0
broadcast 178.ххх.ххх.191
gateway   178.ххх.ххх.129
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

После чего применяем все сетевые настройки:

/etc/init.d/networking restart

Для удобства создадим каталоги:

mkdir /iso && mkdir /vms

И скачаем образ установочный образ debian:

cd /iso && wget -c http://cdimage.debian.org/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso

Теперь перейдём к созданию виртуальной машины:

virt-install -n vm1 -r 1024 -f /vms/vm1.img -s 50 -c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso —accelerate —os-type=linux —os-variant=generic26 -v —vnc -w bridge:br0

Расскажу о приведенных выше опциях:

-n vm1 — имя домена (виртуальной машины)

-r 1024 — количество оперативной памяти

-f /vms/vm1.img — расположение «жесткого диска».

-s 50 — размер «жесткого диска»

-c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso — указываем iso образ, с которого будем производить установку системы. Рекомендую запускать 64х битные образы под 64й битной ОС хост-машины.

—accelerate —os-type=linux —os-variant=generic26 -v — оптимизируем VDS для работы с виртуальным Linux с ядром 2.6.хх

—vnc — запускаем VNC-сервер для доступа к виртуальной машине.

-w bridge:br0 — указываем, что виртуальная машина должна использовать сетевлй мост br0  хост-машины

Теперь перейдем к установке ОС на виртуальную машину.

На вашем компьютере (не на сервере, а на рабочей станции с графической средой) вводим команды:

ssh -L 5900:localhost:5900 root@178.ххх.ххх.137

И во второй консоли:

vncviewer localhost:5900

Теперь вы должны увидеть в VNC установщик Debian. Ставим всё как обычно (возможно вам будет недоступна сеть). После того, как установщик Debian отправит систему в перезагрузку — виртуальная машина выключится, вместо того, чтобы перезагрузиться.

Самое время изменить количество выделенных процессоров для виртуальной машины:

virsh -c qemu:///system setvcpus vm1 2

Эта команда сработает, только если виртуальная машина находится в выключенном состоянии.  Теперь запустим её снова:
virsh -c qemu:///system start vm1
Теперь нужно настроить сеть на виртуальной машине. Заходим на неё по VNC и приводим файл /etc/network/interfaces к следующему виду:

auto lo

iface lo inet loopback

allow-hotplug eth0

iface eth0 inet static

address 178.xxx.xxx.177

netmask 255.255.255.192

network 178.xxx.xxx.128

broadcast 178.xxx.xxx.191

gateway 178.xxx.xxx.137

Шлюзом необходимо указать ip-адрес хост-сервера. Так же стоит прописать NS в файл /etc/resolv.conf

Теперь ваша виртуальная машина работает и доступна из сети (а в моём случае она стала доступна и из интернета).

Осталось сделать aptitude update && aptitude upgrade && aptitude install openssh-server и зайти на виртуальный сервер по SSH.

Пользуясь случаем расскажу вам, что у хостера QS.biz сдаются в аренду VDS на KVM.


Комментарии (37):

  1. Обидно что теряется один ip на bridge.

  2. wilful :

    Не знаю точно, но вроде как в таком виде по умолчанию
    virt-install -n vm1 -r 1024 -f /vms/vm1.img -s 50 -c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso –accelerate –os-type=linux –os-variant=generic26 -v –vnc -w bridge:br0
    virt-install пытается подключиться к xen, у меня по крайней мере было так, может стоить добавить однозначно?
    virt-install —connect qemu:///system …

  3. XIT :

    Можно ли при установки задать число ядер для использования? Аля make -j, а то qemu выкушивает 1-о ядро на 100%, установка системы идёт около 1-го часа.

  4. —vcpus=2 опция

  5. XIT :

    Спасибо за ответ. Но т.к. не было задано первоначально при создании vm1, пытаюсь сделать так:

    virsh -c qemu:///system setvcpus vm1 2

    и получаю ошибку:
    error: Requested operation is not valid: domain is not running

    vm1 отключена:
    virsh -c qemu:///system list —all
    Id Name State
    ———————————-
    — vm1 shut off

  6. virsh edit vm1
    Там в конфиге найдите cpu count или как то так (i — режим редактирования, потом esc, потом :wq).
    С выключенной виртуалкой, само собой.

  7. XIT :

    Да, так получилось. Но похоже я напутал сущности. По сути хотелось отвести два физ. ядра на одного гостя. Спасибо за подсказки.

  8. Thorwald :

    При подключении по vnc в консоль вываливается сообщение «channel 3: open failed: connect failed: Connection refused» и «vncviewer: VNC server closed connection». Куда копать?

  9. значит не тот порт пробросили. Или опцию —vnc забыли указать при создании виртуалки. В любом случае проще воспользоваться virt-manager’ом.

  10. Сергей :

    Запустил на kvm несколько виртуальных машин благодаря вашим статьям. Все получилось неплохо. Из-за лени и по незнанию создавал вирт машины черз Convirt, развернутый на ubuntu рабочей станции (не на host-машине). Потом понял, что это не удобно и удобнее управлять вирт машинами с консоли host машины, например через virsh. В связи с этим вопрос. Подскажите, как мне конвертировать или перенести настойки виртуальных машин из Convirt в xml файл, который затем использовать в virsh. Буду очень благодарен. Может быть подскажите какой другой способ изменения среды управления вирт машинами?

  11. Создайте новые машины через virt-install и подключите к ним образы от старых. Смысла мучаться с конфигами я не вижу.

    Насчет управления — virt-manager отличная вещь. Его нужно ставить локально, через него можно подцепиться к удаленному серверу с libvirtd включенным.

  12. wilful :

    Добрый день!

    У меня такой вопрос, небыло ли у вас описаний как установить в KVM машину с определенной разметкой дисков (аналог xen-partition), пока я не особо понимаю как это сдесь реализовать, может можно сразу несколько дисков подключать?

  13. Хым. А зачем?
    Систему будете ставить — поделите диск виртуальный как нужно.

  14. Vlad :

    пинг

  15. vlad :

    пинг2

  16. vlad :

    Тест3

  17. thomas :

    > ssh -L 5900:localhost:5900 root@178.ххх.ххх.137

    возможно, глупый вопрос, но все же: какой пароль от рута на root@178… ?

  18. thomas :

    а не. все понял. я подумал в начале-нужен пароль на гостевую систему

  19. thomas :

    все хорошо. но разрешение не радует совсем. увеличить невозможно?

    http://tinypic.com/view.php?pic=10z76lk&s=5

  20. У инсталлера — нет. В установленной системе, само собой, можно.

  21. mrdi :

    подскажите, после установки оси на виртуалку, как ее стартовать при старте самого хоста?

  22. в virsh edit vmname
    или через virt-manager подцепитесь и поставьте галочку.

    Я обычно делаю скрипт startup.sh и его запускаю на взлете машины. А там уже всякие нужные штуковины — бриджи, роутинг, файрволл и старт машинок.

  23. Evgeniy :

    Почему-то не получается назначить статический ip гостевой. Сеть такая — в интернет смотрит роутер с внешним ip, после него стоит компьютер с хостом 192.168.1.10, потом гостевая, ip раздает роутер. Если в настройках сетевой стоит dhcp — все нормально, ловит ip по порядку и работает. Но если попытаться поставить статический — интернета в гостевой нет. Если потом вернуть настройки и перезапустить интерфейс — сеть все равно не поднимается, приходится ребутить. На данный момент нашел решение способом прописать мак и роутер выдает нужный ай-пи, а в гостевой dhcp. Это не совсем кошерно и хочется узнать, куда копать?

  24. Давайте конкретику.
    interfaces, ip ro sh при dhcp и при статике, для начала (в виртуалке).
    При прописанной статике внутри сети машинка видна?

  25. Sergey :

    Добрый день.
    А не подскажите как прокидывать vlan в виртуальные машины? И вообще есть какая-нибудь подробная статья про vlan в KVM не могу найти?

  26. baxhb :

    прости inkvizitor68sl, но это крик души, поэтому в трезвом виде и постараюсь без мата и в глубокой глубине твоего блога, сам понимаешь, кто здесь может очутиться. Отношение к прогерам я потом в своем блоге напишу и, чтоб б не голословно, у меня ФАВТ. Штудируем форумы и блоги электриков, сантехников, и прочая и видим необходимую помощь,но теперь касается создания VM, сука я только в одном блоге прочел, что после virt-install предупреждения о display это … фигня вобщем, но нигде, даже в ютубе нет внятного объяснения, а как это мы дальше VM устанавливаем из другого б…. окна, терминала и как с…… соединяемся. Я не хочу virt-manager — я еще в 90 годы годы гонял эл.двигатели через assembler, но, чтоб ты не обижался еще раз повторю — вас профессионалов в инете кот наплакал, пиши, как на VM далее устанавливать систему, как в реале, блин 2-е сутки пошли

  27. > И во второй консоли:
    > vncviewer localhost:5900
    Так я же писал, как по vnc ставить. Строкой выше написано, как порт через ssh пробросить, если KVM на удаленном хосте.

    Ну или я вопрос не распарсил.

    Вообще проще preseed-ом ставить — https://debian.pro/1334, тогда кнопки нажимать не нужно будет.

  28. baxhb :

    и да, у всех сразу окошечки вылазят с установкой системы, хотя все пишут, что у них нет Х-ов и virt-install запускается, при том, что они virtinst не установили. У тебя тоже к стати ключ x2go без apt-get install dirmngr установился, писец в общем неоспоримый — мы ж прогеры друг другера понимаем. -\O/-

  29. baxhb :

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

  30. baxhb :

    >Вообще проще preseed-ом ставить — https://debian.pro/1334, тогда кнопки нажимать не нужно будет.<
    Подожди, все это пока фигня, я эти лентяйки со временем много напишу, опыт есть, у меня блин не получается тупо получить графику со второй консоли, чтоб я в графическом экране установил ось

  31. baxhb :

    операционку на виртуалку, как устанавливаем на реальное железо в реале, блин нет картинки и всё, где туплю?

  32. vncviewer открылся?

  33. baxhb :

    если честно, то я офигеваю над этим по жизни, я этого тигра несколько раз загружал, но после твоего вопроса он открылся и всё в графике, как у меня жена говорит, спеца все боятся, благодарю, но не раслабляйся, я ещё не определился — в бекенд или в сисьадмины

  34. baxhb :

    пока грузится понаглеем дальше, меньше искать в большой мусорке, x2go лучше чем TightVNC ? и как x2go настроить, чтоб видел виртуалку, у меня не получилось, поверь, я многое что за это время покрутил, пока всё и так большой пласт вскрыл, тут развернуться теперь охренеть, завтра на VDS сайт буду закидывать на радостях

  35. > x2go лучше чем TightVNC
    x2go лучше, чем VNC (TightVNC — это просто один из клиентов).

    > и как x2go настроить, чтоб видел виртуалку
    Никак.
    VNC встроен в libvirt, для каждой виртуалки создаётся свой инстанс vnc-сервера. X2go туда не встроен.

    X2go можно поставить только внутри виртуальной ОС, если там есть X-сервер — но доступа, например, к грабу в такой схеме не будет, само собой.

Написать комментарий