Libvirt

Материал из Энциклопедия Хаб.ру
Перейти к: навигация, поиск

libvirt - это набор инструментов для взаимодействия с возможностями виртуализации в последних версиях Linux (и других операционных системах).

Содержание

virsh - консоль управления виртуальными машинами

help <command>
edit <domain>
dominfo <domain>
autostart <domain>
gracefully shutdown a domain
shutdown <domain>                      
memtune --soft-limit 1024144 --hard-limit 10241440 <domain> --live
setmaxmem <domain> 10241440 --config
setmem <domain> 10241440 --live
nodeinfo #информация о ноде
vcpupin <domain> [--vcpu <number>] [<cpulist>] [--config] [--live] [--current]
vcpuinfo <domain>
nodeinfo
net-list
net-info <network>

Добавление нового интерфейса

brctl addbr br1 
brctl addif br1 eth1

#attach-interface <domain> <type> <source>

virsh attach-interface test-disk bridge br1 --persistent

/etc/network/interfaces

auto eth1
iface eth1 inet static
auto br1
iface br1 inet static
       bridge_ports eth1
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off
       address 1.1.1.1
       netmask 255.255.255.0
       network 1.1.1.0
detach-interface
virsh detach-interface test-disk bridge --mac 52:54:00:e0:ab:dd


backup

#suspend virt_machine 
rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # copy the image on the same drive 
#resume virt_machine 
rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh://backup@backupmachine:/vmbackups

qemu-nbd's snapshot feature:

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2 
then mount /dev/nbd0p1 (partition 1), rsync, unmount and finally disconnnect:
qemu-nbd --disconnect /dev/nbd0

VM Builder

Создание образа виртуальной машины в формате qcow2

HOSTNAME="new-host"
MEMORY=16384
CPUS=8
DISK_SIZE=40000
IP=10.11.110.187
USERNAME="pontiy_pilat"
PASSWD="WahPhu7c"
 
mkdir -p /mnt/vps/$HOSTNAME/mytemplates/libvirt
cp /etc/vmbuilder/libvirt/* /mnt/vps/$HOSTNAME/mytemplates/libvirt/
cp /etc/vmbuilder/boot.sh /mnt/vps/$HOSTNAME/
 
ubuntu-vm-builder kvm ubuntu --verbose --debug \
--destdir=/mnt/vps/$HOSTNAME/$HOSTNAME \
--mem $MEMORY \
--cpus $CPUS \
--arch amd64 \
--ip $IP \
--mask 255.255.0.0 \
--gw 10.11.110.224 \
--dns 10.11.110.100 \
--bridge br0 \
--user $USERNAME \
--pass $PASSWD \
--suite=precise \
--rootsize $DISK_SIZE \
--swapsize $MEMORY \
--flavour=virtual \
--libvirt qemu:///system \
--timezone Europe/Moscow \
--hostname $HOSTNAME \
--domain rg.net \
--firstboot /mnt/vps/$HOSTNAME/boot.sh \
--mirror http://mirror.yandex.ru/ubuntu \
--templates mytemplates \
--addpkg acpid \
--addpkg man \
--addpkg joe \
--addpkg bash-completion \
--addpkg htop \
--addpkg atop \
--addpkg iotop \
--addpkg etckeeper \
--addpkg git-core \
--addpkg nfs-common

Конвертирование qcow2 раздела на партицию LVM

qemu-img info /mnt/FileStore//rbth-w7/rbth-w7/tmpQZmXfF.qcow2
qemu-img convert /mnt/vps/test-disk/test-disk/tmp2oOOny.qcow2 -O host_device /dev/mapper/FILESTORE-test--disk

Сборка образа виртуальной машины на разделе LVM

Создание LVM раздела vmtest на группе томов FILESTORE:

 lvcreate -L20G -nvmtest FILESTORE

Скрипт запуска VMBuilder:

HOSTNAME="testvm"
MEMORY=16384
CPUS=8
DISK_SIZE=20000
IP=10.11.110.208
USERNAME="pontiy_pilat"
PASSWD="WahPhu7c"
 
mkdir -p /mnt/vps/$HOSTNAME/mytemplates/libvirt
cp /etc/vmbuilder/libvirt/* /mnt/vps/$HOSTNAME/mytemplates/libvirt/
cp /etc/vmbuilder/boot.sh /mnt/vps/$HOSTNAME/
 
ubuntu-vm-builder kvm ubuntu --verbose --debug \
--overwrite \
--destdir=/mnt/vps/$HOSTNAME/$HOSTNAME \
--mem $MEMORY \
--cpus $CPUS \
--arch amd64 \
--ip $IP \
--mask 255.255.0.0 \
--gw 10.11.110.224 \
--dns 10.11.110.100 \
--bridge br0 \
--user $USERNAME \
--pass $PASSWD \
--suite=precise \
--swapsize $MEMORY \
--flavour=virtual \
--libvirt qemu:///system \
--timezone Europe/Moscow \
--hostname $HOSTNAME \
--domain rg.net \
--firstboot /mnt/vps/$HOSTNAME/boot.sh \
--mirror http://mirror.yandex.ru/ubuntu \
--raw /dev/mapper/FILESTORE-vmtest \
--addpkg acpid \
--addpkg man \
--addpkg joe \
--addpkg bash-completion \
--addpkg htop \
--addpkg atop \
--addpkg iotop \
--addpkg etckeeper \
--addpkg git-core \
--addpkg nfs-common

Монтирование raw раздела

Монтирование:

losetup /dev/loop0 ${img}.raw
kpartx -av /dev/loop0
mount /dev/mapper/loop0p1 /mnt/tmp/

Размонтирование:

umount /dev/mapper/loop0p1
kpartx -d /dev/loop0
losetup -d /dev/loop0


Монтирование LVM snapshot`a

lvcreate -L10G -s -nbackup_${img} /dev/VPS/${img} # cоздание snapshot`a
losetup /dev/loop0 /dev/VPS/backup_${img}
kpartx -av /dev/loop0
mount /dev/mapper/loop0p1 /mnt/tmp/

Загрузка виртуальной машины с внешний ядром

Данная процедура обычно используется, что бы загрузить домен у которого проблемы с загрузчиком.

Открыть конфигурацию домена: virsh edit $domain Добавить/изменить раздел 'os', где указать путь к ядру на хост системе, которое будет загружать окружение домена:

  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <kernel>/boot/vmlinuz-3.5.0-34-generic</kernel>
    <initrd>/boot/initrd.img-3.5.0-34-generic</initrd>
    <cmdline>debug root=/dev/vda1</cmdline>
    <boot dev='hd'/>
  </os>

Внешние ссылки

The virtualization API

balloon

Todo

Best practices for KVM by IBM

linux-kvm

Источник — «http://www.hub.ru/wiki/Libvirt»
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты