AltEduPve: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Настройка zfs хранилища)
 
(не показано 15 промежуточных версий 2 участников)
Строка 21: Строка 21:
 
* Возможность предоставления доступа к виртуальным машинам извне (вынеся порт Веб-интерфейса за пределы шлюза веб интерфейс со всем функционалом доступа к виртуальным машинам будет доступен извне) -- может быть актуально при полностью или частично дистанционном подходе к практическому обучению
 
* Возможность предоставления доступа к виртуальным машинам извне (вынеся порт Веб-интерфейса за пределы шлюза веб интерфейс со всем функционалом доступа к виртуальным машинам будет доступен извне) -- может быть актуально при полностью или частично дистанционном подходе к практическому обучению
 
* Возможность кластеризации решения. Кластеризация даёт удобный механизм управления группой физических машин из одного Веб-интерфейса (из любого из Веб-интерфейсов на любой машине-узле кластера). Помимо единого "командного пункта" кластеризация даёт возможность миграции виртуальных машин между физическими узлами (без необходимости ввода команд в консоли (мышкой из веб интерфейса), без остановки машин - всё автоматизировано (опять же: без консоли, мышкой))
 
* Возможность кластеризации решения. Кластеризация даёт удобный механизм управления группой физических машин из одного Веб-интерфейса (из любого из Веб-интерфейсов на любой машине-узле кластера). Помимо единого "командного пункта" кластеризация даёт возможность миграции виртуальных машин между физическими узлами (без необходимости ввода команд в консоли (мышкой из веб интерфейса), без остановки машин - всё автоматизировано (опять же: без консоли, мышкой))
 +
* Снимки (снапшоты). У каждой виртуальной машины после её инсталляции и настройки можно заморозить состояние (снять снимок (снапшот)). Это свойство как нельзя кстати подходит под задачи обучения. В любой момент времени в процессе использования обучающимся виртуальной машины может быть снят снимок, до которого в дальнейшем можно легко восстановить состояние системы. Снимков может быть любое количество и к каждому можно вернуться (например, если обучающийся запутался в сложной задаче). Особенно механизм замораживания состояний виртуальной машины снимком полезен преподавателю, т.к. это даёт ему инструмент, позволяющий за секунды или десятки секунд обнулить состояние изменённой обучающимся машины. Таким образом, одна и та же виртуальная машина (заранее настроенная и с которой снят базовый снимок) может быть многократно использована на большом количестве обучающихся.
 
* Наверняка, что-то важное из плюсов данного решения, должного быть здесь, упущено...
 
* Наверняка, что-то важное из плюсов данного решения, должного быть здесь, упущено...
  
Строка 61: Строка 62:
 
, который будет занимать всё оставшееся пространство жёсткого диска (оно на разных серверах разное, поэтому имеет смысл его конфигурировать уже после)
 
, который будет занимать всё оставшееся пространство жёсткого диска (оно на разных серверах разное, поэтому имеет смысл его конфигурировать уже после)
  
На этом логическом томе позже будет сделать пулл zfs, который будет выступать в качестве хранилища для дисков виртуальных машин.
+
На этом логическом томе позже будет сделан пулл zfs, который будет выступать в качестве хранилища для дисков виртуальных машин.
  
Почему zfs поверх lvm?
+
===Почему zfs поверх lvm?===
  
 
Для удобства администрирования и экономии времени.
 
Для удобства администрирования и экономии времени.
  
При создании в хранилище zfs виртуальных машин и последующим созданием шаблона виртуальной машины при связанных копиях виртуальных машин из шаблона создаются связанные копии дисков и фактическое дисковое пространство не тратится при создании связанных копий до тех пор, пока виртуальной машиной, созданной таким образом, не начинают пользоваться и вносить изменения в её файловую систему.
+
При создании в хранилище zfs виртуальных машин и последующим создании шаблона виртуальной машины при клонировании виртуальных машин из шаблона создаются связанные копии дисков и фактическое дисковое пространство PVE внутри zfs пула не тратится до тех пор, пока виртуальной машиной, созданной таким образом, не начинают пользоваться и вносить изменения в её файловую систему.
  
Отдельно следует отметить скорость, с которой создаются связанные копии из шаблонных машин (виртуальные машины с дисками 100 и более гигабайт клонируются таким образом за несколько секунд).
+
Отдельно следует отметить скорость, с которой создаются связанные копии таких дисков (виртуальные машины с дисками 100 и более гигабайт клонируются таким образом за несколько секунд).
  
 
==Установка PVE==
 
==Установка PVE==
Строка 96: Строка 97:
  
 
  MACHINE_NAME='altedu-pve-template'
 
  MACHINE_NAME='altedu-pve-template'
  MACHINE_IP='172.16.87.87'
+
  MACHINE_IP='172.16.224.198'
 
  MACHINE_MASK='16'
 
  MACHINE_MASK='16'
 
  MACHINE_GATEWAY='172.16.1.1'
 
  MACHINE_GATEWAY='172.16.1.1'
Строка 114: Строка 115:
 
  apt-get update -qq
 
  apt-get update -qq
 
  apt-get -y dist-upgrade
 
  apt-get -y dist-upgrade
 +
update-kernel -f
  
 
Устанавливаем необходимые пакеты и включаем необходимые сервисы
 
Устанавливаем необходимые пакеты и включаем необходимые сервисы
Строка 142: Строка 144:
 
  echo "$MACHINE_IP/$MACHINE_MASK" > /etc/net/ifaces/vmbr0/ipv4address
 
  echo "$MACHINE_IP/$MACHINE_MASK" > /etc/net/ifaces/vmbr0/ipv4address
 
  echo "default via $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/ipv4route
 
  echo "default via $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/ipv4route
  echo "nameserver $MACHINE_GATEWAY" > /etc/resolve.conf
+
  echo "nameserver $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/resolve.conf
 
  service network restart
 
  service network restart
 
   
 
   
Строка 169: Строка 171:
  
 
==Настройка zfs хранилища==
 
==Настройка zfs хранилища==
 +
Для того, чтобы на хостовой машине с PVE задействовать оставшееся пространство физического тома lvm необходимо увеличить диск, в котором содержится этот том. Для этого посредством, например, утилиты disk, его необходимо удалить, затем создать новый, оставив по умолчанию его правую границу. После этой операции необходимо расширить группу томов и создать новый том, занимающий всё свободное пространство увеличившейся группы томов.
 +
 +
Изменяем размер раздела с pv lvm
 
<pre>
 
<pre>
 
DISK='/dev/sda'
 
DISK='/dev/sda'
  
# resize lvm partition
 
 
fdisk $DISK <<EOF
 
fdisk $DISK <<EOF
 
d
 
d
Строка 184: Строка 188:
 
w
 
w
 
EOF
 
EOF
 +
</pre>
  
# refresh partitions
+
Обновляем состояние разделов на диске
partprobe
 
  
# resize pv
+
partprobe
pvresize "${DISK}2"
 
  
# rescan volume groups
+
Изменяем размер физического тома на уровне lvm
vgchange -ay
 
  
# create lvm and zfs pool in this
+
pvresize "${DISK}2"
lvcreate -y alt-vg --name vmstorage -L 400g
 
  
zpool create zfspool /dev/alt-vg/vmstorage -f
+
Пересканируем lvm разделы
zfs set compression=off zfspool
+
 
zfs set sync=disabled zfspool
+
vgchange -ay
 +
 
 +
Далее создаём новый логический том и пулл zfs в нём. В примере команды логический том будет занимать 400 гигабайт.
 +
 
 +
 
 +
lvcreate -y alt-vg --name vmstorage -L 400g
 +
zpool create zfspool /dev/alt-vg/vmstorage -f
 +
zfs set compression=off zfspool
 +
