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

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Настройка cifs (samba) сервера)
(Установка операционной системы)
Строка 61: Строка 61:
 
, который будет занимать всё оставшееся пространство жёсткого диска (оно на разных серверах разное, поэтому имеет смысл его конфигурировать уже после)
 
, который будет занимать всё оставшееся пространство жёсткого диска (оно на разных серверах разное, поэтому имеет смысл его конфигурировать уже после)
  
На этом логическом томе позже будет сделать пулл zfs, который будет выступать в качестве хранилища для дисков виртуальных машин.
+
На этом логическом томе позже будет сделан пулл zfs, который будет выступать в качестве хранилища для дисков виртуальных машин.
  
 
===Почему zfs поверх lvm?===
 
===Почему zfs поверх lvm?===

Версия 17:01, 2 июня 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 виртуальных машин и последующим созданием шаблона виртуальной машины при связанных копиях виртуальных машин из шаблона создаются связанные копии дисков и фактическое дисковое пространство не тратится при создании связанных копий до тех пор, пока виртуальной машиной, созданной таким образом, не начинают пользоваться и вносить изменения в её файловую систему.

Отдельно следует отметить скорость, с которой создаются связанные копии из шаблонных машин (виртуальные машины с дисками 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 сервер мог использовать это хранилище для своих целей (например, резервного копирования))

Почему именно 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