44. Краткая инструкция по использованию Proxmox 7.3.

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

Для начала стоит отметить что вся информация доступна в документации на домашнем сайте продукта. Там она представлена в нескольких видах:

За любой недостающей в этой статье информацией лучше всего обращаться по этим ссылкам.

Кроме того, в самой системе продублирована вся документация имеющаяся на сайте.

 
Полезные плэйлисты YouTube каналов по теме:

Так же, для углубленного изучения всей системы целиком, рекомендуются к просмотру следующие видеокурсы:


Диски.

Для того чтобы работать с хранением информации в Proxmox VE важно помнить два ключевых момента.
1. Это линукс система, а значит и разбиение дисков здесь такое же как и в линуксе.
2. Установщик Proxmox VE предлагает несколько вариантов управления локальными дисками, а установка по умолчанию использует менеджер томов LVM (Logical Volume Manager).

Разберём как LVM (а значит и сама система) работает с дисками.
Все физические диски имеют две сущности:
- Диск, как устройство на котором есть некий объём памяти. Такие диски система называет устройствами хранения (sd - storage device), и именует буквами в алфавитном порядке (a, b, c,...). Полное имя устройства выглядит как /dev/sda, /dev/sdb, /dev/sdc
- Диск, как блок памяти, на некоем физическом устройстве. Такой тип система именует как PV - Physical Volume.

После физического уровня начинается чехарда с логическими уровнями, но обо всём по порядку.
Каждый физический диск может быть разбит на несколько логических дисков. Эти диски будут иметь имена согласно порядковому номеру и относится к тому физическому диску, на котором они разбиты. Например, /dev/sda1, /dev/sda2 - это два раздела внутри первого физического диска.

Все имеющиеся в системе диски могут быть объединены в группу томов (VG - Volume Group), которая будет являться неким общим ресурсом для хранения.


И уже всё это пространство может быть так же поделено на логические тома (LV - Logical Volumes).


Пример для упрощения понимания на данном этапе:
Есть 2 физических диска по 10 Гб. Они будут называться как /dev/sda и /dev/sdb.
Первый разбит на 2 равных логических диска .Их имена будут /dev/sda1 и /dev/sda2 соответственно.
LVM позволяет создать VG (volume group), превратив тем самым всё пространство в один (виртуальный) диск объёмом 20Гб.
А с помощью LV (Logical Volumes) можно этот виртуальный диск поделить на логические тома.
При таком подходе главным минусом является то, что сразу (особенно новичку) достаточно непросто понять на каком физическом диске находится та или иная информация.
Поделим теперь всё имеющееся дисковое пространство на 4 тома по 5Гб. А для полноты картины и чтоб не было скучно, разметим каждый такой том отдельной файловой системой.

Так вот теперь вишенка на торте.
Каждый том, может быть смонтирован в качестве директории на другом диске/томе.
Т.е. например на диске 1, может находиться произвольно названная папка (пусть будет 2), которая на самом деле является логическим диском номер 2. Сам этот второй логический диск может и не отображаться в проводнике логических дисков.

Так же может быть и обратная ситуация. Когда на диске, находится файл, являющийся образом диска (например от виртуальной машины или скачанный iso образ). И этот файл смонтирован в систему как ещё один диск. И таких дисков-файлов в системе может быть сколь угодно большое количество.

Возвращаясь же к Proxmox VE, можно в консоли запустить команду lsblk означающую list blocks.

Видно, что данный экземпляр Proxmox установлен на одном физическом диске размером 40Гб, поделённом на 3 логических.

При этом, третий логический диск разбит ещё на 3 логических тома (LV), которые созданы установщиком  внутри VG:

- root . Отформатирован как ext4 и содержит операционную систему.
- swap . Раздел подкачки.
- data . Этот том использует LVM-thin и используется для хранения образов виртуальных машин.
Пространство с мета данными не берём во внимание.

Запустим команду lvs отображающую логические тома - logical volume show

Видим что к группе томов (VG) относится том pve, на котором расположены те самые логические диски, в количестве трёх штук.
Программа установки по умолчанию выбирает один диск, и использует его в качестве физического тома для группы томов (VG) и присваивает ему имя pve.

Запустив команду df -h (disk free) можно видеть не только размеры томов,


но так же свободное место на них, и куда они смонтированы.

И наконец последняя команда - pvs (physical volume show) - показывает диски или тома, использованные в LVM.

 

Теперь посмотрим что видно в графическом веб интерфейсе.

Раздел хранилище на уровне всего датацентра.



На уровне группы томов:

