KVM+OpenVZ

Материал из poiuty wiki
Перейти к: навигация, поиск

Ядро OpenVZ собирают на основе RHEL. По-этому мы можем запустить на таком ядре - как KVM, так и OpenVZ контейнер.
KVM контейнеры для работы с сетью используют bridge, для бекапов без остановки LVM. OpenVZ - venet и ploop.

Поставим ядро и дополнительные пакеты.

wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ
yum install vzkernel vzctl vzquota ploop kvm libvirt virt-install bridge-utils
reboot
service libvirtd start
chkconfig libvirtd on

После перезагрузки, отредактируем /etc/sysctl.conf

# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key
kernel.sysrq = 1

# We do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Настроим сеть для KVM контейнеров. Отредактируем /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR="70:54:D2:1A:88:C6"
ONBOOT="yes"
BRIDGE=br0
NM_CONTROLLED=no

Создадим /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"
TYPE=Bridge
DELAY=0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=198.27.68.59
NETMASK=255.255.255.0
GATEWAY=198.27.68.254
DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS="yes"
NM_CONTROLLED=no

KVM на debian

Есть небольшая разница между установкой на CentOS (она описана выше) и установкой на Debian.
Bridge настраиваем в файле /etc/network/interfaces

# Bridge network interface
auto eth0
iface eth0 inet manual
 
auto br0
iface br0 inet static
address 198.27.68.59
netmask 255.255.255.0
gateway 198.27.68.254
bridge_ports eth0
dns-nameservers 8.8.8.8 8.8.4.4

Сразу после установки virsh (libvirt) показывал мне OpenVZ контейнеры.
Чтобы он работал с KVM контейнерами, редактируем файл /etc/libvirt/libvirt.conf

uri_default = "qemu:///system"

Более подробно почитать о uri_default - можно на сайте libvirt.org

KVM

Создадим контейнер. Сеть может не работать, если указан неверный мак адрес.

virt-install --connect qemu:///system --arch=x86_64 -n win7 -r 20480 --vcpus=4 --disk path=/vm/win7.img,size=100,bus=ide,cache=none  -c /vm/windows7.iso --graphics vnc,listen=0.0.0.0,keymap=ru,password=xxxx --noautoconsole --os-type windows --os-variant win7 --mac=02:00:00:86:41:c5 --network=bridge:br0,model=e1000

Теперь нужно установить OS. Заходим через VNC клиент -> главный IP сервера, порт 5900. Для каждой новой VM -> открывается отдельный порт под VNC. Этот порт можно указать самому.

--graphics vnc,listen=0.0.0.0,port=5900,keymap=ru,password=xxxx

kvm-install.png

После установки, осталось прописать настройки сети в контейнере.
Например для OVH: IP адрес => IP контейнера, маска => 255.255.255.0, шлюз => такой же как и у главного IP.

kvm-win-net.png

virsh (KVM) команды

Посмотреть список всех виртуальных машин.

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 3     win7                           running
 10    server2                        running

Перезагрузить VM.

virsh reboot server2

Выключить VM.

virsh shutdown server2

Быстро выключить VM.

virsh destroy server2

Добавить VM в автозагрузку.

virsh autostart server2

Удалить VM из автозагрузки.

virsh autostart --disable server2

Включить виртуальную машину.

virsh start server2

Удалить конфиг VM. При этом диск VM не будет удален.

virsh undefine server2

Увеличить размер диска виртуальной машины.

virsh shutdown server2
cd /vm/
qemu-img resize win2008_2.img +150G
virsh start server2

Более подробное описание других команд можно прочитать на [linux.die.net].

KVM OVH IPs

Чтобы контейнер мог использовать несколько IP нужно.
Зайти в личный кабинет OVH и клонировать MAC address. kvm-ovh1.png

Далее внутри контейнера настроить сеть. Редактируем /etc/network/interfaces
iface eth0 -> основной IP контейнера. eth0:1 и eth0:N -> дополнительные.
В этом примере - контейнер Debian. Для CentOS это делается немного по-другому.
Подробно про настройку brigeclient в контейнере можно прочитать на сайте help.ovh.co.uk

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
	address 188.165.69.20
	netmask 255.255.255.255
	broadcast 188.165.69.20
	dns-nameservers 8.8.8.8 8.8.4.4
	post-up route add 37.187.170.254 dev eth0
	post-up route add default gw 37.187.170.254
	pre-down route del 37.187.170.254 dev eth0
	pre-down route del default gw 37.187.170.254

