Показаны сообщения с ярлыком виртуализация. Показать все сообщения
Показаны сообщения с ярлыком виртуализация. Показать все сообщения

среда, 7 августа 2013 г.

KVM на Debian.

Несколько недель назад я выбрал себе KVM для виртуализации. Сразу отвечу на вопросы «почему?»: виртуальные машины под KVM шустры и позволяют запускать любую ОС. Еретические ОС я не пробовал, но Debian и FreeBSD бегают под KVM+Debian очень и очень неплохо — это признают даже бывалые администраторы.
Если вы готовы за скорость заплатить удобством настройки и использования хост-машины — просим под кат.

Устанавливал я KVM на машинку с процессором core i7. Рекомендую использовать именно многоядерные процессоры с HT. При том не стоит отдавать виртуальным машинам виртуальных процессоров больше, чем есть ядер на хост-машине. В случае с i7 я получил 8 ядер, которые в дальнейшем смогу разделить как пожелаю между контейнерами.  Если раздать больше процессоров чем есть — это может сказаться на производительности.
Первым делом проверяем — поддерживает ли процессор аппаратную виртуализацию:
cat /proc/cpuinfo | egrep ‘(svm|vmx)’
Если после ввода команды на экране появился какой-либо текст — то ваш процессор поддерживает аппаратную виртуализацию. Если вывод команды пустой — то не стоит использовать KVM. Да и вообще не стоит использовать современные гипервизоры.
Теперь устанавливаем необходимые пакеты:
sudo apt-get install kvm libvirt-bin virtinst bridge-utils
После чего стоит перезагрузить хост. Конечно же стоит использовать последнее доступное стабильное linux-ядро, доступное в репозиториях.
Проверяем, установился ли KVM:
virsh -c qemu:///system list —all
Вывод команды опять же должен быть не пустым и не содержать ошибок вида «команда не найдена».
Приступим к настройке сети на хост машине. Приведем файл /etc/network/interfaces к следующему виду:
auto lo
iface lo inet loopback
auto  eth0
iface eth0 inet static
auto br0
iface br0 inet static
address   178.ххх.ххх.137
netmask   255.255.255.192

network 178.ххх.ххх.0
broadcast 178.ххх.ххх.191
gateway   178.ххх.ххх.129
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
После чего применяем все сетевые настройки:
/etc/init.d/networking restart
Для удобства создадим каталоги:
mkdir /iso && mkdir /vms
И скачаем образ установочный образ debian:
cd /iso && wget -c http://cdimage.debian.org/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso
Теперь перейдём к созданию виртуальной машины:
virt-install -n vm1 -r 1024 -f /vms/vm1.img -s 50 -c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso —accelerate —os-type=linux —os-variant=generic26 -v —vnc -w bridge:br0
Расскажу о приведенных выше опциях:
-n vm1 — имя домена (виртуальной машины)
-r 1024 — количество оперативной памяти
-f /vms/vm1.img — расположение «жесткого диска».
-s 50 — размер «жесткого диска»
-c /iso/debian-cd/5.0.4/amd64/iso-cd/debian-504-amd64-CD-1.iso — указываем iso образ, с которого будем производить установку системы. Рекомендую запускать 64х битные образы под 64й битной ОС хост-машины.
—accelerate —os-type=linux —os-variant=generic26 -v — оптимизируем VDS для работы с виртуальным Linux с ядром 2.6.хх
—vnc — запускаем VNC-сервер для доступа к виртуальной машине.
-w bridge:br0 — указываем, что виртуальная машина должна использовать сетевлй мост br0  хост-машины
Теперь перейдем к установке ОС на виртуальную машину.
На вашем компьютере (не на сервере, а на рабочей станции с графической средой) вводим команды:
ssh -L 5900:localhost:5900 root@178.ххх.ххх.137
И во второй консоли:
vncviewer localhost:5900
Теперь вы должны увидеть в VNC установщик Debian. Ставим всё как обычно (возможно вам будет недоступна сеть). После того, как установщик Debian отправит систему в перезагрузку — виртуальная машина выключится, вместо того, чтобы перезагрузиться.
Самое время изменить количество выделенных процессоров для виртуальной машины:
virsh -c qemu:///system setvcpus vm1 2
Эта команда сработает, только если виртуальная машина находится в выключенном состоянии.  Теперь запустим её снова:
virsh -c qemu:///system start vm1
Теперь нужно настроить сеть на виртуальной машине. Заходим на неё по VNC и приводим файл /etc/network/interfaces к следующему виду:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 178.xxx.xxx.177
netmask 255.255.255.192
network 178.xxx.xxx.128
broadcast 178.xxx.xxx.191
gateway 178.xxx.xxx.137
Шлюзом необходимо указать ip-адрес хост-сервера. Так же стоит прописать NS в файл /etc/resolv.conf
Теперь ваша виртуальная машина работает и доступна из сети (а в моём случае она стала доступна и из интернета).
Осталось сделать aptitude update && aptitude upgrade && aptitude install openssh-server и зайти на виртуальный сервер по SSH.
Пользуясь случаем расскажу вам, что у хостера QS.biz сдаются в аренду VDS на KVM.