zfs set sync=disabled zfspool
 +
 
 +
Добавляем zfs пулл в качестве хранилища образов и жёстких дисков виртуальных машин к PVE
 +
 
 +
pvesm add zfspool vmstorage --pool zfspool --content images,rootdir
  
pvesm add zfspool vmstorage --pool zfspool --content images,rootdir
 
 
</pre>
 
</pre>
  
 
==Подключение cifs (samba) хранилищ==
 
==Подключение cifs (samba) хранилищ==
 +
 +
Если в сети существуют действующие серверы, предоставляющие доступ к файлам по протоколу cifs/samba, то их можно также подключить к PVE в качестве хранилищ.
 +
 +
Например, такой командой может быть подключен ресурс smb://mQcluster1@172.16.254.123/mQcluster1 в качестве хранилища для iso-образов и для резервного копирования
  
 
  pvesm add cifs pveshare --server 172.16.254.123 --share mQcluster1 --username mQcluster1 --password --content iso,backup
 
  pvesm add cifs pveshare --server 172.16.254.123 --share mQcluster1 --username mQcluster1 --password --content iso,backup
 +
 +
 +
Например, такой командой может быть подключен ресурс smb://Qstorage@172.16.90.100/Qstorage в качестве хранилища для резервного копирования
  
 
  pvesm add cifs pQrdbstorage --server 172.16.90.100 --share Qstorage --username Qstorage --password --content backup
 
  pvesm add cifs pQrdbstorage --server 172.16.90.100 --share Qstorage --username Qstorage --password --content backup
  
==Настройка cifs (samba) сервера==
+
==Настройка cifs (samba) сервера на узле PVE==
 +
 
 +
===Для чего?===
 +
 
 +
Для предоставления хранилища с настраиваемого в этой статье сервера PVE для других аналогичных серверов PVE можно настроить ресурс, отдаваемый с этого PVE по протоколу cifs/samba (для того, чтобы другой такой же PVE сервер мог использовать это хранилище для своих целей (например, резервного копирования))
 +
 
 +
===Почему именно cifs/samba?===
 +
 
 +
Для универсальности доступа в сетях с не только GNU/Linux машинами, для доступа со специфического оборудования (различные сетевые хранилища, например, с функцией резервирования)
  
Для предоставления хранилища с непосредственно сервера PVE для других серверов PVE можно настроить ресурс, отдаваемый с этого PVE сервера по протоколу cifs/samba (для того, чтобы другой такой же PVE сервер мог использовать это хранилище для своих целей (например, резервного копирования))
+
===Процесс настройки ресурса по протоколу cifs/samba===
  
 
  adduser storage
 
  adduser storage
Строка 254: Строка 281:
  
 
  service smb restart
 
  service smb restart
 +
 +
[[Категория:Клонирование]]
 +
[[Категория:Альт]]
 +
[[Категория:Альт Образование]]
 +
[[Категория:PVE]]
 +
[[Категория:ZFS]]
 +
[[Категория:LVM]]

Текущая версия на 10:01, 4 августа 2021

Зачем и почему

Этот раздел не технический. Если цели и задачи понятны, то его можно пропустить :)

Что это?

Это статья, описывающая процесс развёртывания Proxmox Virtual Environment (PVE) в дистрибутиве Alt Education (Альт Образование)

Для чего?

При современных возможностях вычислительной техники при обучении IT-специальностям (и не только им) полезно бывает использовать виртуальные окружения для проведения лабораторных работ.

PVE является отличной альтернативой средам настольной виртуализации и превосходит по возможностям, важным с точки зрения получения обучающимися практических навыков работы с различным спектром программного обеспечения, начиная от базовых основ операционных систем, заканчивая высокоуровневыми языками программирования и платформами разработки программного обеспечения.

