====== Различные советы и секреты по установке сервера виртуализации ====== ==== Подготовка сервера ==== == BIOS == * Для процессоров >=[[https://ark.intel.com/content/www/ru/ru/ark/products/codename/29900/products-formerly-sandy-bridge.html|Sandy Bridge]] HT включаем, для более ранних выключаем * Если хотим максимальной производительности, то * C1E Support > disabled (on Fujitsu servers is called "Enhanced Halt State (C1E)") * Intel C-State > disabled * Enhanced Intel Speedstep Tech : off (dynamic frequency) * Max performance > ON (Turbo mode) * Включить поддержку IOMMU (SR-IOV) == Proxmox VE == * Заменим репозитарий на бесплатный (для версии 7): #> 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 * Установим полезные пакеты: apt install net-tools traceroute mc sudo iotop apt install lm-sensors && sensors-detect == проброс pci(e) устройств == Надо почитать [[https://pve.proxmox.com/wiki/PCI(e)_Passthrough|тут]] (но в доке ошибка - нет упоминания что надо делать update-grub). Далее процесс коротко: * в параметр **GRUB_CMDLINE_LINUX_DEFAULT**, файла **/etc/default/grub**, добавить **intel_iommu=on** (и, если нужно, **iommu=pt**) * в **/etc/modules** добавить: vfio vfio_iommu_type1 vfio_pci vfio_virqfd * создать файл /etc/modprobe.d/vfio.conf, с содержимым: options vfio_iommu_type1 allow_unsafe_interrupts=1 * сделать **update-grub && update-initramfs -u -k all** * перезагрузить систему * убедится что параметры ядра применились: **cat /proc/cmdline** * убедится что IOMMU включен **dmesg | grep -e DMAR -e IOMMU -e AMD-Vi** * увидеть группы IOMMU **find /sys/kernel/iommu_groups/ -type l** == Мониторинг при помощи 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 == Добавление LVM хранилища == Допустим, что у нас есть ПУСТОЙ диск /dev/sdb с таблицей разделов GPT (fdisk /dev/sdb и нажать g): * Создадим LVM раздел: # ''sgdisk -N 1 /dev/sdb'' * Создадим Physical Volume (PV) без вопросов и размером метабазы 250K (ПЕРЕД metadatasize два минуса, вики отображает неправильно!): # ''pvcreate --metadatasize 250k -y -ff /dev/sdb1'' * Создадим группу томов “vmdata” на /dev/sdb1 # ''vgcreate vmdata /dev/sdb1'' Далее подключим vmdata в веб интерфейсе. Если диск не пустой, то fdisk /dev/sdb, далее удаляем разделы и с помощью g создаем GPT раздел. == Удаляем LVM-Thin хранилище по умолчанию == Не знаю почему, но мне не нравится LVM-Thin разделы. Возможно мне не понятна тонкие материи продажи воздуха облачных сервисов, однако когда я выделяю место для VM я хочу быть УВЕРЕН, что место на диске в кол-ве указанного будет ДОСТУПНО VM в любом случае. LVM-Thin позволяет выделять место "по потребности"... * Для начала проверим разделы: # 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 * Удалим из веб интерфейса (Датацентр\Хранилище), по умолчанию называется **local-lvm** * Удаляем раздел /dev/pve/data # lvremove /dev/pve/data # lsblk * Добавим в веб интерфейс (Датацентр\Хранилище), **local-lvm** тип LVM, имя pve Все теперь в корневом диске у нас есть хранилище local-lvm со свободным пространством. Имейте ввиду что тут теперь можно удалить и корневой раздел PVE, что делать крайне не рекомендуется :) == Настройка Proxmox Backup Server (PBS) == Ограничим время хранения протоколов заданий: proxmox-backup-manager node update --task-log-max-days 60 по умолчанию не ограничено, так что рано или поздно мето на PBS закончится.