auto eth0:1
iface eth0:1 inet static
	address 188.165.69.21
	netmask 255.255.255.255
	broadcast 188.165.69.21

Далее поднимаем интерфейсы.

ifup eth0
ifup eth0:1

Проверяем.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:00:00:df:f2:b3
          inet addr:188.165.69.20  Bcast:188.165.69.20  Mask:255.255.255.255
          inet6 addr: fe80::ff:fedf:f2b3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2669 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:166276 (162.3 KiB)  TX bytes:14164 (13.8 KiB)

eth0:1    Link encap:Ethernet  HWaddr 02:00:00:df:f2:b3
          inet addr:188.165.69.21  Bcast:188.165.69.21  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

KVM antispoofing

Запрещаем контейнеру использовать чужие IP.
Например разрешим пользоваться только 192.168.0.106 Открываем конфиг контейнера /etc/libvirt/qemu/win7.xml

    <interface type='bridge'>
      <filterref filter='clean-traffic'>
        <parameter name='IP' value='192.168.0.106'/>
      </filterref>
    </interface>

Применяем конфиг и перезагружаем контейнер.

virsh define /etc/libvirt/qemu/win7.xml
virsh reboot win7

KVM network bandwidth

По сравнение с OpenVZ, в KVM - достаточно удобно ограничивать скорость интернета для контейнера.
Чтобы это сделать, нужно отредактировать конфиг файл контейнера в папке /etc/libvirt/qemu Ограничение по incomming/ outgoing трафику указывается в KiB\s

    <interface type='bridge'>
      <bandwidth>
        <inbound average='100'/>
        <outbound average='100'/>
      </bandwidth>
      ...
    </interface>

Далее делаем define и перезагружаем VM.

virsh define /etc/libvirt/qemu/win7.xml
virsh reboot win7

Проверим, работает ли ограничение.
libvirt-shaper.png

Больше информации на эту ему можно найти на сайте libvirt.org

KVM HDD limits

Кроме того, что можно ограничивать размер жесткого диска - можно поставить дополнительные лимиты: на iops, скорость записи и т.д.
Например, сделаем 1000 I/O operations per second and 50 MB per second throughput.

    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/vm/win7.img'/>
      <target dev='hda' bus='ide'/>
      <iotune>
        <total_bytes_sec>52428800</total_bytes_sec>
        <total_iops_sec>1000</total_iops_sec>
      </iotune>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

Далее делаем define и перезагружаем VM.

virsh define /etc/libvirt/qemu/win7.xml
virsh reboot win7

Ниже вы можете посмотреть список всех доступных лимитов.

  • total_bytes_sec
The optional total_bytes_sec element is the total throughput limit in bytes per second. This cannot appear with read_bytes_sec or write_bytes_sec.
  • read_bytes_sec
The optional read_bytes_sec element is the read throughput limit in bytes per second.
  • write_bytes_sec
The optional write_bytes_sec element is the write throughput limit in bytes per second.
  • total_iops_sec
The optional total_iops_sec element is the total I/O operations per second. This cannot appear with read_iops_sec or write_iops_sec.
  • read_iops_sec
The optional read_iops_sec element is the read I/O operations per second.
  • write_iops_sec
The optional write_iops_sec element is the write I/O operations per second.
  • total_bytes_sec_max
The optional total_bytes_sec_max element is the maximum total throughput limit in bytes per second. This cannot appear with read_bytes_sec_max or write_bytes_sec_max.
  • read_bytes_sec_max
The optional read_bytes_sec_max element is the maximum read throughput limit in bytes per second.
  • write_bytes_sec_max
The optional write_bytes_sec_max element is the maximum write throughput limit in bytes per second.
  • total_iops_sec_max
The optional total_iops_sec_max element is the maximum total I/O operations per second. This cannot appear with read_iops_sec_max or write_iops_sec_max.
  • read_iops_sec_max
The optional read_iops_sec_max element is the maximum read I/O operations per second.
  • write_iops_sec_max
The optional write_iops_sec_max element is the maximum write I/O operations per second.
  • size_iops_sec
The optional size_iops_sec element is the size of I/O operations per second.

Больше информации на эту ему можно найти на сайте libvirt.org

KVM подключить USB

Подключаем usb устройство. В моем случае это флешка(ruToken). И получаем информацию.

# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 005: ID 0a89:0030 --> это флешка

Выключаем виртуальную машину.

virsh shutdown win7

Редактируем конфиг файл виртуальной машины /etc/libvirt/qemu/win7.xml

  <devices>
  ...
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x0a89'/>
        <product id='0x0030'/>
      </source>
    </hostdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>

Обновим конфиг.

virsh define /etc/libvirt/qemu/win7.xml

И включаем обратно виртуальную машину.

virsh start win7

KVM восстановление root доступа

Данный способ работает для debian контейнера.
Для centos - аналогично, но немного по-другому.

Заходим через VNC и выбираем ядро, нажимаем 'e'.

kvm-root.png

Редактируем и нажимаем Ctrl+X.

init=/bin/sh

kvm-root2.png

Проверим, что мы зашли под root.

# whoami
root

Перемонтируем файловую систему.

mount -o remount,rw /

Поменяем пароль.

# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Перезагрузим систему.

echo 1 > /proc/sys/kernel/sysrq 
echo b > /proc/sysrq-trigger

kvm-root3.png

KVM backup VM

Есть несколько способов сделать бекап не выключая контейнер: qcow2 snapshot, lvm snapshot, zfs snapshot.
Логика такая -> основная FS замораживается -> все изменения происходят в snapshot.
В это время копируем основную FS контейнера. Далее делаем merge snapshot и все изменения применяются для основной FS.

(main_fs) <= (snapshot)

Рассмотрим способ qcow2. Создадим snapshot.

virsh snapshot-create-as win7 snapshot1 --disk-only --atomic

Проверяем.

# virsh domblklist win7
Target     Source
------------------------------------------------
hda        /var/lib/libvirt/images/win7.snapshot1
hdc        /vm/template/windows7.iso

Далее мы можем скопировать основную FS. Например так.

cp /vm/win7.qcow2 /backup/win7.qcow2

Теперь сделаем merge snapshot и основной FS.

# virsh blockcommit win7 hda --active --verbose --pivot
Block Commit: [100 %]
Successfully pivoted

Проверяем какой диск использует контейнер.

# virsh domblklist win7
Target     Source
------------------------------------------------
hda        /vm/win7.qcow2
hdc        /var/lib/libvirt/images/win7.snapshot1

Удаляем snapshot.

virsh snapshot-delete win7 --current

Если появляется ошибка.

error: Failed to delete snapshot snapshot1
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet

То удаляем сначала metadata snapshot.

virsh snapshot-delete --metadata win7 --current

Далее сами удаляем файл snapshot.

rm -rf /var/lib/libvirt/images/win7.snapshot1

Пример, скрипт. Не используйте его, если точно не понимаете что он делает.

#/bin/bash
# Добавить проверки на ошибки выполнения команд.
BACKUP_DIR=/home/lepus/backup/local/vm
DATE=$(date +%F)
 
if ! [ -d $BACKUP_DIR/$DATE/ ]; then
	mkdir $BACKUP_DIR/$DATE
fi
 
virsh list | awk '{print $2}' | while read line
do
IFS=" " set -- $line
 
if [ -z "$1" ]; then continue; fi
if [ "kvm" != "${1//[^a-z]/}" ]; then continue; fi
 
type=$(cat /etc/libvirt/qemu/$1.xml | grep -Po "(?<=(driver name='qemu' type=')).*(?=' cache)")
if [ "raw" == "$type" ]; then continue; fi
 
file=$(cat /etc/libvirt/qemu/$1.xml | grep -Po "(?<=(source file=')).*(?=')")
 
is_snapshot=$(echo $file | awk -F. '{print $NF}')
if [ "qcow2" == "$is_snapshot" ];
then
	virsh snapshot-create-as $1 snapshot --disk-only --atomic
	nice -n 19 ionice -c3 tar --use-compress-program=pigz -cpf $BACKUP_DIR/$DATE/$1.tar.gz $file
	nice -n 19 ionice -c3 tar --use-compress-program=pigz -cpf $BACKUP_DIR/$DATE/$1.xml.tar.gz /etc/libvirt/qemu/$1.xml
fi
 
snapshot=$(virsh domblklist $1 | awk '{print $2}' | sed '/Source/d' | grep -v '^$')
is_snapshot=$(echo $snapshot | awk -F. '{print $NF}')
if [ "snapshot" != "$is_snapshot" ]; then echo $1; continue; fi
 
