Несколько недель назад я выбрал себе 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