Xen – одна из надежных и проверенных временем систем виртуализации. Одним из способов ускорить ее работу является использование связки HDD+SSD (SSD используется как flashcache). Ниже приводятся пошаговые инструкции для создания сервера, использующего flashcahce и виртуализацию XEN, а так же основные инструменты для управления гостевыми системами в данной виртуализации.
- Сервер содержит 2 диска HDD и один диск SSD (минимальная конфигурация)
- Объединяем HDD в RAID1 и создаем md-устройства:
– md0 (под swap)
– md1 (под / )
– md2 (под будущий flashcache-раздел)
– НЕ создаем LVM на данном этапе! - Устанавливаем ОС
Устанавливаем и настраиваем виртуализацию XEN:
- Устанавливаем пакет xen-linux-system:
apt-get install xen-linux-system - Выставляем приоритет загрузки гипервизора Xen из GRUB:
dpkg-divert -divert /etc/grub.d/08_linux_xen -rename /etc/grub.d/20_linux_xen - Чтобы настройки GRUB вступили в силу, запустим обновление конфигурации GRUB:
update-grub - Перезагружаем сервер:
reboot
Создаем устройство с ФК (из md2 и SSD):
- Устанавливаем пакеты git-core, make, gcc, dkms
apt-get -y install git-core make gcc dkms
cd /opt - Копируем у фейсбука исходники их ФК
git clone https://github.com/facebook/flashcache.git
cd flashcache - Проверка перед компиляцией исходного кода; создание библиотеки ФК
make
make install - Добавляем библиотеку ФК в ядро ОС
modprobe flashcache - Проверяем, что ФК установился (dmesg – последние системные команды, tail – последние 10 команд)
dmesg | tail
– видим строку [10143.068592] flashcache: flashcache-3.1.1 initialized – значит, все в порядке - Создаем ФК, cachedev – имя будущего ФК-устройства, 99999999999 – для выявления максимально доступного пространства под ФК (копируем из сообщения об ошибке)
flashcache_create -p back -s 9999999999 cachedev /dev/sda /dev/md2 - После сообщения об ошибке повторяем команду с правильными цифрами
flashcache_create -p back -s 117161984 cachedev /dev/sda /dev/md2 - Делаем ФК закгрузочным
make -f Makefile.dkms all boot_conf - Если нет в системе, то устанавливаем пакет LVM2
apt-get install lvm2 - Скачиваем и настраиваем скрипт для инициализации ФК
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 - Перезагружаем сервер, убеждаемся, что загружается ядро XEN 4.1
- Мониторим параметры работы flashcache
dmsetup status cachedev или dmsetup table cachedev - Ограничиваем потребление оперативной памяти гипервизором:
xm mem-set Domain-0 1526 (1526 – произвольно выбираемое значение) - Создаем группу томов vg
vgcreate vg /dev/mapper/cachedev проверяем: vgdisplay
Есть 2 основных способа создавать VDS:
Способ 1: создание гостевых систем с помощью xen-tools
- Устанавливаем xen-tools
apt-get install xen-tools - Обдумываем настройки, с которыми по умолчанию будут создаваться гостевые системы,
делаем бекап файла /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`
- Все гостевые виртуальные сервера будут подключаться через сетевой мост, чтобы его задействовать, выполняем:
apt-get install bridge-utils - Настроим интерфейс xenbr0, подсоединив его к физическому сетевому интерфейсу eth0.
Для этого впишем в файл /etc/network/interfaces следующие настройки:auto xenbr0
iface xenbr0 inet static
address ???.???.???.???
netmask 255.255.25?.0
bridge_ports eth0
bridge_maxwait 0
- Создаем новую гостевую систему с именем name, настройками по умолчанию, но с двумя выделенными системе ядрами процессора.
- Введём на хост-системе следующую команду:
xen-create-image -hostname name -ip ???.???.???.??? -vcpus 2 -pygrub -dist wheezy - Редактируем конфигурацию только что созданной гостевой машины /etc/xen/name.cfg:
vif = [ ‘ip= ???.???.???.???, script=vif-bridge, bridge=xenbr0’ ]
Способ 2: установка через VNC из ISO-образа
- Переходим в каталог /root/templates/ и скачиваем туда iso-образ нужной ОС.
- Создаем файл name в директории /etc/xen/
- Заносим в файл /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’
- Создаем LV-устройство для гостевой системы:
lvcreate -L15G -n name vg
- Включаем гостевую систему (включаем сервер):
xm create /etc/xen/name - Подключаемся к гостевой системе через VNC (IP хост-системы:78) и устанавливаем ОС.
- Чтобы загрузка больше не производилась с образа, после установки нужно закомментировать строку:
# ‘file:/root/templates/название_образа.iso,ioemu:hdc:cdrom,r’
Управление гостевыми системами
- Запуск гостевой машины:
xm create /etc/xen/name.cfg
- Остановка гостевой машины:
xm shutdown -w name (параметр -w заставляет консоль подождать выполнение) - Остановка гостевой машины name (аналог отключения питания):
xm destroy name - Просмотр списка активных гостевых машин:
xm list - Просмотр потребления ресурсов внутри каждой гостевой машины:
xm top - Можно зайти в файловую систему выключенной гостевой машины:
mount /dev/vg/name /mnt
(после чего в каталоге /mnt появится содержимое диска гостевой системы) - Чтобы зайти в ФС гостевой машины с правами root:
chroot /mnt (после завершения работы в ФС гостевой маш. выполняем exit) - После всех манипуляций с файлами гостевой машины отмонтируем раздел:
umount /mnt - Вход на консоль гостевой машины:
xm console name ( для отключения от консоли можно нажать Ctrl и ] )
Спасибо, интересная и понятная статься. (не взерая на опечатки в командах).
Хотел спросить: а как отключить кеширование не потеряв данные ?
Есть кештрованное устройство… Команда dmsetup status cachedev отображает статистику, на полученном разделе имеются данные. Хочу, к примеру, изменить режим кеширования, заменить один ССД на рейд из ССДшек… Но данные опосаюсь потерять.