Среди ключевых важных и полезных возможностей PVE при использовании с образовательных целях следует отметить следующие:

  • Веб-интерфейс управления (обучающемуся не обязательно находиться физически на компьютере, чтобы иметь полный доступ к виртуальной машине)
  • Разграничение прав доступа (ресурсы одной аппаратной машины посредством механизма пользователей и ролей можно распределить между несколькими обучающимися)
  • Шаблонизация и связанные копии (на базе шаблонов виртуальных машин можно быстро (очень быстро, секунды) создавать клонов, диски которых будут представлять из себя связанные копии относительно диска шаблона) -- это позволяет экономить дисковые и временнЫе ресурсы (проверено при работе с хранилищами на ZFS)
  • Удобный интерфейс взаимодействия с внешними хранилищами (всё настраивается из Веб-интерфейса). При использовании нескольких физических машин с PVE посредством подключения хранилищ можно легко организовать обмен резервными копиями и шаблонами
  • Возможность предоставления доступа к виртуальным машинам извне (вынеся порт Веб-интерфейса за пределы шлюза веб интерфейс со всем функционалом доступа к виртуальным машинам будет доступен извне) -- может быть актуально при полностью или частично дистанционном подходе к практическому обучению
  • Возможность кластеризации решения. Кластеризация даёт удобный механизм управления группой физических машин из одного Веб-интерфейса (из любого из Веб-интерфейсов на любой машине-узле кластера). Помимо единого "командного пункта" кластеризация даёт возможность миграции виртуальных машин между физическими узлами (без необходимости ввода команд в консоли (мышкой из веб интерфейса), без остановки машин - всё автоматизировано (опять же: без консоли, мышкой))
  • Снимки (снапшоты). У каждой виртуальной машины после её инсталляции и настройки можно заморозить состояние (снять снимок (снапшот)). Это свойство как нельзя кстати подходит под задачи обучения. В любой момент времени в процессе использования обучающимся виртуальной машины может быть снят снимок, до которого в дальнейшем можно легко восстановить состояние системы. Снимков может быть любое количество и к каждому можно вернуться (например, если обучающийся запутался в сложной задаче). Особенно механизм замораживания состояний виртуальной машины снимком полезен преподавателю, т.к. это даёт ему инструмент, позволяющий за секунды или десятки секунд обнулить состояние изменённой обучающимся машины. Таким образом, одна и та же виртуальная машина (заранее настроенная и с которой снят базовый снимок) может быть многократно использована на большом количестве обучающихся.
  • Наверняка, что-то важное из плюсов данного решения, должного быть здесь, упущено...

Установка

Важная информация

Операционная система "Альт Образование" бесплатна для использования физическими лицами на домашних компьютерах.

