Debian и скромный VPS под QEMU

Возникла задача поднять несколько виртуальных машинок на одной реальной. Машинка попалась без поддержки Intel VT и AMD SVM. Так что KVM, Xen и прочие пришлось откинуть. Так же пришлось откинуть OpenVZ т.к. нужно было на виртуальную машину устанавливать винду. Поэтому выбор упал на Qemu.
Для начала был развернут стандартный дистрибьютив Debian.
После этого было начато само шаманство с установкой и запуском виртуальной машины.
Для начала были установлены требуемый минимум пакетов для VM

apt-get install qemu bridge-utils vde2 resolvconf

Теперь перейдем к настройке сети для VM
для начала отредактируем /etc/network/interfaces

#сетевая карточка должна быть включена и не сконфигурирована
auto eth0
iface eth0 inet static
address 0.0.0.0

# а вся конфигурация будет делаться на виртуальном интерфейсе
auto br0
iface br0 inet static
#тут указываем адрес нашего Debian сервера
address xxx.xxx.xxx.xxx
#маску сети
netmask xxx.xxx.xxx.xxx
#шлюз, если требуется
gateway xxx.xxx.xxx.xxx
#DNS сервер
dns-nameservers xxx.xxx.xxx.xxx
#Настройки моста
bridge_ports eth0 # интерфейс, к которому подключается мост
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

после этого перезапускаем сеть
/etc/init.d/networking restart
——————————————-
Маленькая паметка для управления мостами вручную
Создать мост
brctl addbr имя_моста
Добавить Мост к реальному интерфейсу
brctl addif имя_моста имя_девайса
удалить мост из реального интерфеса
brctl delif
Удалить мост
brctl delbr
Показать все мосты
brctl show
Включить/Выключить STP
brctl stp имя_моста on/off
——————————————-
После перезапуска сети в сетевых адаптерах

ifconfig

должен появиться новый интерфейс br0.
Теперь нам нужно подцепить к этому мосту tap интерфейс.
Для начала создадим этот интерфейс

vde_tunctl -b

и добавим его в мост

brctl addif br0 tap0

Тут tap0 это интерфейс, созданный прошлой командой

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

qemu-img create -f qcow vps1.img 20G

create — создать образ
-f qcow — раширяемый образ
vps1.img — имя образа
20G — размер

Теперь осталось запустить виртуальную машину:
Первый раз нам нужно загрузиться с образа системы и с поддержкой VNC для подключения до установки системы:

qemu -m 512 -hda /mnt/vps/vps1.img -localtime -daemonize -net nic,model=rtl8139 -net tap,ifname=tap0 -cdrom /home/user/os.iso -bood d -vnc :1

В дальнейшем строку загрузки можно будет сократить до:

qemu -m 512 -hda /mnt/vps/vps1.img -localtime -daemonize -net nic,model=rtl8139 -net tap,ifname=tap0

Теперь остается только подключиться к созданной виртуальной машине по VNC и установить первую систему.
Для подключения я использовал TightVNC. А подключаться нужно по адресу xxx.xxx.xxx.xxx:1 , где xxx.xxx.xxx.xxx это адрес Debian сервера.
После установки виртуальная машина окажется в той же сети, что и никсовый сервер. Так что настройки сети у них будут похожи.
Хоть виртуальная машина запущена и работает, но при этом есть маленькая недоработка. Все настройки сети пропадут в случае перезагрузки никсового сервера(кроме настроек интерфейса br0). Так что нужно сделать несколько скриптов для остановки и запуска VM.

Скрипт на запуск VM

#!/bin/sh
#ifconfig eth0 0.0.0.0 promisc up
iface=$( vde_tunctl -b)
echo $iface
brctl addif br0 $iface
qemu -m 512 -hda os.img -localtime -daemonize -net nic,model=rtl8139 -net tap,ifname=$iface -nographic

и на остановку

#!/bin/sh
ps -A | grep qemu
vde_tunctl -d $1

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

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.