AltEduPve
Содержание
Зачем и почему
Этот раздел не технический. Если цели и задачи понятны, то его можно пропустить :)
Что это?
Это статья, описывающая процесс развёртывания 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 виртуальных машин и последующим созданием шаблона виртуальной машины при связанных копиях виртуальных машин из шаблона создаются связанные копии дисков и фактическое дисковое пространство не тратится при создании связанных копий до тех пор, пока виртуальной машиной, созданной таким образом, не начинают пользоваться и вносить изменения в её файловую систему.
Отдельно следует отметить скорость, с которой создаются связанные копии из шаблонных машин (виртуальные машины с дисками 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.87.87' 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
Устанавливаем необходимые пакеты и включаем необходимые сервисы
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/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 хранилища
DISK='/dev/sda' # resize lvm partition fdisk $DISK <<EOF d 2 n p 2 N w EOF # refresh partitions partprobe # resize pv pvresize "${DISK}2" # rescan volume groups vgchange -ay # create lvm and zfs pool in this 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 pvesm add zfspool vmstorage --pool zfspool --content images,rootdir
Подключение cifs (samba) хранилищ
pvesm add cifs pveshare --server 172.16.254.123 --share mQcluster1 --username mQcluster1 --password --content iso,backup
pvesm add cifs pQrdbstorage --server 172.16.90.100 --share Qstorage --username Qstorage --password --content backup
Настройка cifs (samba) сервера
Для предоставления хранилища с непосредственно сервера PVE для других серверов PVE можно настроить ресурс, отдаваемый с этого PVE сервера по протоколу cifs/samba (для того, чтобы другой такой же PVE сервер мог использовать это хранилище для своих целей (например, резервного копирования))
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