Виртуализация XEN на Debian 7 с испльзованием flashcache (ФК) и LVM

Xen – одна из надежных и проверенных временем систем виртуализации. Одним из способов ускорить ее работу является использование связки HDD+SSD (SSD используется как flashcache). Ниже приводятся пошаговые инструкции для создания сервера, использующего flashcahce и виртуализацию XEN, а так же основные инструменты для управления гостевыми системами в данной виртуализации.

  1. Сервер содержит 2 диска HDD и один диск SSD (минимальная конфигурация)
  2. Объединяем HDD в RAID1 и создаем md-устройства:
    – md0 (под swap)
    – md1 (под / )
    – md2 (под будущий flashcache-раздел)
    – НЕ создаем LVM на данном этапе!
  3. Устанавливаем ОС

 

Устанавливаем и настраиваем виртуализацию XEN:

 

  1. Устанавливаем пакет xen-linux-system:
    apt-get install xen-linux-system
  2. Выставляем приоритет загрузки гипервизора Xen из GRUB:
    dpkg-divert -divert /etc/grub.d/08_linux_xen -rename /etc/grub.d/20_linux_xen
  3. Чтобы настройки GRUB вступили в силу, запустим обновление конфигурации GRUB:
    update-grub
  4. Перезагружаем сервер:
    reboot

Создаем устройство с ФК (из md2 и SSD):

  1. Устанавливаем пакеты git-core, make, gcc, dkms
    apt-get -y install git-core make gcc dkms
    cd /opt
  2. Копируем у фейсбука исходники их ФК
    git clone https://github.com/facebook/flashcache.git
    cd flashcache
  3. Проверка перед компиляцией исходного кода; создание библиотеки ФК
    make
    make install
  4. Добавляем библиотеку ФК в ядро ОС
    modprobe flashcache
  5. Проверяем, что ФК установился  (dmesg – последние системные команды, tail – последние 10 команд)
    dmesg | tail
    – видим строку [10143.068592] flashcache: flashcache-3.1.1 initialized – значит, все в порядке
  6. Создаем ФК, cachedev – имя будущего ФК-устройства, 99999999999 – для выявления максимально доступного пространства под ФК (копируем из сообщения об ошибке)
    flashcache_create -p back -s 9999999999 cachedev /dev/sda  /dev/md2
  7. После сообщения об ошибке повторяем команду с правильными цифрами
    flashcache_create -p back -s 117161984 cachedev /dev/sda  /dev/md2
  8. Делаем ФК закгрузочным
    make -f Makefile.dkms all boot_conf
  9. Если нет в системе, то устанавливаем пакет LVM2
    apt-get install lvm2
  10. Скачиваем и настраиваем скрипт для инициализации ФК
    git clone https://github.com/feldsam/flashcache-debian.git
    cp flashcache-debian/flashcache /etc/init.d/

    chmod +x /etc/init.d/flashcache
    update-rc.d flashcache defaults
  11. Перезагружаем сервер, убеждаемся, что загружается ядро XEN 4.1
  12. Мониторим параметры работы flashcache
    dmsetup status cachedev или  dmsetup table cachedev
  13. Ограничиваем потребление оперативной памяти гипервизором:
    xm mem-set Domain-0 1526   (1526 – произвольно выбираемое значение)
  14. Создаем группу томов vg
    vgcreate vg /dev/mapper/cachedev   проверяем:   vgdisplay

Есть 2 основных способа создавать VDS:  

