Xen. Создание PV виртуальной машины c Debian.

У нас уже был установлен и запущен гипервизор xen, сейчас мы установим на него виртуальную машину с Debian в режиме паравиртуализации.

Качаем последний образ amd64 netinst с debian.org, на момент написания статьи это Debian 8.4

wget http://cdimage.debian.org/debian-cd/8.4.0/amd64/iso-cd/debian-8.4.0-amd64-netinst.iso

Для систематизации и чтоб не запутаться где у нас что, создаем папку /root/xen/debian-8/iso и кладем образ туда.

Следует сразу сказать, что мы используем lvm, для дисков виртуальных машин у нас выделен отдельный vg(volume group), а диски для виртуальных машин — lv(logical volume).

Для простоты настройки и автоматизации создания виртуальных машин мной написан следующий скрипт

#!/bin/bash
 
name=testvm.local
memory=3072
cpu=1
 
lv=${name}
vg=vm
sizelv=5
 
iso=/root/xen/debian-8/iso/debian-8.4.0-amd64-netinst.iso
xenauto=/etc/xen/auto/
 
lvcreate -L${sizelv}Gb -n${lv} ${vg}
 
cat <<EOF > ./install-${name}
name = "${name}"
memory = ${memory}
vcpus = ${cpu}
 
disk = [ 
	'file:${iso},xvdd:cdrom,r', 
	'phy:/dev/${vg}/${lv},xvda,w'
	]
 
bootloader = "pygrub"
bootloader_args = "--kernel=/install.amd/xen/vmlinuz --ramdisk=/install.amd/xen/initrd.gz"
 
vif = [ 'bridge=xenbr1' ]
EOF
 
cat <<EOF > ${xenauto}$name
name = "${name}"
memory = ${memory}
vcpus = ${cpu}
disk = [ 
	'phy:/dev/${vg}/${lv},xvda,w'
	]
 
bootloader = "pygrub"
vif = [ 'bridge=xenbr1' ]
 
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
 
EOF

Описание переменных:
name — имя виртуальной машины
memory — количество оперативной памяти выделенной виртуальной машине
cpu — количество процессоров выделенных виртуальной машине
lv=${name} — имя lv на котором будет располагаться файловая система виртуальной машины (равно имени виртуальной машины)
vg — имя vg в которой будет создан lv
sizelv — размер lv в Гб
iso — путь до iso образа
xenauto — путь до папки в которой располагаются конфиги виртуальных машин запускающиеся автоматически после загрузки сервера(настраивается в конфиге xen)

Заполняем параметры и выполняем скрипт.
После его выполнения создастся необходимый lv и два файла, один install-${name} необходим для запуска установки виртуальной машины, второй ${xenauto}$name необходим для последующего запуска виртуальной машины.

Запускаем установку

xl create install-${name} -c

Попадаем в консоль устанавливаемой виртуальной машины, проходим стандартный диалог установки(не должно составить труда). После установки виртуальная машина выключается.

Для запуска виртуальной машины (если есть желание посмотреть на процесс загрузки, можно добавить опцию -c , выйти из консоли виртуальной машины можно комбинацией Ctrl+] ):

xl create ${xenauto}$name

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

xl list

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