понедельник, 5 августа 2013 г.

Установка паравиртуальной CentOS в Xen

Актуально для: CentOS 5.6 + Xen 4 (на примере dom0 Debian)
Итак, у нас есть задача - установить Linux CentOS 5 как гостевую паравиртуальную виртуальную машину в гипервизор Xen (здесь мы будем рассматривать Xen 4.0.1 как последний на момент написания статьи).

Установка показана на примере Xen 4.0.1 с доменом-0 Linux Debian. Путь к виртуальным машинам оставлен по-умолчанию:
/etc/xen

Суть действий остается одинаковой для любого домена-0.


Начнем.

Перво-наперво - запаситесь горой терпения. Сайт CentOS и его зеркала показывают невероятно медленные скорости работы (около 10 Кбит/с - модемы быстрее работают).

Идем в домен-0 сервера виртуальных машин и создаем заготовку для гостевой системы.

1) В первую очередь создаем папку для нее и виртуальный диск.
# cd /etc/xen
# mkdir vm_centos
# cd vm_centos
# dd if=/dev/zero of=hdd0 bs=1M count=1 seek=10240

Здесь мы создаем файл виртуальной машины размером 10Гб без предварительной аллокации секторов (т.е. динамический) по адресу:
/etc/xen/vm_centos

Если Вы хотите сразу занять все место под файл виртуального диска - используйте следующий вариант команды dd:
# dd if=/dev/zero of=hdd0 bs=1M count=10240

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


2) Создаем файл конфигурации.

# nano vm.cfg
следующего вида:

kernel = "/etc/xen/vm_centos/vmlinuz"
ramdisk = "/etc/xen/vm_centos/initrd.img"
extra = "text"
name = "centos"
memory = "256"
disk = [ 'file:/etc/xen/vm_centos/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:47' ]
vcpus=1
on_reboot = 'destroy'
on_crash = 'destroy'

Поясним некоторые моменты:

а) Мы указываем использовать для загрузки ядро и initrd-образ из папки нашей виртуальной машины. Мы их скачаем в следующем шаге.
б) Указываем использовать LOOP-интерфейс для файла жесткого диска (FILE:) вместо более быстрого, но чаще всего не работающего TAP-интерфейса (последний стабильно работает только для HVM-доменов).
в) Выделяем 256Мб ОЗУ.
г) Сразу прописываем MAC-адрес для сетевого интерфейса. Это крайне рекомендуется, иначе Xen будет выдавать MAC-адрес сам, причем каждый раз разный!
д) Выделяем 1 процессорное ядро.
е) Указываем, что машину нужно будет остановить при перезагрузке. Нам это нужно затем, что после первой же перезагрузки после установки нам нужно будет сразу загасить виртуальную систему - так удобнее. В дальнейшем мы поменяем этот параметр.


3) Скачиваем ядро и initrd для установки:

Для 32-битной системы (x86-32)

# wget http://mirror.centos.org/centos/5/os/i386/images/xen/initrd.img
# wget http://mirror.centos.org/centos/5/os/i386/images/xen/vmlinuz

Для 64-битной системы (x86-64 или, как правильно - amd64)

# wget http://mirror.centos.org/centos/5/os/x86_64/images/xen/initrd.img
# wget http://mirror.centos.org/centos/5/os/x86_64/images/xen/vmlinuz


4) Запускаем установку CentOS:

# xm create -c vm_centos/vm.cfg

Ключ -c указывает, что сразу нужно подцепиться к консоли машины. Если Вы его забыли указать, то подцепиться можно в любой момент командой:

# xm console centos

По ходу установки экран (в отличие от HVM с VNC Viewer) будет черно-белым. Текущее положение селектора можно видеть по блоку курсора (белый блок). Выбор опции - клавиши вверх и вниз. Перейти на кнопки - через Tab.

5) Ставим CentOS в интерактивном режиме.

Нас приветствует установщик. Интуитивно двигаемся по его шагам, указывая нашу локаль. Если это чудо спрашивает нас - Text-mode или VNC, то отвечаем "Text-mode". Когда нас спрашивают - откуда брать файлы для установки - отвечаем "HTTP".


6) Нас просят ввести адрес HTTP - откуда брать файлы для установки. Вводим:

Как я уже говорил - ресурсы самого CentOS демонстрируют нам скорости начала 90х. Если есть желание загрузить и поставить ОС побыстрее - используйте другие зеркала, которые можно посмотреть по адресу:

