№ 1874 В разделе
Sysadmin
от February 13th, 2010,
В подшивках: Linux, Virtualization
Как-то понадобилось мне сделать хостинг для виртуалок. Собирать очередной хостинг с нуля не особо хотелось, поэтому решил использовать готовые наборы из Ubuntu 9.10 Server Edition.
В начале наша планета была огромным расплавленым камнем…
Самым важным этапом является проверка процессора на способность аппаратной виртуализации. Убедитесь, что в BIOS включена поддержка виртуализации на процессоре, если таковая там есть, конечно. Если нету, то стоит проверить самостоятельно: egrep '(vmx|svm)' --color=always /proc/cpuinfo
. Если ничего команда не вывела, то дальше вам читать смысла нет. Разве что если вы обзаведетесь новым процессором
Перед установкой операционной системы учтите эти 2 детали:
Если вы не уверены, что ваш процессор 64 битный, то можно легко это узнать командой grep ' lm ' /proc/cpuinfo
. А чтобы убедиться, что ваша ОС 64 битная, то uname -m
покажет это x86_64
. Уверен, что вам они не пондобятся. Вы же профессионал? 🙂
Установка
Если у вас уже стоит система с предустановлеными инструментами для виртуализации (выбрали виртуализацию во время установки ОС), то смело пропускайте данный пункт.
Для установки инструментария выполните команду sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-viewer
. Здесь есть все, что нам понадобится за все время работы (хотя лично я создал пару доп скриптов для автоматизации автоматизации 🙂 ). После завершения установки добавьте себя в группу libvirtd: sudo adduser `id -un` libvirtd
. Все, теперь можно перезагрузиться. Если все прошло хорошо, то по команде virsh -c qemu:///system list
вы увидите подобную картину:
$ virsh -c qemu:///system list Id Name State ---------------------------------- $
Если это не так, то рекомендую кропотливое изучение логов системы. Иногда это отсутвие прав записи на некоторые файлы (например, /var/run/libvirt/libvirt-sock).
Первый опыт
Давайте создадим нашу первую виртуальную машину! Мы рвемся за стабильностью поддержки, поэтому будем устанавливать LTS версию убунты (LTS версии поддерживаются в течении 5 лет). Последняя на данный момент ЛТСка – 8.04. Если у вас еще не стоит удобнейшей штуки для создания виртуалок, то почему бы ее не поставить? 🙂 Делаем sudo apt-get install ubuntu-vm-builder
. Как все просто! Теперь создадим нашу первую виртуальную машину командой sudo ubuntu-vm-builder kvm hardy
(не забываем, что мы решили ставить 8.04. ее кодовое имя hardy). Данная программка поддерживает кучу параметров, начиная с указания архитектуры системы, кончая логином и паролем созданого в ней юзера для работы с системой. Если вам влом разбираться со всеми этими параметрами, добрые дяди предусмотрели специальную утилитку для этого. И кстати, если вы хотите использовать Virsh для работы с виртуалками, то не забывайте добавлять параметр --libvirt qemu:///system
. Та клевая утилитка не умеет это делать самостоятельно. Я ранее говорил про скрипт автоматизации, который я сделал и сейчас я его вам покажу:
#!/bin/bash
if [ -z "$1" ]; then
echo "usage: make_virt.sh |name| |root size MB| |swap size MB| |ip (2,3,4...etc)| |mem MB|"
exit
fi
NAME=$1
ROOT=$2
SWAP=$3
IP=$4
MEM=$5
#create virtual server
ubuntu-vm-builder kvm hardy \
--hostname $NAME \
--mem $MEM \
--user vlad \
--pass newpass \
--ip 192.168.254.$IP \
--mask 255.255.255.0 \
--net 192.168.254.0 \
--bcast 192.168.254.255 \
--gw 192.168.254.1 \
--dns 78.140.0.254 \
--mirror http://repo.opentomsk.net:8080/ubuntu/ru.archive.ubuntu.com/ubuntu \
--components main,universe,multiverse,restricted \
--addpkg mc openssh-server \
--rootsize $ROOT \
--swapsize $SWAP \
--libvirt qemu:///system ;
Он очень простой. Достаточно указать нужные общие параметры и скрипты сами далее все сделают:
Скриптом я подключил сразу томские репозитории и предустановил некоторый софт. Виртуалки также можно устанавливать не только в образы, но и на физические диски. А еще можно ставить внутри не только убунты и дебианы, но и клонировать существующие системы с жестких дисков. Но об этом всем как-нибудь отдельно поговорим.
Если вы делаете коммерческий хостинг, то стоит задуматься о скоросте сборки новой виртуалки. Допустим, вы уже настроили все нужное на созданой виртуалке. Теперь пришло время ее клонировать другим пользователям. Для этих целей создана программа virt-clone:
virt-clone --connect=qemu:///system -o etalon_host -n new_host -f /var/virtuals/new_host.qcow2
Конечно, у вас будут другие названия и другие пути. Это лишь пример. Перед запуском этой команды убедитесь, что исходная система выключена.
Поманагерим
Командой virsh --connect qemu:///system
вы можете легко подключиться к консоли обслуживания виртуальных машин. Наберите list и увидите все ваши созданые виртуалки. Смысла описывать руководство пользователя я не вижу, когда его можно прочитать командой help. Все конфиги виртуалок лежат в /etc/libvirt/qemu
. При работе с виртуалками я всегда имел дело с совершенно разными системами и некоторые не поддерживали некоторое железо. Например, для сервера первым делом важна сетевая карта. Чтобы ее сменить, достаточно изменить строку <model type='что-нибудь'/>
в секции network
. По умолчанию обычно стоит rtl8139 (не удивительно, это же самая распространенная сетевуха в мире), но могут и virtio, ne2k_pci, pcnet, i82551, i82557b, i82559er, e1000.
Больше сказать нечего
Некоторые люди всячески пренебрегают всеми возможностями (а то и оскорбляют их), которые дает им Ubuntu. Пожалуйста, не слушайте их! Пусть они компилят свои Gentoo, устанавливают FreeBSD на десктопы и настраивают сервера сутками. Вы можете избавиться от всего этого геморроя используя уже готовые решения. Удачи!
Fortune cookie: Today's spam: Give her pleasure with every inch of your giant instrument.
Leave a Reply