На дисках 1 и 2 видим Bootloader. Первый раздел содержит стандартный загрузчик GRUB. Второй раздел — это системный раздел EFI (ESP), который позволяет загружаться в системах EFI.

На уровне LVM

 
LVM — это блочное хранилище, но он не поддерживает снэпшоты и клоны. 


Тонкий пул LVM (LVM-thin) тоже является блочным хранилищем. Однако он выделяют блоки при их записи. Такое поведение называется тонким выделением ресурсов, поскольку объем тома может быть намного больше, чем физически доступное пространство. Новый LVM-thin позволяет создавать снэпшоты и клоны, но не поддерживает общее хранилище.

И всё же, на пальцах, в чём принципиальная разница между LVM и LVM-thin?

В первом случае, когда у нас есть VG объёмом 100Гб, то ёмкость нового логический тома не может быть больше этого объёма. Т.к. при использовании LVM весь этот объём выделяется (резервируется) сразу под новый том.

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

Хранилища.

Всего в Proxmox существуют 2 основных вида хранилищ. 

- Файловое. Обеспечивают доступ к полнофункциональной (POSIX) файловой системе. В целом оно более гибкое, и позволяют хранить контент любого типа. Например файловая система ZFS является самой продвинутой и имеет полную поддержку моментальных снимков и клонов.

- Блочное. Позволяет хранить большие образы дисков. Обычно на таких типах хранилищ невозможно хранить другие файлы (ISO, резервные копии и т. д.). Большинство современных реализаций блочного хранилища поддерживают моментальные снимки и клоны. 

Теперь, когда есть хоть какая-то ясность относительно азов, можно вернуться на один из первых этапов установки всей системы. А именно - к разметке диска.

Установка.

Как уже было сказано выше, во время установки создается группа томов (VG) с названием pve , и дополнительными логические тома (LVs) с названиями root , data и swap. Размер этих томов можно контролировать с помощью следующих параметров:


- hdsize Определяет общий размер жёсткого диска, который будет использоваться. Таким образом, можно сэкономить свободное пространство на жёстком диске для дальнейшего разбиения (т. е. для дополнительного PV и VG на том же жестком диске, который может использоваться для хранения LVM).

- swapsize Определяет размер раздела подкачки. По умолчанию равен размеру установленной оперативной памяти, минимум 4 ГБ и максимум 8 ГБ. Результирующее значение не может быть больше hdsize/8. Если установлено значение 0, то раздел подкачки не создается.

- maxroot Определяет максимальный размер корневого раздела, на котором хранится операционная система. Максимальный предел размера корневого раздела - hdsize/4.

- maxvz Определяет максимальный размер тома данных. Фактический размер тома данных равен: datasize = hdsize - rootsize - swapsize - minfree. (datasize = размер данных)

Где datasize не может быть больше, чем maxvz.

В случае LVM thin(LVM малого объема) пул данных будет создан только в том случае, если datasize больше 4 ГБ.

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

- minfree Определяет объем свободного пространства, оставшегося в группе томов LVM pve. При наличии более 128 ГБ памяти по умолчанию используется 16 ГБ, иначе будет использоваться hdsize/8. 

LVM требует наличия свободного места в VG для создания моментальных снимков (не требуется для снимков lvmthin)

Дополнительные параметры конфигурации ZFS

Установщик позволяет создать пул ZFS. При выборе ZFS по умолчанию не создается пространство подкачки. Можно оставить некоторое неразмеченное пространство для swap или создать swap zvol после установки, хотя последнее может привести к проблемам.

- ashift Определяет значение ashift для созданного пула. Ashift должен быть установлен, по крайней мере, на размер сектора базовых дисков (2 в степени ashift дает размер сектора), или любого диска, который может быть помещен в пул (например, при замене дефектного диска).

- compress Определяет, включено ли сжатие для rpool.

- checksum Определяет, какой алгоритм контрольной суммы должен использоваться для rpool.
copies. Определяет параметр copies для rpool. Обратитесь к страницу руководства zfs(8) для семантики, и выяснения почему это не заменяет избыточность на уровне диска.

- hdsize Определяет общий размер HD, который будет использоваться. Таким образом, можно сэкономить свободное пространство на диске(ах) для дальнейшего разбиения (например, для создания раздела подкачки). hdsize используется только для загрузочных дисков, т.е. только первый диск или зеркало для RAID0, RAID1 или RAID10, и все диски в RAID-Z[123].

Советы по улучшению производительности ZFS

