Различные советы и секреты по установке сервера виртуализации

Подготовка сервера

BIOS
Proxmox VE
#> cd /etc/apt/sources.list.d/
#> cat ./pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
#> echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
#> wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
#> sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
#> apt update && apt full-upgrade

\

apt install net-tools traceroute mc sudo iotop
apt install lm-sensors && sensors-detect
проброс pci(e) устройств

Надо почитать тут (но в доке ошибка - нет упоминания что надо делать update-grub). Далее процесс коротко:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
options vfio_iommu_type1 allow_unsafe_interrupts=1
Мониторинг при помощи zabbix

Установим агента и дополнительные утилиты:

apt install zabbix-agent jq

Если у Вас старый сервер zabbix то этот агент НЕ подойдет. Для исправления ситуации можно взять zabbix-agent от debian9:

root@debian9:/usr/sbin# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.13 (stretch)
Release:        9.13
Codename:       stretch
root@debian9:/# /usr/sbin/zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 3.0.32

Т.е. можно файл /usr/sbin/zabbix_agentd просто скопировать. Не по джедайски, но работает. Также отключим авто обновление zabbix-agent

apt-mark hold zabbix-agent
Отключение обновления ядра

Обновление ядра требует перезагрузки системы, если сервер работает в производственном режиме не всегда возможно осуществить это. Поэтому посмотрим какая версия ядра у нас (в примере, uname выдал 5.15) и заблокируем обновление:

uname -a
apt-mark hold pve-firmware pve-kernel-5.15 # PVE7
apt-mark hold pve-firmware proxmox-kernel-6.8 # PVE8.2
Добавление LVM хранилища

Допустим, что у нас есть ПУСТОЙ диск /dev/sdb с таблицей разделов GPT (fdisk /dev/sdb и нажать g):

sgdisk -N 1 /dev/sdb
если ругается: Caution: invalid main GPT header, but valid backup; regenerating main header from backup!, то очистим 0 сектор
dd if=/dev/zero of=/dev/sdb bs=512 count=10
fdisk /dev/sdb # выбрать g и w

# pvcreate –metadatasize 250k -y -ff /dev/sdb1

# vgcreate vmdata /dev/sdb1

Далее подключим vmdata в веб интерфейсе.

Если диск не пустой, то fdisk /dev/sdb, далее удаляем разделы и с помощью g создаем GPT раздел.

Удаляем LVM-Thin хранилище по умолчанию

Не знаю почему, но мне не нравится LVM-Thin разделы. Возможно мне не понятна тонкие материи продажи воздуха облачных сервисов, однако когда я выделяю место для VM я хочу быть УВЕРЕН, что место на диске в кол-ве указанного будет ДОСТУПНО VM в любом случае. LVM-Thin позволяет выделять место «по потребности»…

Однако, следует помнить что снимки доступны только для LVM-Thin или ZFS.

# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                  8:0    0 111.8G  0 disk 
├─sda1               8:1    0     1M  0 part 
├─sda2               8:2    0   256M  0 part 
└─sda3               8:3    0 111.6G  0 part 
  ├─pve-swap       253:0    0     7G  0 lvm  [SWAP]
  ├─pve-root       253:1    0  27.8G  0 lvm  /
  ├─pve-data_tmeta 253:2    0     1G  0 lvm  
  │ └─pve-data     253:4    0  60.9G  0 lvm  
  └─pve-data_tdata 253:3    0  60.9G  0 lvm  
    └─pve-data     253:4    0  60.9G  0 lvm  

Или командой для списка доступных тонких пулов:

# pvesm lvmthinscan pve
# lvremove /dev/pve/data
# lsblk 

Все теперь в корневом диске у нас есть хранилище local-lvm со свободным пространством. Имейте ввиду что тут теперь можно удалить и корневой раздел PVE, что делать крайне не рекомендуется :)

Настройка синхронизации времени

For systems using chrony: Specify which servers chrony should use in /etc/chrony/chrony.conf:

server ntp1.example.com iburst
server ntp2.example.com iburst
server ntp3.example.com iburst

Restart chrony:

# systemctl restart chronyd

Check the journal to confirm that the newly configured NTP servers are being used:

# journalctl --since -1h -u chrony
Настройка Proxmox Backup Server (PBS)

Ограничим время хранения протоколов заданий:

proxmox-backup-manager node update --task-log-max-days 60

по умолчанию не ограничено, так что рано или поздно меcто на PBS закончится.