INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Виртуальные машины в Ubuntu 8.04, 9.10, kvm, libvirt

№ 1874 В разделе Sysadmin от February 13th, 2010,
В подшивках: ,

Как-то понадобилось мне сделать хостинг для виртуалок. Собирать очередной хостинг с нуля не особо хотелось, поэтому решил использовать готовые наборы из Ubuntu 9.10 Server Edition.

В начале наша планета была огромным расплавленым камнем…
Самым важным этапом является проверка процессора на способность аппаратной виртуализации. Убедитесь, что в BIOS включена поддержка виртуализации на процессоре, если таковая там есть, конечно. Если нету, то стоит проверить самостоятельно: egrep '(vmx|svm)' --color=always /proc/cpuinfo. Если ничего команда не вывела, то дальше вам читать смысла нет. Разве что если вы обзаведетесь новым процессором

Перед установкой операционной системы учтите эти 2 детали:

  • 64-битная хост система позволит работать виртуальным машинам с 2 и более гигабайтами ОЗУ;
  • 64-битные системы могут хостить как 32, так и 64-битные ОС.

Если вы не уверены, что ваш процессор 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 ;

Он очень простой. Достаточно указать нужные общие параметры и скрипты сами далее все сделают:

  • name – хостнейм виртуальной машины
  • root size MB – размер корневого раздела в мегабайтах
  • swap size MB – своп в мегабайтах
  • ip (2,3,4…etc) – адрес виртуалки (192.168.254.2)
  • mem MB – количество оперативки

Скриптом я подключил сразу томские репозитории и предустановил некоторый софт. Виртуалки также можно устанавливать не только в образы, но и на физические диски. А еще можно ставить внутри не только убунты и дебианы, но и клонировать существующие системы с жестких дисков. Но об этом всем как-нибудь отдельно поговорим.

Если вы делаете коммерческий хостинг, то стоит задуматься о скоросте сборки новой виртуалки. Допустим, вы уже настроили все нужное на созданой виртуалке. Теперь пришло время ее клонировать другим пользователям. Для этих целей создана программа 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 на десктопы и настраивают сервера сутками. Вы можете избавиться от всего этого геморроя используя уже готовые решения. Удачи!

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Облачная платформа
Яндекс.Метрика

Fortune cookie: Today's spam: Give her pleasure with every inch of your giant instrument.