http://www.centos.org/modules/tinycontent/index.php?id=34

Следите за тем, чтобы в шестой колонке было указано "Yes" (Direct DVD downloads), иначе, по моему опыту, установщик заругается, что не может загрузить образ ОС (например, такая ошибка выскакивает на mirror.yandex.ru).

Одно из неплохих найденных зеркал:

Server: ftp.astral.ro
dir: distros/centos/5/os/x86_64

Если же Вы хотите использовать официальный ресурс - вот его координаты:

Server: mirror.centos.org
dir: centos/5/os/x86_64/

Если нужна 32-битная система - указываем i386 вместо x86_64.

Идем дальше.

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


7) Оно пишет "Welcome" и предлагает разметить диск (The partition table on device xvda was unreadable). Отвечаем "Yes". Оно еще раз уточняет - отвечаем "OK" и "Yes".


8) Оно говорит, что готово к разметке и спрашивает - не хотим ли мы заценить - как оно решило нам диск разбить (Review and modify partitioning layout?). Говорим - "Да, конечно!" (Yes).

Здесь оно показывает свой вариант. Если устраивает (редко) - соглашаемся и жмем на "OK". Если не устраивает - меняем и жмем "OK".


9) Если ОЗУ Вы выделили немного (те же 256Мб) - то оно предупреждает, что памяти мало (As you don't have much memory in this machine, we need to turn on swap space immediately) и предлагает сразу включить файл подкачки на целевом диске. Конечно, соглашаемся ("Yes").


10) Загрузчик. Оно спрашивает - какой загрузчик использовать (Which boot loader you like to use). Выбор небольшой - никакого или GRUB. Нас устраивает только GRUB (даже если бы был и другой какой), так что смело выбираем "Use GRUB Boot Loader", через Tab перемещаемся на "OK" и давим на нее.


11) Оно спрашивает - какую консоль использовать. Оставляем строчку "console=xvc0" и жмем на "OK".


12) Спрашивает - поставить ли пароль на GRUB? Оставляем поля ввода пароля пустыми и через Tab перемещаемся на "ОК". Жмем на нее.


13) Оно спрашивает про то - что загружать через GRUB. Просто жмем на "OK".


14) Очередной вопрос - куда поставить загрузчик. Ставим курсор на "/dev/xvda" и через Tab жмем OK.


15) Следующий вопрос - сконфигурировать ли сетевой интерфейс прямо сейчас. Говорим "Да, несомненно" - жмем "Yes".

Здесь проверяем все настройки нашего сетевого интерфейса, меняем если что-то необходимо.


16) Следующий вопрос - часовой пояс (time zone). Стрелками вверх/вниз выбираем нужный нам (например, Asia/Yekaterinburg), через Tab перемещаемся на "OK" и нажимаем на нее.


17) Спрашиваем рутовый пароль (для root). Вводим пароль для суперпользователя (внимательно) и жмем на "OK".


18) Далее пишет "Retrieving installation information..." и некоторое время тормозит. Может подвиснуть на 40% - ничего страшного, оно продолжит установку.


19) Далее установщик спрашивает - какой софт ставить. Убираем разные GNOME, KDE, Desktop и подобные вещи, зато ставим галочку напротив надписи "Customize software selection" и продолжаем.

В следующем окне выбираем нужный софт. ВНИМАНИЕ! Очень аккуратно выбирайте, не ставьте то, что Вам не нужно на этом сервере - одна лишняя галочка - и оно радостно загрузит половину X-Window для какой-нибудь фигни.


20) Следующий шаг - оно проверяет зависимости выбранных пакетов (Checking dependencies in packages selected for installation...). Процедура занимает некоторое время, паниковать не стоит.


21) Теперь оно нам сообщает, что лог установки будет доступен после перезагрузки по пути "/root/install.log". Учитываем это и давим "ОК".


22) Оно форматирует диск... и начинает ставить софт. Процедура долгая, т.ч. не расчитывайте через 5 минут увидеть радостное сообщение, что все готово. Не волнуйтесь, если зависнет на табличке "Starting install process. This may take several minutes..." - ничего страшного. Оно думает. А может, центосу тоже нужно делать перерывы на кофе? Короче, на этой надписи установшик некоторое время тормозит.


23) После установки оно нам сообщает, что щас перезагрузится. Давим "ОК", в тайне потирая ручки - никуда оно не перезагрузися. Помните строчку "on_reboot = 'destroy'"? Воот. Машина сразу загасится и мы вернемся в консоль домена-ноль Xen.


24) В этом месте можно скопировать образ виртуальной машины для того, чтобы использовать его в дальнейшем как шаблон (если, конечно, Вам это нужно).


