Несколько недель назад я выбрал себе KVM для виртуализации. Сразу отвечу на вопросы «почему?»: виртуальные машины под KVM шустры и позволяют запускать любую ОС. Еретические ОС я не пробовал, но Debian и FreeBSD бегают под KVM+Debian очень и очень неплохо — это признают даже бывалые администраторы.
Если вы готовы за скорость заплатить удобством настройки и использования хост-машины — просим под кат.
Устанавливал я KVM на машинку с процессором core i7. Рекомендую использовать именно многоядерные процессоры с HT. При том не стоит отдавать виртуальным машинам виртуальных процессоров больше, чем есть ядер на хост-машине. В случае с i7 я получил 8 ядер, которые в дальнейшем смогу разделить как пожелаю между контейнерами. Если раздать больше процессоров чем есть — это может сказаться на производительности.
Первым делом проверяем — поддерживает ли процессор аппаратную виртуализацию:
Теперь устанавливаем необходимые пакеты:
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
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
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.
Обидно что теряется один ip на bridge.
Не знаю точно, но вроде как в таком виде по умолчанию
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 …
Можно ли при установки задать число ядер для использования? Аля make -j, а то qemu выкушивает 1-о ядро на 100%, установка системы идёт около 1-го часа.
—vcpus=2 опция
Спасибо за ответ. Но т.к. не было задано первоначально при создании 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
virsh edit vm1
Там в конфиге найдите cpu count или как то так (i — режим редактирования, потом esc, потом :wq).
С выключенной виртуалкой, само собой.
Да, так получилось. Но похоже я напутал сущности. По сути хотелось отвести два физ. ядра на одного гостя. Спасибо за подсказки.
При подключении по vnc в консоль вываливается сообщение «channel 3: open failed: connect failed: Connection refused» и «vncviewer: VNC server closed connection». Куда копать?
значит не тот порт пробросили. Или опцию —vnc забыли указать при создании виртуалки. В любом случае проще воспользоваться virt-manager’ом.
Запустил на kvm несколько виртуальных машин благодаря вашим статьям. Все получилось неплохо. Из-за лени и по незнанию создавал вирт машины черз Convirt, развернутый на ubuntu рабочей станции (не на host-машине). Потом понял, что это не удобно и удобнее управлять вирт машинами с консоли host машины, например через virsh. В связи с этим вопрос. Подскажите, как мне конвертировать или перенести настойки виртуальных машин из Convirt в xml файл, который затем использовать в virsh. Буду очень благодарен. Может быть подскажите какой другой способ изменения среды управления вирт машинами?
Создайте новые машины через virt-install и подключите к ним образы от старых. Смысла мучаться с конфигами я не вижу.
Насчет управления — virt-manager отличная вещь. Его нужно ставить локально, через него можно подцепиться к удаленному серверу с libvirtd включенным.
Добрый день!
У меня такой вопрос, небыло ли у вас описаний как установить в KVM машину с определенной разметкой дисков (аналог xen-partition), пока я не особо понимаю как это сдесь реализовать, может можно сразу несколько дисков подключать?
Хым. А зачем?
Систему будете ставить — поделите диск виртуальный как нужно.
пинг
пинг2
Тест3
Бугага.
> ssh -L 5900:localhost:5900 root@178.ххх.ххх.137
возможно, глупый вопрос, но все же: какой пароль от рута на root@178… ?
а не. все понял. я подумал в начале-нужен пароль на гостевую систему
все хорошо. но разрешение не радует совсем. увеличить невозможно?
http://tinypic.com/view.php?pic=10z76lk&s=5
У инсталлера — нет. В установленной системе, само собой, можно.
подскажите, после установки оси на виртуалку, как ее стартовать при старте самого хоста?
в virsh edit vmname
или через virt-manager подцепитесь и поставьте галочку.
Я обычно делаю скрипт startup.sh и его запускаю на взлете машины. А там уже всякие нужные штуковины — бриджи, роутинг, файрволл и старт машинок.
Почему-то не получается назначить статический ip гостевой. Сеть такая — в интернет смотрит роутер с внешним ip, после него стоит компьютер с хостом 192.168.1.10, потом гостевая, ip раздает роутер. Если в настройках сетевой стоит dhcp — все нормально, ловит ip по порядку и работает. Но если попытаться поставить статический — интернета в гостевой нет. Если потом вернуть настройки и перезапустить интерфейс — сеть все равно не поднимается, приходится ребутить. На данный момент нашел решение способом прописать мак и роутер выдает нужный ай-пи, а в гостевой dhcp. Это не совсем кошерно и хочется узнать, куда копать?
Давайте конкретику.
interfaces, ip ro sh при dhcp и при статике, для начала (в виртуалке).
При прописанной статике внутри сети машинка видна?
Добрый день.
А не подскажите как прокидывать vlan в виртуальные машины? И вообще есть какая-нибудь подробная статья про vlan в KVM не могу найти?
https://debian.pro/697
прости inkvizitor68sl, но это крик души, поэтому в трезвом виде и постараюсь без мата и в глубокой глубине твоего блога, сам понимаешь, кто здесь может очутиться. Отношение к прогерам я потом в своем блоге напишу и, чтоб б не голословно, у меня ФАВТ. Штудируем форумы и блоги электриков, сантехников, и прочая и видим необходимую помощь,но теперь касается создания VM, сука я только в одном блоге прочел, что после virt-install предупреждения о display это … фигня вобщем, но нигде, даже в ютубе нет внятного объяснения, а как это мы дальше VM устанавливаем из другого б…. окна, терминала и как с…… соединяемся. Я не хочу virt-manager — я еще в 90 годы годы гонял эл.двигатели через assembler, но, чтоб ты не обижался еще раз повторю — вас профессионалов в инете кот наплакал, пиши, как на VM далее устанавливать систему, как в реале, блин 2-е сутки пошли
> И во второй консоли:
> vncviewer localhost:5900
Так я же писал, как по vnc ставить. Строкой выше написано, как порт через ssh пробросить, если KVM на удаленном хосте.
Ну или я вопрос не распарсил.
Вообще проще preseed-ом ставить — https://debian.pro/1334, тогда кнопки нажимать не нужно будет.
и да, у всех сразу окошечки вылазят с установкой системы, хотя все пишут, что у них нет Х-ов и virt-install запускается, при том, что они virtinst не установили. У тебя тоже к стати ключ x2go без apt-get install dirmngr установился, писец в общем неоспоримый — мы ж прогеры друг другера понимаем. -\O/-
да разбираюсь я пока, я в другие жизненные игрушки игрался, возвращаюсь к тому, что нравилось, а деньги не приносило, говорят, что востребовано
>Вообще проще preseed-ом ставить — https://debian.pro/1334, тогда кнопки нажимать не нужно будет.<
Подожди, все это пока фигня, я эти лентяйки со временем много напишу, опыт есть, у меня блин не получается тупо получить графику со второй консоли, чтоб я в графическом экране установил ось
операционку на виртуалку, как устанавливаем на реальное железо в реале, блин нет картинки и всё, где туплю?
vncviewer открылся?
если честно, то я офигеваю над этим по жизни, я этого тигра несколько раз загружал, но после твоего вопроса он открылся и всё в графике, как у меня жена говорит, спеца все боятся, благодарю, но не раслабляйся, я ещё не определился — в бекенд или в сисьадмины
пока грузится понаглеем дальше, меньше искать в большой мусорке, x2go лучше чем TightVNC ? и как x2go настроить, чтоб видел виртуалку, у меня не получилось, поверь, я многое что за это время покрутил, пока всё и так большой пласт вскрыл, тут развернуться теперь охренеть, завтра на VDS сайт буду закидывать на радостях
> x2go лучше чем TightVNC
x2go лучше, чем VNC (TightVNC — это просто один из клиентов).
> и как x2go настроить, чтоб видел виртуалку
Никак.
VNC встроен в libvirt, для каждой виртуалки создаётся свой инстанс vnc-сервера. X2go туда не встроен.
X2go можно поставить только внутри виртуальной ОС, если там есть X-сервер — но доступа, например, к грабу в такой схеме не будет, само собой.