Возникла задача поднять несколько виртуальных машинок на одной реальной. Машинка попалась без поддержки 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-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|