ZFS использует много памяти, поэтому лучше всего добавить дополнительную оперативную память, если хотите использовать ZFS. Хороший расчет - это 4 ГБ плюс 1 ГБ оперативной памяти для каждого ТБ необработанного дискового пространства.

ZFS также предоставляет возможность использовать быстрый SSD-диск в качестве кэша записи. Кэш записи называется ZFS Intent Log (ZIL). Его можно добавить после установки, используя следующую команду:
zpool add <pool-name> log </dev/path_to_fast_ssd>

Своп на ZFS

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

Настоятельно рекомендуется использовать достаточно памяти, чтобы вы столкнуться с ситуациями нехватки памяти. Если хочется или необходимо добавить swap, предпочтительно создать раздел на физическом диске и использовать его в качестве swapdevice. Можно оставить немного свободного места для этой цели в расширенных настройках установщика. Кроме того, можно снизить значение “swappiness”. Хорошее значение для серверов составляет 10:
sysctl -w vm.swappiness=10
Чтобы сделать подкачку постоянной, откройте файл /etc/sysctl.conf в любом редакторе и добавьте следующую строку:
vm.swappiness=10

Виртуальные машины.

Создание виртуальной машины для Home Assistant будет рассмотрено в следующей статье

Клонирование

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

Создание шаблона виртуальной машины.

Шаблон создаёт некую копию виртуальной машины, из которой, при необходимости, можно развернуть и запустить новую виртуалку за считанные секунды. Основное назначение этой функции - создание большого количества маши с одинаковыми характеристиками.

После создания новой машины очень важно не делать в ней абсолютно никаких изменений: не включать, не создавать пользователей и/или каких либо других объектов, не разделять внутренние диски, и т.д. В выключенном состоянии создадим темплэйт. 




Теперь из шаблона создадим новую машину с помощью клонирования.

пиктограммы шаблонов и обычных виртуалок выглядят по разному

Полное клонирование - создание новой, отдельной и независимой машины. Однако требующей для себя столько же места, сколько и оригинал. Создание занимает больше времени.
Связная копия - требует гораздо меньше места, но не может работать без шаблона-оригинала.

О временных тратах на этот процесс. Для эксперимента было произведено полное клонирование только что созданной, но ещё ни разу не запущенной машины с Home Assistant. Настройки машины были установлены по умолчанию. В качестве физического жёсткого диска, на момент эксперимента в системе стоял обычный магнитный HDD. Клонирование заняло 37 секунд.

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

Резервное копирование.

Настраивается в соответствующем разделе всего дата центра.
Есть 3 основных типа копирования:

Остановка.
Обеспечивает самую высокую точность резервной копии за счёт небольшого перерыва в работе виртуальной машины. Точность гарантирована функцией Live Backup. На время действия машина выключается, 

Приостановить.
Этот режим существует по причине совместимости с некоторыми системами, и приостанавливает виртуальную машину перед вызовом режима снимка.

Снимок.
Этот режим обеспечивает самое низкое время перерыва в работе машины за счёт небольшого риска неточности.


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

 
Retention policy - жизненный цикл резервных копий.
Например, есть необходимость оставлять только 3 последних резервных копии.
Тогда Keep Last будет равно 3.
Не важно при этом какая частота резервирования была выбрана, хоть раз в час или же раз в месяц. По аналогии обстоят дела и с остальными опциями в виде дневной политики, недельной и т.д.

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

Двухфакторная аутентификация.

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

Fail2ban

Так же, можно установить дополнительную защиту от попыток входа с подбором паролей.
 
При организации доступа снаружи через туннель Cloudflare и включении двухфакторной аутентификации, использование этой программы менее критично. Т.к. Cloudflare "отрезает" доступ снаружи всем, кроме указанных стран или провайдеров, а 2FA даёт дополнительный уровень защиты от всех остальных.
 
Для установки открываем консоль и для начала обновим источники пакетов командой apt update.
Устанавливаем Fail2Ban командой apt install fail2ban, поле чего открываем конфигурацию программы на редактирование:
nano /etc/fail2ban/jail.conf.
В этом файле идём в самый низ и добавляем следующий конфиг:
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 3
# 1 hour
bantime = 3600


bantime - число секунд на которые заблокируется злоумышленник.
maxretry - число попыток ввода пароля/логина для каждого сервиса.

С помощью команды nano /etc/fail2ban/filter.d/proxmox.conf создадим дополнительный файл настроек этой программы:
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =

Вместо хоста указываем IP адрес проксмокса.

Далее останется перезапустить службу: systemctl restart fail2ban
и при желании проверить статус её работы: fail2ban-client -v status sshd


Комментарии