Рубрики
Наследие

Используем qemu для создания qVDS

Многим хотелось бы иметь на своем сервере возможность для экспериментов без риска или установить другую операционную систему. Конечно, такие технологии существуют уже достаточно давно — VDS, когда на основе одного физического сервера создаются несколько виртуальных.
Однако существует недостаток — необходимо пересобрать ядро с разного рода патчами, что очень рискованно — сервер может не загрузиться с новым ядром.
Для решения этой проблемы мы воспользовались qemu — открытой системой эмуляции как на уровне «железа», так и на UML (только для Linux, естественно).
Однако основным существенным преимуществом на практике является то, установка qemu чрезвычайно проста и не требует пересборки ядра, достаточно распаковать бинарный архив, добавить недостающие библиотеки и qemu готов к работе.

Многим хотелось бы иметь на своем сервере возможность для экспериментов без риска или установить другую операционную систему. Конечно, такие технологии существуют уже достаточно давно — VDS, когда на основе одного физического сервера создаются несколько виртуальных.
Однако существует недостаток — необходимо пересобрать ядро с разного рода патчами, что очень рискованно — сервер может не загрузиться с новым ядром.
Для решения этой проблемы мы воспользовались qemu — открытой системой эмуляции как на уровне «железа», так и на UML (только для Linux, естественно).
Однако основным существенным преимуществом на практике является то, установка qemu чрезвычайно проста и не требует пересборки ядра, достаточно распаковать бинарный архив, добавить недостающие библиотеки и qemu готов к работе.

В то же время существуют два серьезных недостатка. Первый — это чрезмерное потребление ресурсов в эмуляции на уровне полной системы, что не позволяет конкурировать на данном уровне с такими технологиями, как OpenVZ, а второй — эмулятор использует GUI, что делает работу с ним чрезвычайно неудобной, особенно, если у Вас к серверу слабый канал.
Но есть возможность избежать этого, запустив qemu в режиме терминала. Мы подготовили два образа: один — мини-образ Linux Debian в состоянии режима basic setup, второй — уже предустановленную FreeBSD с предусмотрительно поднятым ssh-сервером. Пароли также предустановлены — для admin — admin и для root — root. Обязательно смените их сразу после запуска. Скачать архивы с образами и скриптами можно по ftp — ftp://dedic.ru/qemu/, а можно выполнить самостоятельно.

Для дистрибутивов Linux необходимо скачать ISO-образ дистрибутива, и лучше всего, если это будет mini-образ, остальное можно ставить по сети. Затем этот образ монтируем во временную директорию (опция loop) и забираем оттуда само ядро vmlinuz и initrd.img. Запускаем qemu с этим ядром и inird, а в дополнительных опциях передаем вывод на консоль. После запуска qemu мы работаем с виртуальным сервером через консоль. Естественно, что графический инсталлятор лучше не использовать.

В случае же с FreeBSD все еще проще — достаточно включить в конфигурации comconsole и настроить ее, после чего перенаправить ввод-вывод в stdin/stdout.

Для доступа с виртуального сервера в сеть на настоящем сервере необходимо включить форвардинг:
echo 1 > /proc/sys/net/ipv4/ip_forward
и разрещить выход с подсетки 127.20.0.2 (это IP-диапазон виртуальных серверов):
iptables -t nat -A POSTROUTING -s 172.20.0.0/24 -d 0/0 -j MASQUERADE
Для того, чтобы виртуальный сервер был доступен под одним из реальных IP реального сервера, необходим обратный проброс:
iptables -A FORWARD -d 172.20.0.2 -i eth0 -j ACCEPT
iptables -t nat -A PREROUTING -d реальный.ip.тут -p tcp -j DNAT —to-destination 172.20.0.2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *