# Proxmox # LXC # Templates Обновить список ```shell pveam update ``` Отобразить список ```shell pveam available pveam available --section system ``` Отобразить установленные ```shell pveam list local ``` Скачать XXX ```shell pveam download local XXX ``` # Проброс видеокарты Создать привилегированный контейнер Отредактировать файл /etc/pve/lxc/<id>.conf ``` lxc.cgroup.devices.allow: c 226:0 rwm lxc.cgroup.devices.allow: c 226:128 rwm lxc.cgroup.devices.allow: c 29:0 rwm lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file ``` Установить драйвера видеокарты в контейнер ```shell apt install vainfo i965-va-driver ffmpeg ``` # Уменьшение размера диска контейнера Остановить контейнер ```bash lxc-stop --name 101 ``` Изменить размер диска в файле конфигурации ```bash nano /etc/pve/lxc/101.conf ``` Проверить диск на ошибки ```bash e2fsck -f /dev/pve/vm-101-disk-0 ``` Перераспределить пространство ```bash fstrim -v /dev/pve/vm-101-disk-0 ``` Изменить размер диска ```bash resize2fs /dev/pve/vm-101-disk-0 8G ``` Запустить контейнер ```bash lxc-start --name 101 ``` В примере используется контейнер номер 101 и новый размер диска - 8Gb # QEMU # Принудительная смена разрешения Virtual-1 - имя виртуального монитора ```shell xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr --addmode Virtual-1 1920x1080_60.00 xrandr --output Virtual-1 --mode 1920x1080_60.00 ``` # Кластер # Удаление кластера Остановить кластер: ``` rm -fr /etc/pve/nodes/* systemctl stop pve-cluster systemctl stop corosync ``` Запустить кластер снова в одиночном режиме: ``` pmxcfs -l ``` Удалить файлы конфигов: ``` rm /etc/pve/corosync.conf rm -r /etc/corosync/* ``` Убить одиночный процесс, лучше несколько раз: ``` killall pmxcfs ``` Удалить список нод с сервера, иначе они будут болтаться там "неживые": ``` rm -fr /etc/pve/nodes ``` Включить кластер: ``` systemctl start corosync systemctl start pve-cluster ``` Рестарт веб морды: ``` service pveproxy restart ``` Если необходимо сохранить конфигурацию виртуалок, забекапить перед процедурой директорию `/etc/pve/nodes` # Ошибки # AppArmor enabled on system but the docker-default profile could not be loaded: Unable to replace "docker-default". Permission denied; attempted to load a profile while confined? Остановить контейнер, внести правки, запустить контейнер XXX - ID нужного LXC контейнера ```shell nano /etc/pve/lxc/XXX.conf ``` > lxc.apparmor.profile: unconfined > lxc.cgroup.devices.allow: a > lxc.cap.drop: # AVC apparmor="DENIED" operation="mount" info="failed flags match" error=-13 profile="lxc-100_" name="/run/systemd/unit-root/" pid=16153 comm="(ionclean)" srcname="/" flags="rw, ```shell nano /etc/apparmor.d/lxc/lxc-default-cgns ``` > mount fstype=nfs\*, > mount fstype=rpc\_pipefs, > mount options=(rw, nosuid, noexec, remount, relatime, ro, bind, rbind), ```shell systemctl reload apparmor ``` # Detected Hardware Unit Hang ```shell apt install ethtool nano /etc/default/grub ``` > GRUB\_CMDLINE\_LINUX\_DEFAULT="pcie\_aspm=off" ``` update-grub ethtool -K eth0 gso off gro off tso off nano /etc/network/if-up.d/hangfix-ifup && chmod +x /etc/network/if-up.d/hangfix-ifup ``` > \#!/bin/sh -e > if \[ "$IFACE" = "YOUR-INTERFACE-NAME-HERE" \]; then > /sbin/ethtool -K $IFACE gso off gro off tso off tx off rx off > pcie\_aspm=off > fi > exit 0 # ipcc_send_rec failed: Connection refused ```shell /etc/init.d/ntpd restart /etc/init.d/pve-cluster restart pvecm nodes pvecm status ``` # RRDC update error /var/lib/rrdcached/db/pve-storage/pve/local-lvm: -1 ```shell cd /var/lib/ systemctl stop rrdcached mv rrdcached rrdcached.bck systemctl start rrdcached systemctl restart pve-cluster ``` # vgremove Failed to update pool ```shell vgs vgremove -ff vg ``` # Восстановление LVM Если вы сделали это только что, то удалены только метаданные LVM. У вас должна сохранится архивная копия метаданных. Обычно их находят в директории /etc/lvm/archive/\[имя vg\]\_\[0-9\]+.vg, выбрать из них нужный (это обычные текстовые файлы в которых записывается конфигурация LVM) и восстановить группу томов с помощью команды ```shell vgcfgrestore -f /etc/lvm/archive/<имя vg>_<цифровое значение>.vg <имя vg> ``` Например ```shell vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main ``` Затем нужно активировать группу ```shell lvm vgchange -ay ``` # Зависание хоста при проброшенной карте от AMD ```shell cd /opt apt install pve-headers apt install git dkms build-essential git clone https://github.com/gnif/vendor-reset.git cd vendor-reset dkms install . echo "vendor-reset" >> /etc/modules update-initramfs -u modprobe vendor-reset reboot ``` # Зависла виртуальная машина Посмотреть список виртуальных машин ```shell qm list ``` Остановить виртуальную машину (VMID поменять на ID виртуальной машины из списка) ```shell qm stop VMID ``` Посмотреть PID процесса виртуальной машины (VMID поменять на ID виртуальной машины из списка) ```shell ps aux | grep "/usr/bin/kvm -id VMID" ``` Убить виртуальную машину (PID поменять на процесс виртуальной машины) ```shell kill -9 PID ``` # Неизвестный статус хоста, виртуалок и дисков ```shell systemctl status -l pvestatd journalctl -r systemctl restart pvestatd ``` # Система # Bonding • Round-robin (balance-rr): Передача сетевых пакетов в последовательном порядке от первого доступного связанного сетевого интерфейса (NIC) до последнего. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость. • Active-backup (active-backup): Только один из связанных в bond сетевых интерфейсов активен. Другой связанный интерфейс становится активным, если и только если активный интерфейс выходит из строя. MAC-адрес одного логического связанного интерфейса виден извне только на одном сетевом адаптере (порту), чтобы избежать искажений в сетевом коммутаторе. Этот режим обеспечивает отказоустойчивость. • XOR (balance-xor): Передача сетевых пакетов на основе \[(source MAC address XOR’d with destination MAC address) modulo NIC slave count\]. Это выбирает тот же ведомый сетевой адаптер для каждого MAC-адреса назначения. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость. • Broadcast (broadcast): Передает сетевые пакеты по всем связанным сетевым интерфейсам. Этот режим обеспечивает отказоустойчивость. • IEEE 802.3ad Dynamic link aggregation (802.3ad)(LACP): Создает группы агрегации с одинаковыми настройками скорости и дуплекса. Использует все связанные сетевые интерфейсы в активной группе агрегаторов в соответствии со спецификацией 802.3 ad. • Adaptive transmit load balancing (balance-tlb): Linux bonding driver mode, который не требует специальной поддержки сетевых коммутаторов. Исходящий сетевой пакетный трафик распределяется в соответствии с текущей нагрузкой (вычисленной относительно скорости) на каждом ведомом устройстве сетевого интерфейса. Входящий трафик получен одним в настоящее время назначенным ведомым сетевым интерфейсом. Если этот принимающий интерфейс отказывает, другой связанный интерфейс берет на себя MAC-адрес отказавшего принимающего интерфейса. • Adaptive load balancing (balance-alb): Включает balance-tlb plus receive load balancing (rlb) для трафика IPV4 и не требует специальной поддержки сетевых коммутаторов. Балансировка нагрузки на прием достигается путем согласования ARP. Драйвер связи перехватывает ответы ARP, отправленные локальной системой на их выходе, и перезаписывает исходный аппаратный адрес с уникальным аппаратным адресом одного из подчиненных сетевых карт в едином логическом связанном интерфейсе так, чтобы различные сетевые узлы использовали различные MAC-адреса для своего сетевого пакетного трафика. # GVT-g Загружаем модули ```bash echo "vfio" >> /etc/modules-load.d/modules.conf echo "vfio_iommu_type1" >> /etc/modules-load.d/modules.conf echo "vfio_pci" >> /etc/modules-load.d/modules.conf echo "vfio_virqfd" >> /etc/modules-load.d/modules.conf echo "kvmgt" >> /etc/modules-load.d/modules.conf ``` Вносим изменения в загрузчик ```bash nano /etc/default/grub ``` > GRUB\_CMDLINE\_LINUX\_DEFAULT="quiet intel\_iommu=on kvm.ignore\_msrs=1 i915.enable\_gvt=1 i915.enable\_execlists=0 drm.debug=0" Обновляем конфиги и модули ```bash update-grub && update-initramfs -u -k all ``` Перезапускаем сервер В свойствах виртуальной машины (предварительно ее отключив) раздел процессора приводим к виду > cpu: host,hidden=1 Теперь добавляем PCI устройство с видеокартой и отключаем виртуальную # Nvidia драйвер для хоста Добавить дополнительные репозитории в /etc/apt/sources.list ``` deb http://ftp.us.debian.org/debian bullseye main contrib non-free deb http://ftp.us.debian.org/debian bullseye-updates main contrib non-free deb http://security.debian.org bullseye-security main contrib ``` Обновить пакеты и систему ```bash apt update apt upgrade ``` Установить заголовки ядра ```bash apt install pve-headers ``` Установить драйвер и необходимые пакеты ``` apt install libnvidia-cfg1 nvidia-kernel-source nvidia-kernel-common nvidia-driver ``` Перезагрузить систему ```bash reboot ``` Проверить установку драйвера ```bash nvidia-smi ``` # Trim Для автоматизации операции trim для физических дисков, а также для lxc контейнеров выполняем ряд операций ниже. Создаем скрипт: ```bash nano /opt/pve_trim.sh ``` Вносим в него: ```bash #!/bin/bash FSTRIM=/sbin/fstrim for i in $(pct list | awk '/^[0-9]/ {print $1}'); do   pct fstrim "$i" 2>&1 | logger -t "pct fstrim [$$]" done $FSTRIM -av 2>&1 | logger -t "fstrim [$$]" ``` После создаем задание: ```bash nano /etc/cron.d/pve_trim ``` Вносим в него следующее: ```bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 6 * * 1 /opt/pve_trim.sh ``` Все. Теперь каждый понедельник в 6 утра будет запускаться сначала трим по всем контейнерам, после чего трим физических дисков сервера. P.S. Не ставить задание чаще, чем раз в неделю! # Включение rc.local ```shell nano /etc/systemd/system/rc-local.service ``` > \[Unit\] > Description=/etc/rc.local Compatibility > ConditionPathExists=/etc/rc.local > > \[Service\] > Type=forking > ExecStart=/etc/rc.local start > TimeoutSec=0 > StandardOutput=tty > RemainAfterExit=yes > SysVStartPriority=99 > > \[Install\] > WantedBy=multi-user.target ``` nano /etc/rc.local ``` > \#!/bin/bash > exit 0 ``` chmod +x /etc/rc.local systemctl enable --now rc-local ``` # Изменение swap раздела Отключить подкачку ```shell swapoff -v /dev/pve/swap ``` Увеличить размер раздела ```shell lvm lvresize /dev/pve/swap -L +8G ``` Отметить раздел как swap ```shell mkswap /dev/pve/swap ``` Включить swap ```shell swapon -va ``` # Смена имени Отредактировать файлы > /etc/hostname > /etc/hosts > /etc/postfix/main.cf > /etc/mailname (if you're using this) > /etc/pve/storage.cfg > /var/lib/rrdcached/db/pve2-storage > /var/lib/rrdcached/db/pve2-node > /etc/pve/nodes/ Перезапустить сервер ```bash reboot ``` # Установка гостевых систем # Alpine ```bash sudo apk add udev sudo rc-update add udev sysinit sudo rc-update add udev-trigger sudo rc-update add udev-settle sudo rc-update add udev-postmount sudo apk add qemu-guest-agent sudo rc-update add qemu-guest-agent ``` # CentOS ```shell sudo yum upgrade sudo yum install qemu-guest-agent open-vm-tools rng-tools sudo systemctl enable qemu-guest-agent sudo systemctl start qemu-guest-agent sudo reboot ``` # Ubuntu ```shell sudo apt update sudo apt install qemu-guest-agent open-vm-tools rng-tools sudo systemctl enable qemu-guest-agent sudo systemctl start qemu-guest-agent sudo reboot ```