virsh blockcommit $1 hda --active --verbose --pivot
virsh snapshot-delete --metadata $1 --current
if [ -f $snapshot ];
then 
	echo "$snapshot delete"
	rm -rf $snapshot
fi
 
done

ZFS KVM backup VM

Это намного удобнее и быстрее чем qcow2. Тестировал на Debian 8. ZFS забираем на сайте zfsonlinux.org

wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_5_all.deb
dpkg -i zfsonlinux_5_all.deb
apt-get update
apt-get install debian-zfs

Проверяем, что ZFS работает.

# zfs list
no datasets available

Чтобы ZFS не сьела всю память, выставим лимит.

echo "options zfs zfs_arc_max=4294967296" > /etc/modprobe.d/zfs.conf

Значение должно быть в битах. Если вы сделаете например так.

echo "options zfs zfs_arc_max=4096M" > /etc/modprobe.d/zfs.conf

То после ребута, получите.

Failed to load ZFS module stack.
Load the module manually by running 'insmod /zfs.ko' as root.

ZFS умеет RAID. Но пока мне все-таки привычнее mdadm.

mdadm --create /dev/md/2 --level=0 --raid-devices=2 /dev/sda4 /dev/sdb4

Создадим pool.

zpool create -f kvm /dev/md2

Отключаем automount.

zfs set mountpoint=legacy kvm

Создадим отдельный FS для KVM контейнера и cделаем mount => /vm/1/

# zfs create -o mountpoint=legacy kvm/1
# zfs set mountpoint=/vm/1 kvm/1
# zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
kvm     772K  1.95T    96K  legacy
kvm/1   100K  1.95T   100K  /vm/1/

Когда нам нужно сделать бекап контейнера => сначала сделаем snapshot.

# zfs snapshot kvm/1@backup
# zfs list -t snapshot
NAME           USED  AVAIL  REFER  MOUNTPOINT
kvm/1@backup      0      -   100K  -

Монтируем snapshot.

mount -t zfs kvm/1@backup /vm/backup

Теперь можно запихнуть данные в архив и удалить snapshot.

tar -czf /root/kvm1.tar.gz /vm/backup/
umount /vm/backup
zfs destroy kvm/1@backup

Посмотреть все значения.

# zfs get all kvm
NAME  PROPERTY              VALUE                  SOURCE
kvm   type                  filesystem             -
kvm   creation              Fri Apr 10 12:15 2015  -
kvm   used                  16M                    -
kvm   available             1.95T                  -
kvm   referenced            96K                    -
kvm   compressratio         1.00x                  -
kvm   mounted               no                     -
kvm   quota                 none                   default
kvm   reservation           none                   default
kvm   recordsize            128K                   default
kvm   mountpoint            legacy                 local
kvm   sharenfs              off                    default
kvm   checksum              on                     default
kvm   compression           off                    default
kvm   atime                 on                     default
kvm   devices               on                     default
kvm   exec                  on                     default
kvm   setuid                on                     default
kvm   readonly              off                    default
kvm   zoned                 off                    default
kvm   snapdir               hidden                 default
kvm   aclinherit            restricted             default
kvm   canmount              on                     default
kvm   xattr                 on                     default
kvm   copies                1                      default
kvm   version               5                      -
kvm   utf8only              off                    -
kvm   normalization         none                   -
kvm   casesensitivity       sensitive              -
kvm   vscan                 off                    default
kvm   nbmand                off                    default
kvm   sharesmb              off                    default
kvm   refquota              none                   default
kvm   refreservation        none                   default
kvm   primarycache          all                    default
kvm   secondarycache        all                    default
kvm   usedbysnapshots       0                      -
kvm   usedbydataset         96K                    -
kvm   usedbychildren        15.9M                  -
kvm   usedbyrefreservation  0                      -
kvm   logbias               latency                default
kvm   dedup                 off                    local
kvm   mlslabel              none                   default
kvm   sync                  standard               default
kvm   refcompressratio      1.00x                  -
kvm   written               96K                    -
kvm   logicalused           15.4M                  -
kvm   logicalreferenced     9.50K                  -
kvm   snapdev               hidden                 default
kvm   acltype               off                    default
kvm   context               none                   default
kvm   fscontext             none                   default
kvm   defcontext            none                   default
kvm   rootcontext           none                   default
kvm   relatime              off                    default
kvm   redundant_metadata    all                    default
kvm   overlay               off                    default

KVM LVM backup

Собираю RAID массив из двух дисков.