Способ 1:  создание гостевых систем с помощью xen-tools

  1. Устанавливаем xen-tools
    apt-get install xen-tools
  2. Обдумываем настройки, с которыми по умолчанию будут создаваться гостевые системы,
    делаем бекап файла /etc/xen-tools/xen-tools.cfg  и затем редактируем его:# Использовать для образов гостевых систем физический том VG
    lvm = vg
    # Использовать debootstrap для установки системы на гостевой том
    install-method = debootstrap
    # Выделить для вновь создаваемой гостевой системы 10 гигабайт на логическом томе
    size = 10Gb
    # По умолчанию создавать гостевую систему, которой выделено 2 гигибайта оперативной памяти
    memory = 2Gb
    # По умолчанию создавать гостевую систему, которой выделен 1 гигабайт раздела подкачки
    swap = 1Gb
    # По умолчанию использовать файловую систему ext4
    fs = ext4
    # Настройки монтирования раздела ext4
    ext4_options = noatime,nodiratime,errors=remount-ro
    # Настройки задают ветку дистрибутива, версию ядра и загрузочного образа
    dist = `xt-guess-suite-and-mirror –suite`
    image = sparse
    kernel = /boot/vmlinuz-`uname -r`
    initrd = /boot/initrd.img-`uname -r`
    mirror = `xt-guess-suite-and-mirror -mirror`

 

  1. Все гостевые виртуальные сервера будут подключаться через сетевой мост, чтобы его задействовать, выполняем:
    apt-get install bridge-utils
  2. Настроим интерфейс xenbr0, подсоединив его к физическому сетевому интерфейсу eth0.
    Для этого впишем в файл /etc/network/interfaces следующие настройки:auto xenbr0
    iface xenbr0 inet static
    address ???.???.???.???
    netmask 255.255.25?.0
    bridge_ports eth0
    bridge_maxwait 0
  1. Создаем новую гостевую систему с именем name, настройками по умолчанию, но с двумя выделенными системе ядрами процессора.
  2. Введём на хост-системе следующую команду:
    xen-create-image -hostname name -ip ???.???.???.??? -vcpus 2 -pygrub -dist wheezy
  3. Редактируем конфигурацию только что созданной гостевой машины /etc/xen/name.cfg:
    vif = [ ‘ip= ???.???.???.???, script=vif-bridge, bridge=xenbr0’ ]

Способ 2: установка через VNC из ISO-образа

  1. Переходим в каталог /root/templates/ и скачиваем туда iso-образ нужной ОС.
  2. Создаем файл name в директории  /etc/xen/
  3. Заносим в файл /etc/xen/name данные будущей гостевой системы:kernel = ‘/usr/lib/xen-4.1/boot/hvmloader’
    builder = ‘hvm’
    device_model=’/usr/lib/xen-4.1/bin/qemu-dm’
    acpi = 1
    apic = 1
    pae=1
    shadow_memory = 60
    memory =1024
    vcpus = 2
    cpu_weight = 2
    name = “name”
    vif = [   ‘ip= ???.???.???.???,bridge=xenbr0,mac=00:14:3e:90:ee:4e’    ]   #МАС произвольный
    disk = [
    ‘phy:/dev/vg/name,hda,w’,
    ‘file:/root/templates/название_образа.iso,ioemu:hdc:cdrom,r’,
    ]
    boot=’dc’
    sdl=0
    vnc=1
    vncdisplay=78                                   #выбираем не занятый другими гостевыми машинами порт
    vncpasswd=’password‘
    vnclisten=’0.0.0.0′
    serial=’pty’
    usbdevice=’tablet’
  1. Создаем LV-устройство для гостевой системы:
    lvcreate -L15G -n name vg
  1. Включаем гостевую систему (включаем сервер):
    xm create /etc/xen/name
  2. Подключаемся к гостевой системе через VNC (IP хост-системы:78) и устанавливаем ОС.
  3. Чтобы загрузка больше не производилась с образа, после установки нужно закомментировать строку:
    # ‘file:/root/templates/название_образа.iso,ioemu:hdc:cdrom,r’

Управление гостевыми системами

  1. Запуск гостевой машины:
    xm create /etc/xen/name.cfg
  1. Остановка гостевой машины:
    xm shutdown -w name   (параметр -w заставляет консоль подождать выполнение)
  2. Остановка гостевой машины name (аналог отключения питания):
    xm destroy name
  3. Просмотр списка активных гостевых машин:
    xm list
  4. Просмотр потребления ресурсов внутри каждой гостевой машины:
    xm top
  5. Можно зайти в файловую систему выключенной гостевой машины:
    mount /dev/vg/name /mnt
    (после чего в каталоге /mnt появится содержимое диска гостевой системы)
  6. Чтобы зайти в ФС гостевой машины с правами root:
    chroot /mnt  (после завершения работы в ФС гостевой маш. выполняем exit)
  7. После всех манипуляций с файлами гостевой машины отмонтируем раздел:
    umount /mnt
  8. Вход на консоль гостевой машины:
    xm console name    ( для отключения от консоли можно нажать Ctrl и ] )