Для использования операционной системы "Альт Образование" юридическими лицами (в том числе образовательными организациями) необходимо приобрести лицензию у компании "Базальт СПО" (https://www.basealt.ru) и/или заключить договор о сотрудничестве.

Использование дистрибутива "Альт Образование" физическими лицами в организациях запрещено лицензией на дистрибутив.

Для домашнего использования физическими лицами дистрибутив "Альт Образование" доступен бесплатно. Загрузить установочный образ можно по этой ссылке:

https://getalt.org/ru/alt-education

Для решения, в частности описанного в данной статье, использовался образ, расположенный по ссылке:

https://mirror.yandex.ru/altlinux/p9/images/education/x86_64/alt-education-9.2-20210520-x86_64.iso

Установка операционной системы

Установка операционной системы для целей данной статьи осуществлялась из образа:

https://mirror.yandex.ru/altlinux/p9/images/education/x86_64/alt-education-9.2-20210520-x86_64.iso

на следующую разметку жёсткого диска (MBR):

/dev/sda1 /boot (размер 1GB)
/dev/sda2       (lvm pv для группы томов "alt-vg")
/dev/alt-vg/root      /    (корень файловой системы на логическом разделе "root" размером от 40GB в группе томов lvm "alt-vg")
/dev/alt-vg/swap_1         (раздел подкачки на логическом разделе "swap_1" размером от 1GB в группе томов lvm "alt-vg")

До этого раздела данной разметки достаточно. После ещё появится логический том

vmstorage

, который будет занимать всё оставшееся пространство жёсткого диска (оно на разных серверах разное, поэтому имеет смысл его конфигурировать уже после)

На этом логическом томе позже будет сделан пулл zfs, который будет выступать в качестве хранилища для дисков виртуальных машин.

Почему zfs поверх lvm?

Для удобства администрирования и экономии времени.

При создании в хранилище zfs виртуальных машин и последующим создании шаблона виртуальной машины при клонировании виртуальных машин из шаблона создаются связанные копии дисков и фактическое дисковое пространство PVE внутри zfs пула не тратится до тех пор, пока виртуальной машиной, созданной таким образом, не начинают пользоваться и вносить изменения в её файловую систему.

Отдельно следует отметить скорость, с которой создаются связанные копии таких дисков (виртуальные машины с дисками 100 и более гигабайт клонируются таким образом за несколько секунд).

Установка PVE

Представим, что после установки ваша операционная система доступна в сети по адресу:

172.16.224.198

, в системе имеется единственный обычный пользователь

student

с паролем, который вам известен. Также вам известен пароль от суперпользователя (он же root).

Представили? Тогда продолжим с этими исходными данными.

Входим на сервер по ssh:

ssh student@172.16.224.198

Переключаемся в суперпользователя:

su -

Заводим переменные, в которых будем хранить наше имя хоста и сетевые параметры:

MACHINE_NAME='altedu-pve-template'
MACHINE_IP='172.16.224.198'
MACHINE_MASK='16'
MACHINE_GATEWAY='172.16.1.1'
MACHINE_DNS='172.16.1.1'
MACHINE_ETH_DEVICE='eth0'

Переименовываем машину и настраиваем определённым образом хост-файл:

hostnamectl set-hostname $MACHINE_NAME
IP=$MACHINE_IP
HOST=$(hostname)
echo "127.0.0.1 localhost" > /etc/hosts
echo "$IP $HOST.nntc.nnov.ru $HOST" >> /etc/hosts

Обновляем систему

apt-get update -qq
apt-get -y dist-upgrade
update-kernel -f

Устанавливаем необходимые пакеты и включаем необходимые сервисы

apt-get install -qq -y pve-manager kernel-modules-zfs-std-def
systemctl start rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-cluster
systemctl enable rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target corosync lxc lxc-net lxc-monitord pve-cluster pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-guests pve-cluster

Перенастраиваем сеть в режим "мост":

rm -rf /etc/net/ifaces/*
mkdir /etc/net/ifaces/vmbr0
cat << EOF > /etc/net/ifaces/vmbr0/options
TYPE=bri
VLAN_AWARE=yes
VIDS=2-2048
ONBOOT=yes
DISABLED=no
NM_CONTROLLED=no
CONFIG_WIRELESS=no
CONFIG_IPV4=yes
CONFIG_IPV6=no
BOOTPROTO=static
HOST="$MACHINE_ETH_DEVICE"
EOF
echo "$MACHINE_IP/$MACHINE_MASK" > /etc/net/ifaces/vmbr0/ipv4address
echo "default via $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/ipv4route
echo "nameserver $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/resolve.conf
service network restart

Перезагружаемся (чтобы убедиться, что после полного рестарта все сервисы были запущены и система готова).

Веб-интерфейс системы должен находиться по адресу:

https://localhost:8006

Для доступа в систему по ssh от пользователя root рекомендуется использовать ключи доступа ssh. Если же по каким-либо причинам необходимо разрешить доступ под суперпользователем по паролю, то это можно включить следующими командами (выполнять их нужно из-под суперпользователя):

sed -i 's/#PermitRootLogin without-password/PermitRootLogin yes/g' /etc/openssh/sshd_config
systemctl restart sshd

Для использования возможностей файловой системы zfs необходимо включить загрузку модуля ядра по умолчанию:

sed -i 's/#zfs/zfs/g' /etc/modules-load.d/zfs.conf

затем

/sbin/modprobe zfs

или перезагрузиться:

reboot

Настройка zfs хранилища

Для того, чтобы на хостовой машине с PVE задействовать оставшееся пространство физического тома lvm необходимо увеличить диск, в котором содержится этот том. Для этого посредством, например, утилиты disk, его необходимо удалить, затем создать новый, оставив по умолчанию его правую границу. После этой операции необходимо расширить группу томов и создать новый том, занимающий всё свободное пространство увеличившейся группы томов.

Изменяем размер раздела с pv lvm

DISK='/dev/sda'

fdisk $DISK <<EOF
d
2
n
p
2


N
w
EOF

Обновляем состояние разделов на диске

partprobe

Изменяем размер физического тома на уровне lvm

pvresize "${DISK}2"

Пересканируем lvm разделы

vgchange -ay

Далее создаём новый логический том и пулл zfs в нём. В примере команды логический том будет занимать 400 гигабайт.


lvcreate -y alt-vg --name vmstorage -L 400g
zpool create zfspool /dev/alt-vg/vmstorage -f
zfs set compression=off zfspool
zfs set sync=disabled zfspool

Добавляем zfs пулл в качестве хранилища образов и жёстких дисков виртуальных машин к PVE

pvesm add zfspool vmstorage --pool zfspool --content images,rootdir

Подключение cifs (samba) хранилищ

Если в сети существуют действующие серверы, предоставляющие доступ к файлам по протоколу cifs/samba, то их можно также подключить к PVE в качестве хранилищ.

Например, такой командой может быть подключен ресурс smb://mQcluster1@172.16.254.123/mQcluster1 в качестве хранилища для iso-образов и для резервного копирования

pvesm add cifs pveshare --server 172.16.254.123 --share mQcluster1 --username mQcluster1 --password --content iso,backup


Например, такой командой может быть подключен ресурс smb://Qstorage@172.16.90.100/Qstorage в качестве хранилища для резервного копирования

pvesm add cifs pQrdbstorage --server 172.16.90.100 --share Qstorage --username Qstorage --password --content backup

Настройка cifs (samba) сервера на узле PVE

Для чего?

Для предоставления хранилища с настраиваемого в этой статье сервера PVE для других аналогичных серверов PVE можно настроить ресурс, отдаваемый с этого PVE по протоколу cifs/samba (для того, чтобы другой такой же PVE сервер мог использовать это хранилище для своих целей (например, резервного копирования))

Почему именно cifs/samba?

Для универсальности доступа в сетях с не только GNU/Linux машинами, для доступа со специфического оборудования (различные сетевые хранилища, например, с функцией резервирования)

Процесс настройки ресурса по протоколу cifs/samba

adduser storage
smbpasswd -a storage
smbpasswd -e storage
mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
mkdir /zfspool/storage
chown storage:storage /zfspool/storage -R
cat << EOF > /etc/samba/smb.conf
# Global parameters
[global]
	log file = /var/log/samba/log.%m
	logging = file
	map to guest = Bad User
	max log size = 1000
	obey pam restrictions = Yes
	pam password change = Yes
	panic action = /usr/share/samba/panic-action %d
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	passwd program = /usr/bin/passwd %u
	server role = standalone server
	server string = %h server (Samba, Ubuntu)
	unix password sync = Yes
	usershare allow guests = Yes
	idmap config * : backend = tdb

[storage]
	browseable = Yes
	comment = storage
	valid users = storage
	create mask = 0755
	directory mask = 0755
	path = /zfspool/storage
	read only = No
        veto files = /._*/.DS_Store/.T*/Thumbs.db/Network Trash Folder/Temporary Items/*.exe/*.bat/*.msi
        delete veto files = yes
EOF
service smb restart