mdadm --create /dev/md/3 --level=0 --raid-devices=2 /dev/sda5 /dev/sdb5

Создаю физический том.

# pvcreate /dev/md3
  Physical volume "/dev/md3" successfully created

Создаю группу томов.

# vgcreate ws /dev/md3
  Volume group "ws" successfully created

Создаю логический раздел.

# lvcreate -n kvm -L500G ws
Logical volume "kvm" created

Создаю файловую систему ext4.

# mkfs.ext4 /dev/ws/kvm
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 131072000 4k blocks and 32768000 inodes
Filesystem UUID: 2afad736-a86a-476c-bab6-5ea131ea7515
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Монтирую файловую систему. </pre>mkdir /vm2 mount /dev/ws/kvm /vm2</pre>

В директории /vm2 => находятся KVM контейнеры.
Когда нужно сделать бекап => создаем snapshot, монтируем его, создаем архив, делаем umount и удаляем snapshot.

lvcreate -s -n snap_kvm -L500G /dev/ws/kvm
mkdir /mnt/snapshots
mount /dev/ws/snap_kvm /mnt/snapshots
tar -czf /root/backup.tar.gz /mnt/snapshots/kvm1/root.img
umount /dev/ws/snap_kvm
lvremove /dev/ws/snap_kvm

Размер snapshot`a должен быть не меньше размера данных логического раздела.
Если размер будет меньше, то вы получите ошибку и не сможете выполнить mount.
Кстати, в ZFS нет такого недостатка.

# lvs
  /dev/ws/snap_kvm: read failed after 0 of 4096 at 536870846464: Input/output error
  /dev/ws/snap_kvm: read failed after 0 of 4096 at 536870903808: Input/output error
  /dev/ws/snap_kvm: read failed after 0 of 4096 at 0: Input/output error
  /dev/ws/snap_kvm: read failed after 0 of 4096 at 4096: Input/output error
  LV       VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  kvm      ws   owi-aos--- 500.00g
  snap_kvm ws   swi-I-s--- 100.00m      kvm    100.00

# mount /dev/ws/snap_kvm /mnt/snapshots
mount: wrong fs type, bad option, bad superblock on /dev/mapper/ws-snap_kvm,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

Mount RAW and LVM KVM

Создаем loop devices.

losetup /dev/loop0 /vm/kvm/1/root.hdd

Создаем device maps from partition tables

kpartx -a /dev/loop0

Проверяем => loop0p1 loop0p2 loop0p5 => разделы внутри контейнера.

ls /dev/mapper/
control  loop0p1  loop0p2  loop0p5

loop0p1 => /boot (ext3), мы можем его сразу же примонтировать.

# mount /dev/mapper/loop0p2 /mnt/
# ls /mnt
config-3.16.0-4-amd64  grub  initrd.img-3.16.0-4-amd64  lost+found  System.map-3.16.0-4-amd64  vmlinuz-3.16.0-4-amd64

# umount /mnt

loop0p5 => / (lvm), нужно монтировать через lvm.

# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "debian-vg" using metadata type lvm2

# vgchange -ay debian-vg
  1 logical volume(s) in volume group "debian-vg" now active

# ls /dev/debian-vg/
root

# mount /dev/debian-vg/root /mnt
# ls /mnt
bin   dev  home        lib    lost+found  mnt  proc  run   srv  tmp  var
boot  etc  initrd.img  lib64  media       opt  root  sbin  sys  usr  vmlinuz

umount lvm можно сделать так.

# umount /mnt
# vgchange -an debian-vg
  0 logical volume(s) in volume group "debian-vg" now active

# kpartx -dv /dev/loop0
del devmap : loop0p5
del devmap : loop0p2
del devmap : loop0p1

# losetup -d /dev/loop0
# vgscan
  Reading all physical volumes.  This may take a while...
  No volume groups found

OpenVZ

Установка контейнеров происходит моментально. Управление IP адресами - проще. Не нужно указывать MAC адрес.

cd /vz/template/cache/
wget http://download.openvz.org/template/precreated/debian-7.0-x86_64-minimal.tar.gz
vzctl create 101 --ostemplate debian-7.0-x86_64-minimal --config vswap-4g --ipadd 198.27.87.217
vzctl start 101
vzctl enter 101
passwd
exit

Теперь попробуем зайти по SSH на VPS. Работает ;)
ovz-enter.png

Осталось написать

Так же нужно подробно написать про OpenVZ.