25) Меняем файл конфигурации vm.cfg. Приводим его к такому виду:

bootloader = "/usr/bin/pygrub"
extra = "text"
name = "centos"
memory = "256"
disk = [ 'file:/etc/xen/vm_centos/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:47' ]
vcpus=1
on_reboot = 'restart'
on_crash = 'restart'
on_poweroff = 'destroy'

Что здесь изменилось?
а) Убрали указание на ядро и initrd - они нам больше не нужны.
б) Указали загрузчиком PyGRUB - дабы ядро оно брало прямо изнутри файловой системы виртуальной машины. Плюс такого метода - при обновлении ядра нам не нужно его выгружать отдельно в домен-ноль для того, чтобы апдейты заработали.
в) Поменяли значение параметров "on_reboot" и "on_crash" на "restart". Таким образом теперь при перезагрузке оно действительно перезагрузиться, а не загасится, как сделало сейчас.


26) Стартуем машину снова:

# xm create -c vm_centos/vm.cfg

Сразу после загрузки ядра Вам покажут менюшку с предложением подкорректировать некоторые параметры служб. Аккуратнее - менюшка сама закроется через несколько секунд если не давить никакие кнопки.

Здесь крайне рекомендую обратить внимание на файервол - дабы он соответствовал тому, что Вам нужно. Иначе он сразу включен и не особо приветлив даже для стандартных служб (ssh, например).


Ну все, добро пожаловать в паравиртуальный CentOS!

Выйти из консоли и вернуться в dom0 Xen можно сочетанием клавишь Ctrl+]

четверг, 1 августа 2013 г.

Добавление блочных устройств в виртуальную машину XEN или страшная ошибка Device vbd could not be connected. Failed to find an unused loop device

Доброго времени дня. Понадобилось мне добавить к одному из моих виртуализованных Windows  серверов несколько жёстких дисков, что делается несложной правкой в конфига.
Например добавляем 4 жёстких диска vhd{1,2,3,4}.img :

Установка паравиртуальной CentOS в Xen

Итак, у нас есть задача - установить Linux CentOS 5 как гостевую паравиртуальную виртуальную машину в гипервизор Xen (здесь мы будем рассматривать Xen 4.0.1 как последний на момент написания статьи).

Установка показана на примере Xen 4.0.1 с доменом-0 Linux Debian. Путь к виртуальным машинам оставлен по-умолчанию:
/etc/xen

вторник, 30 июля 2013 г.

Виртуализация Windows Server 2008R2 на Xen

Добрый день. Сегодня поговорим о виртуализации Windows Server 2008R2 на Xen.
Готовим disk image под Windows Server 2008R2 :
dd if=/dev/zero of=xenwin2008.img bs=1024k seek=40000 count=0
Внимание! Размер диска будет 39 с хвостиком Гб. Убедитесь заранее в наличии свободного места.

суббота, 20 апреля 2013 г.

Устновка proxmox Debian x64

Устанавливаем Proxmox VE на Debian Squeeze(amd64)


Вообще хочется отметить что Proxmox VE проще установить из специально подготовленного ISO-файла, но в некоторых случаях, например если у вас файл хранилище более 2Тб, это ограничение MBR. Если у вас диск на 3Тб либо RAID большего объёма, вам придётся использовать файловую таблицу GPT а соответственно ставить голую систему на которую придётся накатить Proxmox в ручную.

Почему именно Proxmox?
  1. Возможность использования как KVM так и OpenVZ.
  2. Web vnc-client.
  3. Возможность кластеризации.
  4. Неплохая система бэкапов виртуальных машин.

Установка



Для начала пропишем репозитарий.
cat >> /etc/apt/sources.list <<EOF
# PVE packages provided by proxmox.com
deb http://download.proxmox.com/debian squeeze pve
EOF

wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

apt-get update
Обновим систему.
apt-get update
apt-get autoremove
apt-get dist-upgrade -y
Теперь установим ядро Proxmox VE.
apt-get install \
 `apt-cache search pve-kernel | egrep -E \
 "^pve-kernel-|\-pve\ \-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
и если хотите так сказать опционально headers.
apt-get install \
 `apt-cache search pve-headers | egrep -E \
 "^pve-headers-|\-pve\ \-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
Теперь перезагрузимся, и удостоверимся что загрузилось нужное нам ядро.

uname -r
2.6.32-6-pve

Настало время установки самого Proxmox VE.
apt-get install \
 `apt-cache search proxmox-ve | egrep -E \
 "^proxmox-ve-|\-\ The\ Proxmox\ PVE\ Kernel\ Image" \
 | awk '{ print $1 }' | head -n1` -y
Подключим VirtualHost pve-redirect в apache2
a2ensite pve-redirect.conf
Enabling site pve-redirect.conf.
Run '/etc/init.d/apache2 reload' to activate new configuration!

