Создание виртуальных машин Linux » История » Версия 17
Версия 16 (Владимир Ипатов, 29.05.2019 19:40) → Версия 17/20 (Владимир Ипатов, 29.05.2019 19:49)
h1. Создание виртуальных машин Linux
{{toc}}
[[OVERVIEW]] | [[INSTALL]] | [[SETUP]] | [[OPERATIONS]] | [[LICENSE]]
[[ОБЗОР]] | [[УСТАНОВКА]] | [[НАСТРОЙКА]] | [[ОПЕРАЦИИ]] | [[ЛИЦЕНЗИЯ]]
h2. Создание новой виртуальной машины Debian
Новая виртуальная машина на узле NODE1 с вторичным узлом NODE2, с одним диском на 10гб и с 256МБ RAM.
INSTANCE_NAME должен резолвиться в DNS или /etc/hosts.
<pre>
gnt-instance add -t drbd -o debian+default -s 10g -B memory=256m --no-name-check --no-ip-check -n NODE1:NODE2 INSTANCE_NAME
</pre>
У данной машины будет настроено получение настроек сети по DHCP
Более сложный пример: создание машины
* На узле gnt2
* С вторичным узлом gnt1
* С тремя дисками
** 10g on volume group xenvg
** 600m on volume group xenvg (например, для swap)
** 5g on volume group newvg
* DNS имя: vg-test1
* IP адрес выяснится автоматически из DNS резолвингом имени vg-test1, а настройки сети будут взяты для подходящей подсети из @/etc/ganeti/networks@.
Если днс сервера в сети нет, то следует использовать аргументы --no-ip-check --no-name-check.
<pre>
gnt-instance add -t drbd -o debian+default --disk 0:size=10g,vg=xenvg --disk 1:size=600m,vg=xenvg --disk 2:size=5g,vg=newvg,metavg=newvg -B memory=256m -n gnt2:gnt1 vg-test1
</pre>
Обратите внимание, что если диск задается на VG, отличной от умолчания (в примере - newvg) то надо также указывать параметр metavg
h2. Выбор версии Linux для установки.
За выбор версии дистрибутива отвечает параметр -o:
-o debian+default - дебиан той же версии, что и хост-система.
-o debian+squeeze - дебиан 6 версии, squeeze
-o debian+wheezy - дебиан 7 версии, wheezy
-o debian+jessie - дебиан 8 версии, jessie
-o debian+stretch - дебиан 9 версии, stretch
-o ubuntu+default - убунту последней LTS версии
-o ubuntu+lucid - убунту 10.04 LTS, lucid
-o ubuntu+precise - убунту 10.04 LTS, precise
-o ubuntu+trusty - убунту 14.04 LTS, trusty
-o ubuntu+xenial - убунту 16.04 LTS, xenial
-o centos+default - CentOS 7.0
h2. Подключение к консоли машины
Для подключения к консоли машины требуется ввести команду:
<pre>
gnt-intance console ИНСТАНС
</pre>
h3. SSH
Для подключения к виртуальной машине по ssh из Windows нужно скачать клиент putty: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
h2. Импорт виртуальной машины
Например, вы имеете образ, tar или какой-то еще архив с машиной с другого XEN сервера (или физической машины).
Для того, чтобы запустить ее в кластере SCI, нужно
h3. Создайте виртуальную машину с флагом --no-install
<pre>
gnt-instance add -t drbd -B memory=5192m -n NODE1:NODE2 -o debootstrap+default --no-install --no-name-check --no-ip-check --net=0:link=xen-lan --disk 0:size=4G --disk 1:size=1024M --disk 2:size=100G --disk 3:size=50G INSTANCE_NAME
</pre>
--no-namecheck Используется когда имя машины не резолвится в ip (может резолвится через DNS или /etc/hosts).
--no-ip-check Используется, когда ip не предоставляется на этапе создания машины.
h3. Активируйте дисковую систему машины, без ее запуска
<pre>
gnt-instance activate-disks INSTANCE_NAME
</pre>
эта команда напишет имена устройств для доступа к дискам.
h3. Скопируйте на диски имеющуюся файловую систему
*Примечание:* Диски в ganeti представляют собой не разделы (партиции) /dev/xvda1, а именно диски с таблицей разделов /dev/xvda.
Перед копированием информации на такой диск, на нем надо создать таблицу разделов и дисковый раздел. Для этого:
1. Используйте команду
<pre>
fdisk DISK
</pre>
(укажите ей путь к диску, который выдала команда activate-disks)
2. Смонтируйте раздел внутри диска командой
<pre>
kpartx -a DISK
</pre>
она найдет на диске разделы и создаст устройства в /dev
3. После завершения копирования и отмонтирования раздела выполните
<pre>
kpartx -d DISK
</pre>
h3. Запустите виртуальную машину
Наконец можно погасить диски и запустить виртуальную машину:
<pre>
gnt-instance deactivate-disks INSTANCE_NAME
gnt-instance startup INSTANCE_NAME
</pre>
h2. Установка других вариантов Linux
h3. Установка Ubuntu
Для Ubuntu подготовлен os variant ubootstrap+default.
Для создания машины с ubuntu нужно запустить команду наподобие этой:
<pre>
gnt-instance add -t drbd -o ubootstrap+default -s 4g -B memory=512m -n gnt1:gnt2 ubuntu
</pre>
h3. Установка CentOS
Для создания машины с CentOS нужно запустить команду наподобие этой:
<pre>
gnt-instance add -t drbd -o yumbootstrap+default -s 4g -B memory=512m -n gnt1:gnt2 centos
</pre>
т.к. в centos 7.4 red hat сломал поддержку PV (как умудрились в минорном апгрейде ядра это сломать и зачем - загадка), то нужно поставит более старое ядро:
http://archive.kernel.org/centos-vault/7.3.1611/os/x86_64/Packages/kernel-3.10.0-514.el7.x86_64.rpm
<pre>
kpartx -av /dev/drbdX
mount /dev/mapper/drbdXp1 /mnt
cd /mnt
mount -o bind /dev dev
mount -o bind /proc proc
mount -o bind /sys sys
chroot ./
wget http://archive.kernel.org/centos-vault/7.3.1611/os/x86_64/Packages/kernel-3.10.0-514.el7.x86_64.rpm
rpm -i kernel-3.10.0-514.el7.x86_64.rpm
exit
umount dev
umount proc
umount sys
cd ~
umount /mnt
kpartx -dv /dev/drbdX
</pre>
далее редактируем /boot/grum/menu.lst:
<pre>
default 0
timeout 5
color cyan/blue white/blue
title CentOS, default kernel
root (hd0,0)
kernel /boot/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/xvda1 ro
initrd /boot/initramfs-3.10.0-514.el7.x86_64.img
title CentOS, default kernel (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/xvda1 ro single
initrd /boot/initramfs-3.10.0-514.el7.x86_64.img
</pre>
альтернативно можно использовать CentOS Plus Kernel https://wiki.centos.org/AdditionalResources/Repositories/CentOSPlus
h2. Управление виртуальными машинами
Всевозможные простые операции:
<pre>
gnt-instance (startup|shutdown|reboot|failover|remove|console) INSTANCE
</pre>
{{toc}}
[[OVERVIEW]] | [[INSTALL]] | [[SETUP]] | [[OPERATIONS]] | [[LICENSE]]
[[ОБЗОР]] | [[УСТАНОВКА]] | [[НАСТРОЙКА]] | [[ОПЕРАЦИИ]] | [[ЛИЦЕНЗИЯ]]
h2. Создание новой виртуальной машины Debian
Новая виртуальная машина на узле NODE1 с вторичным узлом NODE2, с одним диском на 10гб и с 256МБ RAM.
INSTANCE_NAME должен резолвиться в DNS или /etc/hosts.
<pre>
gnt-instance add -t drbd -o debian+default -s 10g -B memory=256m --no-name-check --no-ip-check -n NODE1:NODE2 INSTANCE_NAME
</pre>
У данной машины будет настроено получение настроек сети по DHCP
Более сложный пример: создание машины
* На узле gnt2
* С вторичным узлом gnt1
* С тремя дисками
** 10g on volume group xenvg
** 600m on volume group xenvg (например, для swap)
** 5g on volume group newvg
* DNS имя: vg-test1
* IP адрес выяснится автоматически из DNS резолвингом имени vg-test1, а настройки сети будут взяты для подходящей подсети из @/etc/ganeti/networks@.
Если днс сервера в сети нет, то следует использовать аргументы --no-ip-check --no-name-check.
<pre>
gnt-instance add -t drbd -o debian+default --disk 0:size=10g,vg=xenvg --disk 1:size=600m,vg=xenvg --disk 2:size=5g,vg=newvg,metavg=newvg -B memory=256m -n gnt2:gnt1 vg-test1
</pre>
Обратите внимание, что если диск задается на VG, отличной от умолчания (в примере - newvg) то надо также указывать параметр metavg
h2. Выбор версии Linux для установки.
За выбор версии дистрибутива отвечает параметр -o:
-o debian+default - дебиан той же версии, что и хост-система.
-o debian+squeeze - дебиан 6 версии, squeeze
-o debian+wheezy - дебиан 7 версии, wheezy
-o debian+jessie - дебиан 8 версии, jessie
-o debian+stretch - дебиан 9 версии, stretch
-o ubuntu+default - убунту последней LTS версии
-o ubuntu+lucid - убунту 10.04 LTS, lucid
-o ubuntu+precise - убунту 10.04 LTS, precise
-o ubuntu+trusty - убунту 14.04 LTS, trusty
-o ubuntu+xenial - убунту 16.04 LTS, xenial
-o centos+default - CentOS 7.0
h2. Подключение к консоли машины
Для подключения к консоли машины требуется ввести команду:
<pre>
gnt-intance console ИНСТАНС
</pre>
h3. SSH
Для подключения к виртуальной машине по ssh из Windows нужно скачать клиент putty: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
h2. Импорт виртуальной машины
Например, вы имеете образ, tar или какой-то еще архив с машиной с другого XEN сервера (или физической машины).
Для того, чтобы запустить ее в кластере SCI, нужно
h3. Создайте виртуальную машину с флагом --no-install
<pre>
gnt-instance add -t drbd -B memory=5192m -n NODE1:NODE2 -o debootstrap+default --no-install --no-name-check --no-ip-check --net=0:link=xen-lan --disk 0:size=4G --disk 1:size=1024M --disk 2:size=100G --disk 3:size=50G INSTANCE_NAME
</pre>
--no-namecheck Используется когда имя машины не резолвится в ip (может резолвится через DNS или /etc/hosts).
--no-ip-check Используется, когда ip не предоставляется на этапе создания машины.
h3. Активируйте дисковую систему машины, без ее запуска
<pre>
gnt-instance activate-disks INSTANCE_NAME
</pre>
эта команда напишет имена устройств для доступа к дискам.
h3. Скопируйте на диски имеющуюся файловую систему
*Примечание:* Диски в ganeti представляют собой не разделы (партиции) /dev/xvda1, а именно диски с таблицей разделов /dev/xvda.
Перед копированием информации на такой диск, на нем надо создать таблицу разделов и дисковый раздел. Для этого:
1. Используйте команду
<pre>
fdisk DISK
</pre>
(укажите ей путь к диску, который выдала команда activate-disks)
2. Смонтируйте раздел внутри диска командой
<pre>
kpartx -a DISK
</pre>
она найдет на диске разделы и создаст устройства в /dev
3. После завершения копирования и отмонтирования раздела выполните
<pre>
kpartx -d DISK
</pre>
h3. Запустите виртуальную машину
Наконец можно погасить диски и запустить виртуальную машину:
<pre>
gnt-instance deactivate-disks INSTANCE_NAME
gnt-instance startup INSTANCE_NAME
</pre>
h2. Установка других вариантов Linux
h3. Установка Ubuntu
Для Ubuntu подготовлен os variant ubootstrap+default.
Для создания машины с ubuntu нужно запустить команду наподобие этой:
<pre>
gnt-instance add -t drbd -o ubootstrap+default -s 4g -B memory=512m -n gnt1:gnt2 ubuntu
</pre>
h3. Установка CentOS
Для создания машины с CentOS нужно запустить команду наподобие этой:
<pre>
gnt-instance add -t drbd -o yumbootstrap+default -s 4g -B memory=512m -n gnt1:gnt2 centos
</pre>
т.к. в centos 7.4 red hat сломал поддержку PV (как умудрились в минорном апгрейде ядра это сломать и зачем - загадка), то нужно поставит более старое ядро:
http://archive.kernel.org/centos-vault/7.3.1611/os/x86_64/Packages/kernel-3.10.0-514.el7.x86_64.rpm
<pre>
kpartx -av /dev/drbdX
mount /dev/mapper/drbdXp1 /mnt
cd /mnt
mount -o bind /dev dev
mount -o bind /proc proc
mount -o bind /sys sys
chroot ./
wget http://archive.kernel.org/centos-vault/7.3.1611/os/x86_64/Packages/kernel-3.10.0-514.el7.x86_64.rpm
rpm -i kernel-3.10.0-514.el7.x86_64.rpm
exit
umount dev
umount proc
umount sys
cd ~
umount /mnt
kpartx -dv /dev/drbdX
</pre>
далее редактируем /boot/grum/menu.lst:
<pre>
default 0
timeout 5
color cyan/blue white/blue
title CentOS, default kernel
root (hd0,0)
kernel /boot/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/xvda1 ro
initrd /boot/initramfs-3.10.0-514.el7.x86_64.img
title CentOS, default kernel (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/xvda1 ro single
initrd /boot/initramfs-3.10.0-514.el7.x86_64.img
</pre>
альтернативно можно использовать CentOS Plus Kernel https://wiki.centos.org/AdditionalResources/Repositories/CentOSPlus
h2. Управление виртуальными машинами
Всевозможные простые операции:
<pre>
gnt-instance (startup|shutdown|reboot|failover|remove|console) INSTANCE
</pre>