И перезапустим apache2
/etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .
Установим еще несколько полезных программ и сервисов.
apt-get install ntp ssh lvm2 postfix ksm-control-daemon vzprocps -y
При установке Postfix задаст пару вопросов, я предпочёл ответить так:


По окончании операции можно подключиться к WEB интерфейсу, в моём случае http://192.168.0.109, он меня автоматом редиректит на https://192.168.0.109:8006/#v1:0:18:4:::::

Залогинимся используя root-овую учётную запись

 из новшеств, появилась консоль сервера
так же если ваше хранилище данных находится в месте отличном от /var/lib/vz советую указать его в ручную.
Теперь чтобы виртуальные машины видели локальную сеть, добавим наш сетевой интерфейс в моём случае eth0 в бридж(vmbr0), и перенесём на него ip адрес.
Эти изменения применяться после перезагрузки.

virsh

virsh(1).

Приведен вольный перевод man-страницы virsh, дополненый переводом man’а идущего в дистрибутиве libvirt-0.7.6-r1 и данные из help’а самого virsh. Утилита virsh является основным интерфейсом для управления виртуальными окружениями и сетями, пулами хранения данных, сетевыми интерфесами и различными объектами виртуальной инфраструктуры.

Общий синтаксис
virsh <subcommand> [args]
Утилита virsh является основным интерфейсом для управления гостевыми доменами. Программа может использоваться для создания, приостановки и выключения гостевых окружений. Также можно просмотреть список существующих доменов и различную статистическую информацию. Взаимодествие осуществляется через Libvirt  – набор программ и библиотек для работы с возможностями виртуализации последних версий Linux (и других ОС). Виртуализация в ОС Linux подразумевает возможность одновременного запуска нескольких независимых друг от друга инстанций различных ОС на одном аппаратном обеспечении, где основные ресурсы находятся под управлением Linux. Libvirt способен работать как с Xen так и с QEmu и KVM.
Основная структура команды выполнит следующим образом:
virsh <command> <domain-id> [OPTIONS]
где command это одна из подкоманд, domain-id это числовой идентификационный номер домена или его имя (которое может быть автоматически транслировано в id), и OPTIONS это дополнительные параметры специфичные для каждой команды. Правда есть несколько исключений из этого правила, в основном это относится к командам применительных для всех доменов, на всю машину или непосредственно на гипервизор. Virsh может быть запущена без параметров, как самостоятельная оболочка в которой можно будет выполнять встроенные команды. Все операции virsh отдаются на выполнение libvirt который в свою очередь обращается к xend/qemu или любой другой системе виртуализации (которую он поддерживает). Учитывая это, следует при загрузке запустить службу xend/qemu, обычно это делается с помощью команды service start libvirtd (для RHEL/Fedora/CentOS). Большинство команд virsh требуют прав root для общения с гипервизором, поэтому команды выполненые из под непривилегированной учетной записи завершатся с ошибкой. Также стоит отметить что выполнение некоторых команды virsh занимает некоторое время (от 30 секунд и более) такие как создание или выключение. Поэтому когда оболочка вернула приглашение для ввода следующей команды, это не значит что операция инициированая предыдущей командой уже завершилась, поэтому периодически следует выполнять ‘virsh list’ для проверки состояния системы.
1. Общие команды. Следующие команды являются базовыми.
help – вывод списка доступных команд, help <command> выведет справку по конкретной программе;
quit – выход из virsh-терминала;
version – отображает версию ПО и версию используемого гипервизора;
connect URI [––readonly] – (пере-)подключиться к гипервизору. Это команда является встроенной и запускается сразу после старта virsh-шелла. Параметр URI может принимать следующие аргументы:
xen:/// – подключиться к xen гипервизору;
qemu:///system – подключиться к службе которая управляет QEmu\KVM-доменами и запущена из под root;
qemu:///session – подключиться к службе которая управляет QEmu\KVM-доменами и запущена из под непривилегированного пользователя.
c дополнительным параметром –readonly выполняется read-only подключение.
hostname – выводит имя хост-системы;
nodeinfo – выводит основную информацию об аппаратных характеристиках хост-системы (cpu, mem, sockets);
capabilities – вывод XML-документа в котором перечислены характеристики гипервизора к которому выполнено подключение;
list [ ––inactive | ––all ] – вывод информации о гостевых доменах. Без параметров выводит информацию о запущенных доменах;
freecell [cellno] – выводит количество свободно памяти хост-системы.
2. Команды применительные к доменам. Следующие команды позволяют напрямую управлять доменами. Большинство команд требуют в качестве первого параметра id домена. ID домена может быть указан в виде имени либо в виде полного значения UUID.
autostart [––disable] <domain-id> – включить автозапуск домена при загрузке. Опция ––disable отключает автозапуск;
console <domain-id> – подключиться к консоли гостевого домена;
create <FILE> – создать домен из XML-файла. Эта команда запускает домен описаный в файле, НО не сохраняет его конфигурацию; конфигурация исчезнет после выключения домена;
define <FILE> – назначить домен из XML-файла. Будет создано описание домена, но сам домен не будет запущен;
destroy <domain-id> – немедленно завершить работу гостевого домена. Эта команда не дает никакой возможности среагировать ОС запущенной в госте, это эквивалентно выдергиванию шнура питания из физической машины. В большинстве случаев вместо нее можно использовать команду shutdown;
domblkstat <domain-name> <block-device> – получить статистику блочных устройств устройств для домена;
domifstat <domain-name> <interface-device> – получить статистику сетевого интерфейса для домена;
dominfo <domain-id> – вывод информации о домене;
domuuid <domain-name-or-id> – конвертация ID домена или его имени в полный UUID;
domid <domain-name> – конвертация доменного имени в ID;
domname <domain-id> – конвертация ID домена в имя;
domstate <domain-id> – вывод состояния указанного домена;
dump <domain-id> <corefilepath> – выполнить дамп ядра гостя в файл для последующего анализа;
dumpxml <domain-id> – вывод информации о домене в XML-формате. Этот формат должен использоваться в командах create и define;
edit <domain-id> – редактировать XML-файл с конфигурацией домена;
migrate [––live] <domain-id> <desturi> <migrateuri> – мигрировать домен на другой хост. Параметр –live применяется для живой миграции. desturi это URI хост-системы назначения, и migrateuri это URI миграции, который обычно опускают;
reboot <domain-id> – перезагрузить домен. Действие аналогичное если бы команда reboot была введена в консоли гостя;
save <domain-id> <state-file> - сохранение запущенного домена в файл, из которого он может быть восстановлен позднее. Однажды сохраненный, домен остается выключенным и высвобожденная память может быть использована для нужд других доменов. Команда virsh restore восстанавливает состояние машины. Это действие эквивалентно процессу hibernate на запущенной машине, со всеми ее ограничениями, например открытые сетевые соединения будут восстановлены, но TCP-таймауты будут истекшими;
restore <state-file> – восстанавливает домен из сохраненного в файл состояния;
schedinfo [––set <parameter=value>] [––weight <number>] [––cap <number>] <domain-id> – просмотр/установка параметров планировщика в домене;
setmem <domain-id> <kilobytes> – изменить текущее выделение памяти в гостевом домене. Действие немедленно вступает в силу. Значение указывается в килобайтах;
setmaxmem <domain-id> <kilobytes> – изменить максимальное значение выделенной памяти для гостевого домена. Это не меняет текущее использование памяти в домене. Значение указывается в килобайтах;
setvcpus <domain-id> <count> – изменить количество виртуальных процессоров в гостевом домене. Значение может быть ограничено хост-системой, гипервизором или оригинальной конфигурацией домена;
shutdown <domain-id> – выключить домен. Гостевая ОС выполняет завершение работы, однако успешное завершение не гарантируется, это зависит длины времени которое уходит на остановку служб в домене;
start <domain-name> – запустить (предварительно назначеный) неактивный домен;
suspend <domain-id> – приостановить запущенный домен. Он держится в памяти, но останавливает свою работу;
resume <domain-id> – запускает остановленный ранее домен. Позволяет передать гипервизору ранее остановленный домен для продолжения работы;
ttyconsole <domain-id> – показать устройство используемое в качестве TTY консоли домена;
undefine <domain-id> – удалить конфигурацию неактивного домена;
vcpuinfo <domain-id> – возвращает информацию о виртуальных процессорах домена, такую как количество, время работы и привязку к физическим процессорам;
vcpupin <domain-id> <vcpu> <cpulist> – назначить виртуальный процессоры к физическим процессорам. Должен быть определен параметр vcpu, cpulist это список физических процессоров перечисленных через запятую (нумерация с нуля);
vncdisplay <domain-id> – вывод информации о ip-адресе и номере VNC-дисплея.
3. Команды для работы с устройствами. Следующие команды управляют связанными с доменом устройствами. ID домена может быть указан в виде имени либо в виде полного значения UUID. Чтобы лучше понять разрешенные значения в параметрах команд, прочтите документацию о формате секции устройств.
attach-device <domain-id> <FILE> – подключить устройство к домену, используя описание устройства из XML-файла;
attach-disk <domain-id> <source> <target> [––driver <driver>] [––subdriver <subdriver>] [––type <type>] [––mode <mode>] – добавить блочное устройство в домен:
<source> и <target> определяет пути к файлам и устройствам;
––driver может быть file, tap или phy в зависимости от типа доступа;
––type может быть cdrom или floppy в отличие от значения disk по умолчанию;
––mode может быть readonly или shareable(доступное для записи).
attach-interface <domain-id> <type> <source> [––target <target>] [––mac <mac>] [––script <script>] – добавить новый сетевой интерфейс в гостевой домен:
<type> может быть network(физическое подключение к сети) или bridge(подключение к сети через мостовое соединение);
<source это само устройство;
––target это целевое устройство в гостевом домене;
––mac позволяет определить mac-адрес;
––script позволяет указать путь к скрипту вместо использующегося по умолчанию;
detach-device <domain-id> <FILE> – отключить устройство от домена. Необходимо тоже XML-описание как и при использовании attach-device;
detach-disk <domain-id> <target> – отключить диск от домена. target это устройство видимое в гостевом домене;
detach-interface <domain-id> <type> [––mac <mac>] – отключить сетевой интерфейс от домена. type может быть network(физическое подключение к сети) или bridge(подключение к сети через мостовое соединение). Если в системе несколько интерфейсов, рекомендуется использовать опцию mac чтобы отличить их.
4. Команды управления виртуальным сетевым окружением. Следующие команды позволяют управлять виртуальными сетями. Libvirt способен назначать виртуальные сетевые окружения которые могут использоваться доменами и могут быть сассоциированы с физическими интерфейсами. Для более детальной информации можно прочесть документацию. Некоторые команды для виртуальных сетей, подобны командам используемыми для доменов и соответственно в параметрах, виртуальную сеть можно также назвать по имени или по ее UUID.
net-autostart <network> [––disable] – включить автозапуск виртуальной сети в при загрузке. Параметр ––disable отключает автозапуск;
net-create <FILE> – создать виртуальную сеть из XML-файла;
net-define <FILE> – назначить сеть из XML-файла, но не запускать ее;
net-destroy <network> – удалить сеть. Действие вступает в силу незамедлительно;
net-dumpxml <network> – вывести информацию о виртуальной сети в XML-формате;
net-edit <network> – редактировать XML-файл с опсианием сети;
net-list [––inactive | ––all] – вывести список активных виртуальных сетей. ––all отображает все сети, ––inactive отображает только неактивные;
net-name <network-UUID> – конвертация UUID сети в ее имя;
net-start <network> – запустить (назначенную ранее) неактивную сеть;
net-undefine <network> – удалить конфигурацию неактивной сети;
net-uuid <network> – конвертация имени сети в ее UUID.
5. Команды управления “секретом”.  Следующие команды управляют “секретом” (пароли, секретные фразы, ключи шифрования). Libvirt может хранить секретные данные независимо от их использования и другие объекты (тома или домены) могут использовать их или ссылаться на них. Секреты индентифицируются посредством UUID. Описание XML-формата приведено здесь.
secret-define <FILE> – назначить секрет из XML-файла без ассоциации с секретным значением;
secret-dumpxml <secret> – вывод параметров секрета в XML-формате;
secret-set-value <secret> <base64> – установка значения связанного с секретом (секретную информацию предварительно нужно закодировать в base64);
secret-get-value <secret> – вывести значение секрета закодированное в base64;
secret-undefine <secret> – удалить секрет вместе с ассоциированым значением;
secret-list – вывести список секретов.
6. Команды управления сетевыми интерфейсами. Стоит отметить, чтобы эти функции исправно работали необходимо чтобы в системе был установлен пакет netcf и libvirt был собран с поддержкой netcf.
iface-list [––inactive|––all] – просмотреть список физических сетевых интерфейсов;
iface-name <interface> – конвертация mac-адреса интерфейса в его имя;
iface-mac <interface> – конвертация имени интерфейса в mac-адрес;
iface-dumpxml <interface> – вывод информации о сетевых интерфесах в XML-формате;
iface-define <FILE> – назначить (но не запускать) сетевой интерфейс из XML-файла;
iface-undefine <interface> – удалить конфигурацию сетевого интерфейса;
iface-edit <interface> – редактировать конфигурацию сетевого интерфейса;
iface-start <interface> – запустить сетевой интерфейс;
iface-destroy <interface> – остановить сетевой интерфейс.
7. Команды управления физическими устройствами. Следующие команды позволяют пробрасывать физические устройства в виртуальные окружения.
nodedev-list [––tree] [––cap <string>] – просмотреть список доступных устройств;
nodedev-dumpxml <device> – вывод информации о устройстве в XML-формате;
nodedev-dettach <device> – отключить драйвер от устройства, перед последующим включением устройства в домен;
nodedev-reattach <device> – подключить драйвер к устройству после его извлечения из домена;
nodedev-reset <device> – выполнить сброс устройства, перед его включением в домен, или наоборот после извлечения;
nodedev-create <FILE> – создать устройство из XML-файла. Эта команда включает устройство, в виртуальную машину;
nodedev-destroy <name> – удалить устройство из виртуальной машины.
8. Команды управления пулами хранения. Пулы хранения могут использоваться для хранения виртуальных дисков гостевых систем. Подробнее здесь.
pool-autostart <pool> [––disable] – запускать пул автоматически при загрузке системы. Параметр “––disable” отключает автозапуск;
pool-build <pool> – построить новый пул;
pool-create <FILE> – создать новый пул из XML-файла;
pool-create-as <name> [––print-xml] <type> [<source-host>] [<source-path>] [<source-dev>] [<source-name>] [<target>] – создать новый пул с набором параметров:
<name> – имя пула;
––print-xml - напечатать XML-формат, но не назначать и не создавать конфигурацию;
<type> – тип создаваемого пула;
<source-host> – хост-источник для создаваемого хранилища (например localhost);
<source-path> - путь-источник для хранилища;
<source-dev> – устройство-источник для хранилища;
<source-name> – имя-источника для хранилища;
<target> – путь к хранилищу.
pool-define <FILE> – назначить (но не запускать) пул из XML-файла;
pool-define-as <name> [––print-xml] <type> [<source-host>] [<source-path>] [<source-dev>] [<source-name>] [<target>] – создать пул с набором параметров:
<name> – имя пула;
––print-xml – напечатать XML-формат, но не назначать и не создавать конфигурацию;
<type> – тип создаваемого пула (dir, fs, netfs, logical, disk, scsi, iscsi, mpath);
<source-host> – хост-источник для создаваемого хранилища;
<source-path> – путь-источник для хранилища;
<source-dev> – устройство-источник для хранилища;
<source-name> - имя-источника для хранилища;
<target> – путь к хранилищу.
pool-destroy <pool> – остановить указанный пул;
pool-delete <pool> – удалить пул;
pool-dumpxml <pool> – вывести информацию о пуле в XML-формате;
pool-edit <pool> – редактировать XML-конфигурацию пула;
pool-info <pool> – вывести информацию о пуле;
pool-list [––inactive|––all] – вывести список пулов;
pool-name <uuid> – конвертация UUID пула в его имя;
pool-refresh <pool> – обновить состояние пула;
pool-start <pool> – запустить (предварительно назначеный) неактивный пул;
pool-undefine <pool> – удалить конфигурацию неактивного пула;
pool-uuid <pool> – конвертация имени пула в его UUID.
9. Команды управления томами. Тома используются в качестве виртуальных дисков в гостевых системах.
vol-create <pool> <FILE> – создать том из XML-файла в указанном пуле;
vol-create-from <pool> <FILE> [––inputpool <string>] <vol> – создать том, в указанном пуле;
vol-create-as <pool> <name> <capacity> [––allocation <string>] [––format <string>] – создать том с набором параметров, размер определяется суффиксами k, M, G, T; типы форматов:
raw – обычный файл
bochs – формат образа диска Bochs
cloop – формат сжатого loopback образа диска
cow – формат User Mode Linux
dmg – Mac формат
iso – CDROM формат
qcow – QEMU v1 формат
qcow2 – QEMU v2 формат
vmdk – VMWare формат
vpc – VirtualPC формат
vol-clone [––pool <string>] <vol> <newname> – клонировать существующий том;
vol-delete [––pool <string>] <vol> – удалить указанный том;
vol-dumpxml [––pool <string>] <vol> – вывести информацию о томе в XML-формате;
vol-info [––pool <string>] <vol> – вывести основную информацию о томе;
vol-list <pool> – вывести список томов в указанном пуле;
vol-path [––pool <string>] <vol> – показать путь к тому используя его имя;
vol-name <path> – сконвертировать путь тома в его имя (ориг.текст – convert a vol UUID to vol name);
vol-key <vol> – сконвертировать UUID тома в его имя. (не совсем понятно где взять UUID в XML-описании я его не увидел).
Авторами оригинальных текстов являются Andrew Puch, Daniel Veillard, Sean Dague (xm man page) и Daniel Stekloff.
Примеры:
назначить и запустить пул ‘test’ типа ‘dir’ размещенный в каталоге /var/pooldir (каталог находится на устройстве /dev/volgroup00/var)
virsh> pool-create-as testpool dir localhost /var/pooldir /dev/volgroup00/var testpool /var/pooldir
virsh> pool-autostart testpool
создать том c именем server01-sdb, в пуле testpool, размером 8 Гб с форматом raw
virsh> vol-create-as testpool server01-sdb 8G ––format raw
подключить файл /var/testpool/server01-sdb к гостевой машине server01, как дополнительный диск sdb
virsh> attach-disk server01 /var/testpool/server01-sdb sdb ––driver file ––type disk