Редакция декабрь, 2025
Аннотация
qmПримечание
apt-get позволяют пользователям легко обновлять свои системы и быть в курсе актуальных новинок мира свободных программ.
Содержание
SCDWriter.exe;

Предупреждение




Предупреждение



Предупреждение
Предупреждение
dd:
#где <файл-образа.iso> — ISO-образ установочного диска с дистрибутивом, аddoflag=direct if=<файл-образа.iso> of=/dev/sdX bs=1M status=progress;sync
/dev/sdX — устройство, соответствующее flash-диску.
#где <файл-образа.iso> — ISO-образ диска, аpv<файл-образа.iso> | dd oflag=direct of=/dev/sdX bs=1M;sync
/dev/sdX — устройство, соответствующее flash-диску.
lsblk или (если такой команды нет) blkid.
$ lsblk | grep disk
sda 8:0 0 931,5G 0 disk
sdb 8:16 0 931,5G 0 disk
sdc 8:32 1 7,4G 0 disk
USB-диск имеет имя устройства sdc.
# dd oflag=direct if=/iso/alt-virtualization-pve-11.1-x86_64.iso of=/dev/sdc bs=1M status=progress; sync
# pv /iso/alt-virtualization-pve-11.1-x86_64.iso | dd oflag=direct of=/dev/sdc bs=1M;sync
dd: warning: partial read (524288 bytes); suggest iflag=fullblock
3GiB 0:10:28 [4,61MiB/s] [===================================> ] 72% ETA 0:04:07
Предупреждение
sudo dd if=alt-virtualization-pve-11.1-x86_64.isoof=/dev/rdiskX bs=10Msync
alt-virtualization-pve-11.1-x86_64.iso — ISO-образ диска, а /dev/rdiskX — flash-диск.
diskutil list
Предупреждение
$ du -b alt-virtualization-pve-11.1-x86_64.iso | cut -f1
2695397376
$ md5sum alt-virtualization-pve-11.1-x86_64.iso
067e7f3ec11eef68e733bac044035215 alt-virtualization-pve-11.1-x86_64.iso
# head -c 2695397376 /dev/sdd | md5sum
067e7f3ec11eef68e733bac044035215
где размер после -c — вывод в п.1, а /dev/sdd — устройство DVD или USB Flash, на которое производилась запись.
Предупреждение
Примечание

vncviewer --listen):


Log in as root localhost login:

Примечание

Примечание
Примечание


Примечание
… Running initinstall script [15-expert.sh] [ DONE ] 14:19:54 Running initinstall script [20-nodesign.sh] [ DONE ] 14:19:54 Running initinstall script [20-pts.sh] [ DONE ] 14:19:54 Running initinstall script [25-setup-dhcp.sh] [ DONE ] 14:19:54 Running initinstall script [26-metadata-autoinstall.sh] [ DONE ] 14:19:54 Running initinstall script [27-metadata-install-scripts.sh] [ DONE ] 14:19:54 Running initinstall script [30-ntp-client.sh] [ DONE ] 14:19:54 Running initinstall script [40-xorg.sh] [ DONE ] 14:19:54 Running initinstall script [50-removable] [ DONE ] 14:19:54 Running initinstall script [80-stop-md-dm.sh] [ DONE ] 11:19:59 Running initinstall script [85-start-multipath.sh] [ DONE ] 11:19:59 Running initinstall script [90-alteratord.sh] [ DONE ] 11:19:59 Running initinstall script [90-date.sh] [ DONE ] 11:19:59 Running initinstall script [90-pkg.sh] [ DONE ] 11:20:00 Running initinstall script [91-pkg-size.sh] [ DONE ] 11:20:01 Running initinstall script [95-virt-env.sh] [ DONE ] 11:20:01 Running initinstall script [98-oem.sh] [ DONE ] 11:20:01 Open debug shell on tty2 [ DONE ] 11:20:01 Open debug shell on tty3 [ DONE ] 11:20:01 ** IP(s): 192.168.0.95 ** VNC cmdline: vncpassword=Pa$$word The VNC desktop is: localhost.localdomain:0 PORT=5900
$ vncviewer 192.168.0.95
Примечание
Welcome to ALT Virtualization PVE Edition 11.1 (Nimbostratus)! Hostname: pve01.test.alt IP: 192.168.0.186 Use https://192.168.0.186:8006/ to manage your PVE server. server login:
Примечание
позволяет показать/скрыть панель со списком шагов установки:





Примечание

Примечание

/boot);

Примечание
Примечание

Предупреждение
Примечание
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
└─sda2 8:2 0 99,4G 0 part
├─pve-swap 253:0 0 2G 0 lvm [SWAP]
├─pve-root 253:1 0 14G 0 lvm /
├─pve-data_tmeta 253:2 0 84M 0 lvm
│ └─pve-data 253:4 0 81,8G 0 lvm
└─pve-data_tdata 253:3 0 81,8G 0 lvm
└─pve-data 253:4 0 81,8G 0 lvm
sr0 11:0 1 2,5G 0 rom
Примечание

/var/lib/pve/local-btrfs — он используется для хранения данных, необходимых для работы виртуализации.

Примечание
Примечание
Примечание
/var/lib/pve/local-btrfs. Для того чтобы использовать данный подтом инструментами PVE, в /etc/pve/storage.cfg будет создана следующая конфигурация:
dir: local
path /var/lib/vz
content iso,vztmpl,backup
disable # стандарное хранилище отключено
btrfs: local-btrfs
path /var/lib/pve/local-btrfs
content iso,vztmpl,backup,images,rootdir
Таким образом, хранилище local будет отключено в пользу local-btrfs, расположенного на дополнительном подтоме. Хранилище local-btrfs поддерживает все типы данных (образы, шаблоны, резервные копии и т.д).
# btrfs subvolume list /
ID 256 gen 160 top level 5 path var_lib_pve_local-btrfs
ID 257 gen 196 top level 5 path root
ID 258 gen 134 top level 257 path var/lib/machines

Предупреждение


/etc/fstab).

/root/.install-log, после чего из неё будут удалены все загрузочные записи, что приведёт к восстановлению полностью заполненной NVRAM и гарантирует загрузку вновь установленной ОС;
Примечание


Примечание
Примечание

Примечание

Примечание

Важно


#apt-get update#apt-get dist-upgrade#update-kernel#apt-get clean#reboot
Примечание
$ su -
или зарегистрировавшись в системе под именем root. Про режим суперпользователя можно почитать в главе Режим суперпользователя.
Примечание
Важно
Важно

nomodeset — не использовать modeset-драйверы для видеокарты;
vga=normal — отключить графический экран загрузки установщика;
xdriver=vesa — явно использовать видеодрайвер vesa. Данным параметром можно явно указать нужный вариант драйвера;
acpi=off noapic — отключение ACPI (управление питанием), если система не поддерживает ACPI полностью.
apm=off acpi=off mce=off barrier=off vga=normal). В безопасном режиме отключаются все параметры ядра, которые могут вызвать проблемы при загрузке. В этом режиме установка будет произведена без поддержки APIC. Возможно, у вас какое-то новое или нестандартное оборудование, но может оказаться, что оно отлично настраивается со старыми драйверами.
Log in as root localhost login:После ввода логина логина суперпользователя (root) появится приглашение командной строки:
[root@localhost /]#. Начиная с этого момента, система готова к вводу команд.

fixmbr без параметров. Программа попытается переустановить загрузчик в автоматическом режиме.
Содержание

Важно


Содержание
qmhttps://<имя-компьютера>:8006. Для входа требуется аутентификация (логин по умолчанию: root, пароль указывается в процессе установки ОС):


Примечание


Примечание
Важно
#control sshd-permit-root-login without_password#systemctl restart sshd
#А после того, как сервер будет добавлен, снова отключить.control sshd-permit-root-login enabled#systemctl restart sshd
Таблица 25.1. Используемые порты
|
Порт
|
Функция
|
|---|---|
|
TCP 8006
|
Веб-интерфейс PVE
|
|
TCP 5900-5999
|
Доступ к консоли VNC
|
|
TCP 3128
|
Доступ к консоли SPICE
|
|
TCP 22
|
SSH-доступ
|
|
UDP 5405-5412
|
Трафик кластера corosync
|
|
TCP 60000-60050
|
Живая миграция (память ВМ и данные локального диска)
|
/etc/hosts:
#echo "192.168.0.186 pve01.test.alt pve01" >> /etc/hosts#echo "192.168.0.90 pve02.test.alt pve02" >> /etc/hosts#echo "192.168.0.70 pve03.test.alt pve03" >> /etc/hosts
Примечание
/etc/hosts можно в панели управления: выбрать узел, перейти в → , добавить все узлы, которые будут включены в состав кластера и нажать кнопку :

Примечание
/etc/hosts разрешающимся в 127.0.0.1.








Примечание
/etc/pve на присоединяемом узле будет полностью перезаписано конфигурацией кластера. В частности, присоединяющийся узел не должен содержать гостевые системы, так как это может привести к конфликтам идентификаторов ВМ. Если на узле уже есть ВМ, рекомендуется перед присоединением создать резервные копии всех ВМ (используя vzdump) и восстановить их с новыми идентификаторами после присоединения к кластеру.

Примечание
# pvecm create <cluster_name>
# pvecm create pve-cluster
# pvecm status
Cluster information
-------------------
Name: pve-cluster
Config Version: 1
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Mon May 5 13:59:31 2025
Quorum provider: corosync_votequorum
Nodes: 1
Node ID: 0x00000001
Ring ID: 1.5
Quorate: Yes
Votequorum information
----------------------
Expected votes: 1
Highest expected: 1
Total votes: 1
Quorum: 1
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.0.186 (local)
/etc/pve/corosync.conf. По мере добавления узлов в кластер файл настройки будет автоматически пополняться информацией об узлах.
# pvecm add <existing_node_in_cluster>
где existing_node_in_cluster — адрес уже добавленного узла (рекомендуется указывать самый первый).
Примечание
link0 для установки адреса узла в этой сети:
# pvecm add <existing_node_in_cluster> --link0 <IP_link0>
# pvecm add pve01
где pve01 — имя или IP-адрес «головного» узла.
# pvecm add pve01
Please enter superuser (root) password for 'pve01': ***
Establishing API connection with host 'pve01'
Login succeeded.
Request addition of this node
Join request OK, finishing setup locally
stopping pve-cluster service
backup old database to '/var/lib/pve-cluster/backup/config-1625747072.sql.gz'
waiting for quorum...OK
(re)generate node files
generate new node certificate
merge authorized SSH keys and known hosts
generated new node certificate, restart pveproxy and pvedaemon services
successfully added node 'pve03' to cluster.
/etc/pve/corosync.conf должен содержать информацию об узлах кластера.
#systemctl start pve-cluster pveproxy pvedaemon pvestatd pve-firewall pvefw-logger pve-ha-crm pve-ha-lrm spiceproxy lxc lxcfs lxc-net lxc-monitord qmeventd pvescheduler pve-lxc-syscalld#systemctl enable pve-cluster pveproxy pvedaemon pvestatd pve-firewall corosync pvefw-logger pve-guests pve-ha-crm pve-ha-lrm spiceproxy lxc lxcfs lxc-net lxc-monitord qmeventd pvescheduler pve-lxc-syscalld
pvecm nodes, чтобы определить идентификатор узла, который следует удалить:
# pvecm nodes
Membership information
----------------------
Nodeid Votes Name
1 1 pve01 (local)
2 1 pve02
3 1 pve03
# pvecm delnode pve02
Примечание
Could not kill node (error = CS_ERR_NOT_EXIST)Данную ошибку можно игнорировать. Она возникает, если узел уже недоступен, и не влияет на корректность удаления.
Membership information команда отобразит список узлов кластера без удаленного узла):
# pvecm status
…
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.0.186 (local)
0x00000003 1 192.168.0.70
Важно
/etc/pve/nodes/<имя_узла> не удаляется автоматически. Он может содержать конфигурации ВМ, хранилищ и другие данные, которые при необходимости можно сохранить или перенести.
Примечание
#Командаpvecm expected 1#pvecm delnode <недоступный_узел>
pvecm expected 1 применяется в ситуациях, когда:
pvecm expected 1 является аварийной мерой управления кластером, а не штатной операцией, и должно применяться только при осознанном принятии риска потери отказоустойчивости.
# pvecm status
…
Votequorum information
----------------------
Expected votes: 5
Highest expected: 5
Total votes: 5
Quorum: 3
Flags: Quorate
…
В выводе команды видно, что в кластере пять узлов (Expected votes), из них для кворума необходимо не менее трёх (Quorum), сейчас все пять узлов активны (Total votes), кворум соблюден (Flags: Quorate).
Примечание
Важно
#А после того, как QDevice будет добавлен, отключить:control sshd-permit-root-login enabled#systemctl restart sshd
#control sshd-permit-root-login without_password#systemctl restart sshd
# apt-get install corosync-qnetd
# corosync-qnetd-certutil -i
Примечание
/etc/sysconfig/corosync-qnetd изменить значение опции COROSYNC_QNETD_OPTIONS:
COROSYNC_QNETD_OPTIONS="-s off"
corosync-qnetd:
# systemctl enable --now corosync-qnetd
# apt-get install corosync-qdevice
# pvecm qdevice setup 192.168.0.88
где 192.168.0.88 — IP-адрес арбитра (внешнего сервера).
# pvecm status
…
Votequorum information
----------------------
Expected votes: 5
Highest expected: 5
Total votes: 5
Quorum: 3
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
0x00000001 1 A,V,NMW 192.168.0.186 (local)
0x00000002 1 A,V,NMW 192.168.0.90
0x00000003 1 A,V,NMW 192.168.0.70
0x00000004 1 A,V,NMW 192.168.0.91
0x00000000 1 Qdevice
# pvecm qdevice remove
/etc/pve/priv/ и /etc/pve/nodes/${NAME}/priv/ доступны только root.
/etc/pve/.
Таблица 26.1. Доступные типы хранилищ
|
Хранилище
|
PVE тип
|
Уровень
|
Общее (shared)
|
Снимки (snapshots)
|
|---|---|---|---|---|
|
ZFS (локальный)
|
zfspool
|
файл
|
нет
|
да
|
|
dir
|
файл
|
нет
|
нет (возможны в формате qcow2)
|
|
|
btrfs
|
файл
|
нет
|
да
|
|
|
nfs
|
файл
|
да
|
нет (возможны в формате qcow2)
|
|
|
cifs
|
файл
|
да
|
нет (возможны в формате qcow2)
|
|
|
cephfs
|
файл
|
да
|
да
|
|
|
lvm
|
блок
|
нет*
|
да
|
|
|
lvmthin
|
блок
|
нет
|
да
|
|
|
iscsi
|
блок
|
да
|
нет
|
|
|
iscsidirect
|
блок
|
да
|
нет
|
|
|
rbd
|
блок
|
да
|
да
|
|
|
ZFS over iSCSI
|
zfs
|
блок
|
да
|
да
|
|
pbs
|
файл/блок
|
да
|
-
|
|
|
esxi
|
-
|
да
|
-
|
Примечание
/etc/pve/storage.cfg. Поскольку этот файл находится в каталоге /etc/pve/, он автоматически реплицируется на все узлы кластера. Таким образом, все узлы имеют одинаковую конфигурацию хранилищ.
<type>: <STORAGE_ID>
<property> <value>
<property> <value>
...
/etc/pve/storage.cfg:
# cat /etc/pve/storage.cfg
# Локальное файловое хранилище
dir: local
path /var/lib/vz
content iso,vztmpl,snippets,backup,rootdir
shared 0
# хранилище образов по умолчанию при установке на LVM
lvmthin: local-lvm
thinpool data
vgname pve
content images,rootdir
# NFS-хранилище
nfs: nfs-storage
export /export/storage
path /mnt/nfs-vol
server 192.168.0.105
content images,iso,backup,vztmpl
options vers=3,nolock,tcp
/var/lib/vz;
Таблица 26.2. Параметры хранилищ
|
Свойство
|
Описание
|
|---|---|
|
nodes
|
Список узлов кластера, на которых доступно хранилище. Позволяет ограничить его использование
|
|
content
|
Типы данных, поддерживаемые хранилищем:
|
|
shared
|
Указывает, что хранилище физически одно и то же на всех узлах (или на перечисленных в опции
nodes). Не делает локальное хранилище общим автоматически — только помечает уже общее хранилище
|
|
disable
|
Отключает хранилище
|
|
maxfiles
|
Устарело, следует использовать свойство prune-backups
|
|
prune-backups
|
Параметры хранения резервных копий
|
|
format
|
Формат образа по умолчанию: raw, qcow2, vmdk
|
|
preallocation
|
Режим предварительного выделения для образов raw и qcow2 в файловых хранилищах: off, metadata, falloc, full. По умолчанию — metadata (для raw эквивалентно off). На сетевых хранилищах рекомендуется off для больших qcow2, чтобы избежать таймаутов.
|
Примечание
local:iso/slinux-11.0-x86_64.iso local:101/vm-101-disk-0.qcow2 local:backup/vzdump-qemu-100-2024_08_22-21_12_33.vma.zst nfs-storage:vztmpl/alt-p10-rootfs-systemd-x86_64.tar.xz
# pvesm path <VOLUME_ID>
Например:
#pvesm path local:iso/slinux-11.0-x86_64.iso/var/lib/vz/template/iso/slinux-11.0-x86_64.iso #pvesm path nfs-storage:vztmpl/alt-p11-rootfs-systemd-x86_64.tar.xz/mnt/pve/nfs-storage/template/cache/alt-p11-rootfs-systemd-x86_64.tar.xz
pvesm (PVE Storage Manager), позволяет управлять хранилищами.
#pvesm add <TYPE> <STORAGE_ID> <OPTIONS>#pvesm add dir <STORAGE_ID> --path <PATH>#pvesm add nfs <STORAGE_ID> --path <PATH> --server <SERVER> --export <EXPORT>#pvesm add lvm <STORAGE_ID> --vgname <VGNAME>#pvesm add iscsi <STORAGE_ID> --portal <HOST[:PORT]> --target <TARGET>
#pvesm set <STORAGE_ID> --disable 1# отключить #pvesm set <STORAGE_ID> --disable 0# включить
#pvesm set <STORAGE_ID> <OPTIONS>#pvesm set <STORAGE_ID> --shared 1#pvesm set local --format qcow2#pvesm set <STORAGE_ID> --content iso
# pvesm remove <STORAGE_ID>
# pvesm alloc <STORAGE_ID> <VMID> <name> <size> [--format <raw|qcow2>]
# pvesm alloc local <VMID> '' 4G
# pvesm free <VOLUME_ID>
# pvesm status
# pvesm list <STORAGE_ID> [--vmid <VMID>]
# pvesm list <STORAGE_ID> --content iso


Примечание

Таблица 26.3. Структура каталогов
|
Тип данных
|
Подкаталог
|
|---|---|
|
Образы дисков ВМ
|
images/<VMID>/
|
|
ISO-образы
|
template/iso/
|
|
Шаблоны контейнеров
|
template/cache/
|
|
Резервные копии VZDump
|
dump/
|
|
Фрагменты (сниппеты)
|
snippets/
|
|
Импорт
|
import/
|
Примечание
/etc/fstab, а затем определить в PVE хранилище типа каталог для этой точки монтирования. Таким образом можно использовать любую файловую систему (ФС), поддерживаемую Linux.
Примечание
/mnt/iso:

path — абсолютный путь к каталогу на файловой системе;
content-dirs (опционально) — позволяет изменить стандартную структуру каталогов. Значение представляет собой список в формате:
vtype=pathгде vtype — тип содержимого (images, backup, и т.д.), а path — путь относительно точки монтирования.
/etc/pve/storage.cfg):
dir: backup
path /mnt/backup
content backup
prune-backups keep-last=7
shared 0
content-dirs backup=custom/backup
/mnt/backup/custom/backup.
Примечание
shared (Общий доступ) можно включить только для кластерных ФС (например, OCFS2).
VM-<VMID>-<NAME>.<FORMAT>где:
# ls /var/lib/vz/images/101
vm-101-disk-0.qcow2 vm-101-disk-1.qcow2
base-<VMID>-<NAME>.<FORMAT>Это означает, что образ становится доступен только для чтения и может использоваться как базовый для клонирования.
/etc/fstab.
shared, который для NFS всегда установлен. Дополнительные параметры:
server — IP-адрес или DNS-имя сервера (рекомендуется использовать IP для избежания задержек DNS);
export — совместный ресурс с сервера NFS (список можно получить, выполнив команду pvesm scan nfs <server>);
path — локальная точка монтирования (по умолчанию: /mnt/pve/<STORAGE_ID>/);
content-dirs (опционально) — позволяет изменить стандартную структуру каталогов. Значение представляет собой список в формате:
vtype=pathгде vtype — тип содержимого (images, backup, и т.д.), а path — путь относительно точки монтирования;
options — параметры монтирования NFS (см. man nfs).
/etc/pve/storage.cfg):
nfs: nfs-storage
export /export/storage
path /mnt/pve/nfs-storage
server 192.168.0.105
content images,backup,vztmpl,iso
options vers=3,nolock,tcp
Примечание
hard) поведение: при недоступности сервера запросы повторяются бесконечно, что может вызывать зависания. Для данных, доступных только для чтения, рекомендуется использовать опцию soft, при которой после трёх неудачных попыток операция завершится с ошибкой.
Примечание
# systemctl enable --now nfs-client.target

/export/storage.
# pvesm add nfs nfs-storage \
--path /mnt/nfs-vol \
--server 192.168.0.105 \
--options vers=3,nolock,tcp \
--export /export/storage \
--content images,iso,vztmpl,backup
# pvesm nfsscan <server>
Примечание
Примечание
is_mountpoint, указав реальную точку монтирования.
/etc/pve/storage.cfg):
btrfs: btrfs-storage
path /mnt/data/btrfs-storage
content rootdir,images
is_mountpoint /mnt/data
nodes pve02
prune-backups keep-all=1
В данном примере файловая система BTRFS смонтирована в /mnt/data, а пулом данных служит её подкаталог btrfs-storage/.

# pvesm add btrfs btrfs-storage \
--path /mnt/data/btrfs-storage \
--is_mountpoint /mnt/data/ \
--content images,rootdir
/dev/sdd:
# mkfs.btrfs -m single -d single -L My-Storage /dev/sdd
Параметры -m и -d задают профиль для метаданных и данных соответственно. -L задаёт метку.
/dev/sdb1 и /dev/sdc1:
# mkfs.btrfs -m raid1 -d raid1 -L My-Storage /dev/sdb1 /dev/sdc1
#mkdir /mnt/data#mount /dev/sdd /mnt/data
/etc/fstab):
UUID=5a556184-43b2-4212-bc21-eee3798c8322 /mnt/data btrfs defaults 0 0Проверка монтирования:
# mount -a
Результатом выполнения команды должен быть пустой вывод без ошибок.
Примечание
mkfs.btrfs).
# blkid
/dev/sdd: LABEL="My-Storage" UUID="5a556184-43b2-4212-bc21-eee3798c8322" BLOCK_SIZE="4096" TYPE="btrfs"
# btrfs subvolume create /mnt/data/btrfs-storage
# btrfs subvolume snapshot -r /mnt/data/btrfs-storage /mnt/data/new
Будет создан доступный только для чтения «клон» подтома /mnt/data/btrfs-storage. Чтобы из снимка, доступного только для чтения, создать его версию, доступную для записи, следует просто создать его снимок без опции -r.
# btrfs subvolume list /mnt/data
ID 256 gen 17 top level 5 path btrfs-storage
ID 257 gen 14 top level 5 path new
# btrfs subvolume delete /mnt/data/btrfs-storage
# btrfs filesystem usage /mnt/data
или:
$ btrfs filesystem df /mnt/data
Примечание
shared, который всегда включён. Дополнительные параметры:
server — IP-адрес или DNS-имя сервера (рекомендуется использовать IP для избежания задержек DNS);
share — совместный ресурс с сервера CIFS (список можно просмотреть, выполнив команду pvesm scan cifs <server>);
username — имя пользователя для хранилища CIFS (опционально, по умолчанию «guest»);
password — пароль пользователя (опционально). Пароль хранится в /etc/pve/priv/storage/<STORAGE-ID>.pw, доступном только root;
domain — рабочая группа или домен (опционально);
smbversion — версия протокола SMB (опционально, по умолчанию 3; версия 1 не поддерживается);
path — локальная точка монтирования (по умолчанию: /mnt/pve/<STORAGE_ID>/);
content-dirs (опционально) — позволяет изменить стандартную структуру каталогов. Значение представляет собой список в формате:
vtype=pathгде vtype — тип содержимого (images, backup, и т.д.), а path — путь относительно точки монтирования;
options — дополнительные параметры монтирования CIFS (см. man mount.cifs). Некоторые параметры устанавливаются автоматически, и их не следует задавать в этом параметре. PVE всегда устанавливает опцию soft;
subdir — подкаталог внутри общего ресурса (по умолчанию — корень).
/etc/pve/storage.cfg):
cifs: newCIFS
path /mnt/pve/newCIFS
server 192.168.0.105
share smb_data
smbversion 2.1
# pvesm cifsscan <server> [--username <username>] [--password]
# pvesm add cifs <storagename> --server <server> --share <share> [--username <username>] [--password]

Примечание
# pvesm add cifs newCIFS \
--server 192.168.0.105 \
--share smb_data \
--smbversion 2.1
Примечание
# modprobe zfs
#zfsв файле
/etc/modules-load.d/zfs.conf.
pool — имя пула или файловой системы ZFS;
blocksize — размер блока;
sparse — использовать тонкое выделение ресурсов;
mountpoint — точка монтирования пула/файловой системы ZFS. Изменение этого параметра не влияет на свойство mountpoint в ZFS. По умолчанию /<pool>.
/etc/pve/storage.cfg):
zfspool: vmdata
pool vmdata
content images,rootdir
mountpoint /vmdata
nodes pve03
Примечание
cannot destroy 'data/vm-101-disk-0': dataset is busyЧтобы избежать конфликта, следует исключить ZFS-диски из области сканирования LVM, добавив в конфигурацию LVM (файл
/etc/lvm/lvm.conf) в секцию devices{} строки:
# Do not scan ZFS zvols (to avoid problems on ZFS zvols snapshots) filter = [ "r|^/dev/zd*|" ] global_filter = [ "r|^/dev/zd*|" ]





zfs и zpool.
# zpool create -f -o ashift=12 <pool> <device1> <device2>
# zpool create -f -o ashift=12 <pool> mirror <device1> <device2>
# zpool create -f -o ashift=12 <pool> mirror <device1> <device2> mirror <device3> <device4>
# zpool create -f -o ashift=12 <pool> raidz1 <device1> <device2> <device3>
# zpool create -f -o ashift=12 <pool> raidz2 <device1> <device2> <device3> <device4>
# zpool replace -f <pool> <old device> <new device>
# zfs set compression=on <pool>
# pvesm zfsscan
# zpool create -f vmdata mirror sdb sdc
# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
vmdata 17,5G 492K 17,5G - - 0% 0% 1.00x ONLINE -
Статус пула:
# zpool status
pool: vmdata
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
vmdata ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
vgname — имя группы томов LVM (должна существовать в системе);
base — базовый том. Этот том автоматически активируется перед доступом к хранилищу. Параметр особенно полезен, если группа томов LVM находится на удалённом iSCSI-сервере;
saferemove — безопасное удаление томов (соответствует опции Стереть удалённые тома в веб-интерфейсе). При удалении LVM-тома все его данные полностью затираются нулями, что исключает возможность восстановления остаточных данных при последующем создании томов на тех же физических экстентах;
saferemove_throughput — скорость операции безопасного удаления (значение параметра cstream -t утилиты cstream);
snapshot-as-volume-chain — снимки как цепочки томов. Включает поддержку создания снимков для ВМ в LVM через механизм цепочек томов:
snapshot1 → snapshot2 → active-volume
/etc/pve/storage.cfg):
lvm: vg
vgname vg
content images,rootdir
saferemove 0
shared 0
snapshot-as-volume-chain 1
nodes pve03
Примечание




/dev/sdd:
# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
# vgcreate vg /dev/sdd
Volume group "vg" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd vg lvm2 a-- <18,00g <3,00g
# vgs
VG #PV #LV #SN Attr VSize VFree
vg 1 2 0 wz--n- <18,00g <3,00g
# pvesm lvmscan
vg
# pvesm add lvm myspace --vgname vg --nodes pve03
vgname — имя группы томов LVM (должна существовать в системе);
thinpool — название тонкого пула LVM.
/etc/pve/storage.cfg):
lvmthin: vmstore
thinpool vmstore
vgname vmstore
content rootdir,images
nodes pve03
Примечание



# lvcreate -L 80G -T -n vmstore vg
# pvesm lvmthinscan vg
vmstore
# pvesm add lvmthin vmstore --thinpool vmstore --vgname vg --nodes pve03
portal — IP-адрес или DNS-имя iSCSI-сервера;
target — iSCSI-цель (target).
/etc/pve/storage.cfg):
iscsi: test1-iSCSI
portal 192.168.0.105
target iqn.2021-7.local.omv:test
content images
Примечание
content noneВ этом случае напрямую создавать ВМ на таком хранилище будет невозможно — оно будет служить только «основой» для других уровней.
Примечание
iscsid — включена и запущена:
# systemctl enable --now iscsid

# pvesm scan iscsi <IP-адрес сервера[:порт]>
# pvesm add iscsi <ID> --portal <Сервер iSCSI> --target <Цель iSCSI> --content none
Примечание
/etc/pve/storage.cfg):
iscsidirect: test1-iSCSi
portal 192.168.0.191
target dc1.test.alt:server.target
monhost — список IP-адресов мониторов Ceph (указывается только при подключении к внешнему кластеру Ceph);
pool — название пула Ceph (по умолчанию rbd);
username — имя пользователя Ceph (только для внешних кластеров);
krbd (опционально) — использовать драйвер ядра krbd для монтирования образов (по умолчанию — отключено).
Примечание
krbd.
/etc/pve/storage.cfg):
rbd: new
content images
krbd 0
monhost 192.168.0.105
pool rbd
username admin

/root узла:
# scp <external cephserver>:/etc/ceph/ceph.client.admin.keyring /root/rbd.keyring
# pvesm add rbd <name> \
--monhost "10.1.1.20 10.1.1.21 10.1.1.22" \
--content images \
--keyring /root/rbd.keyring
/etc/pve/priv/ceph/<STORAGE_ID>.keyring.

Примечание
monhost — IP-адреса мониторов (только для внешнего Ceph);
path — локальная точка монтирования (по умолчанию: /mnt/pve/<STORAGE_ID>/);
username — пользователь Ceph (только для внешнего кластера);
subdir — подкаталог CephFS для монтирования (по умолчанию — корень /);
fuse — доступ к CephFS через FUSE (по умолчанию 0).
/etc/pve/storage.cfg):
cephfs: cephfs-external
content backup
monhost 192.168.0.105
path /mnt/pve/cephfs-external
username admin

Примечание
# ceph fs ls
/root узла:
# scp <external cephserver>:/etc/ceph/cephfs.secret /root/cephfs.secret
# pvesm add cephfs <name> \
--monhost "10.1.1.20 10.1.1.21 10.1.1.22" \
--content backup --keyring \
/root/cephfs.secret
/etc/pve/priv/ceph/<STORAGE_ID>.secret.
# ceph auth get-key client.userid > cephfs.secret
shared, который всегда включён. Дополнительные параметры:
server — IP-адрес или DNS-имя сервера резервного копирования;
username — имя пользователя на сервере резервного копирования (например, root@pam, backup_u@pbs);
password — пароль пользователя. (сохраняется в /etc/pve/priv/storage/<STORAGE-ID>.pw, доступен только суперпользователю);
datastore — имя хранилища на сервере PBS;
fingerprint — отпечаток TLS-сертификата PBS. (обязателен при использовании самоподписанного сертификата). Отпечаток можно получить в веб-интерфейсе сервера резервного копирования или с помощью команды proxmox-backup-manager cert info;
encryption-key (опционально) — ключ для шифрования резервной копии. В настоящее время поддерживаются только те файлы, которые не защищены паролем (без функции получения ключа (kdf)). Сохраняется в /etc/pve/priv/storage/<STORAGE-ID>.enc, доступен только суперпользователю;
master-pubkey (опционально) — открытый ключ RSA для шифрования копии ключа шифрования (encryption-key). Зашифрованная копия будет добавлена к резервной копии и сохранена на сервере резервного копирования для целей восстановления.
/etc/pve/storage.cfg):
pbs: pbs_backup
datastore store2
server 192.168.0.123
content backup
fingerprint 42:5d:29:20:…:d1:be:bc:c0:c0:a9:9b:b1:a8:1b
prune-backups keep-all=1
username root@pam

# pvesm add pbs pbs_backup \
--server 192.168.0.123 \
--datastore store2 \
--username root@pam \
--fingerprint 42:5d:29:20:…:d1:be:bc:c0:c0:a9:9b:b1:a8:1b \
--password
encryption-key, либо через веб-интерфейс:



/etc/pve/priv/storage/<STORAGE-ID>.enc, который доступен только пользователю root.
Примечание
proxmox-backup-client key. Например, сгенерировать ключ:
# proxmox-backup-client key create --kdf none <path>
Сгенерировать мастер-ключ:
# proxmox-backup-client key create-master-key
Важно
Важно
Примечание
server — IP-адрес или DNS-имя ESXi-хоста;
username — имя администратора;
password — пароль администратора. (сохраняется в /etc/pve/priv/storage/<STORAGE-ID>.pw, доступно только суперпользователю);
skip-cert-verification — отключить проверку TLS-сертификата (использовать только в доверенных сетях).
/etc/pve/storage.cfg):
esxi: myESXi
server 192.168.0.130
username root
skip-cert-verification 1

# pvesm add esxi myESXi \
--server 192.168.0.130 \
--username root \
--skip-cert-verification 1 \
--password
Примечание
Примечание
systool из пакета sysfsutils.
# apt-get install sysfsutils
# systool -c fc_host -A port_name
Class = "fc_host"
Class Device = "host1"
port_name = "0x10000090fa59a61a"
Device = "host1"
Class Device = "host16"
port_name = "0x10000090fa59a61b"
Device = "host16"
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 59G 0 disk
sdb 8:16 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdc 8:32 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdd 8:48 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sde 8:64 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
В этом примере один LUN объёмом ~931 ГБ доступен по четырём путям.
node.startup значение automatic. Значение по умолчанию для параметра node.session.timeo.replacement_timeout составляет 120 секунд. Рекомендуется использовать значение — 15 секунд.
/etc/iscsi/iscsid.conf (по умолчанию). Если iSCSI target уже подключен, то необходимо изменить настройки по умолчанию для конкретной цели в файле /etc/iscsi/nodes/<TARGET>/<PORTAL>/default.
#apt-get install open-iscsi#systemctl enable --now iscsid
/etc/iscsi/iscsid.conf:
node.startup = automatic node.session.timeo.replacement_timeout = 15
#iscsiadm -m discovery -t sendtargets -p <iscsi-target-1-ip>#iscsiadm -m discovery -t sendtargets -p <iscsi-target-2-ip>#iscsiadm -m node --login
/etc/iscsi/iscsid.conf:
node.startup = automatic
/var/lib/iscsi/send_targets/<TargetServer>,<Port>/st_config:
discovery.sendtargets.use_discoveryd = Yes
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 59G 0 disk
sdb 8:16 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdc 8:32 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdd 8:48 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sde 8:64 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
Примечание
iscsiadm:
# iscsiadm -m node --logout
# iscsiadm -m node --targetname "iscsi-target-1.test.alt:server.target1" --logout
# iscsiadm -m node -R
# iscsiadm -m session
# apt-get install multipath-tools
И запущена служба multipathd:
# systemctl enable --now multipathd && sleep 5; systemctl status multipathd
Примечание
multipath используется для обнаружения и объединения нескольких путей к устройствам.
multipath:
-l — показать текущую multipath-топологию, полученную из sysfs и устройства сопоставления устройств;
-ll — показать текущую multipath-топологию, собранную из sysfs, устройства сопоставления устройств и всех других доступных компонентов системы;
-f device — удалить указанное multipath-устройство;
-F — удалить все неиспользуемые multipath-устройства;
-w device — удалить WWID указанного устройства из файла wwids;
-W — сбросить файл wwids, чтобы включить только текущие многопутевые устройства;
-r — принудительная перезагрузка multipath-устройства.
# multipath -ll
mpatha (3600c0ff00014f56ee9f3cf6301000000) dm-0 HP,P2000 G3 FC
size=931G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 1:0:0:1 sdb 8:16 active ready running
| `- 16:0:1:1 sde 8:64 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 1:0:1:1 sdc 8:32 active ready running
`- 16:0:0:1 sdd 8:48 active ready running
# multipath -v3
/etc/multipath.conf:
defaults {
find_multipaths yes
user_friendly_names yes
}
user_friendly_names установлено значение no, то для имени multipath-устройства задается значение World Wide Identifier (WWID). Имя устройства будет /dev/mapper/WWID и /dev/dm-X:
#Если для параметраls /dev/mapper/3600c0ff00014f56ee9f3cf6301000000 #lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 59G 0 disk sdb 8:16 0 931,3G 0 disk └─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath sdc 8:32 0 931,3G 0 disk └─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath sdd 8:48 0 931,3G 0 disk └─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath sde 8:64 0 931,3G 0 disk └─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath
user_friendly_names установлено значение yes, то для имени multipath-устройства задаётся алиас (псевдоним), в форме mpathХ. Имя устройства будет /dev/mapper/mpathХ и /dev/dm-X:
#Однако не гарантируется, что имя устройства будет одинаковым на всех узлах, использующих это multipath-устройство.ls /dev/mapper/mpatha #lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 59G 0 disk sdb 8:16 0 931,3G 0 disk └─mpatha 253:0 0 931,3G 0 mpath sdc 8:32 0 931,3G 0 disk └─mpatha 253:0 0 931,3G 0 mpath sdd 8:48 0 931,3G 0 disk └─mpatha 253:0 0 931,3G 0 mpath sde 8:64 0 931,3G 0 disk └─mpatha 253:0 0 931,3G 0 mpath
/dev/mapper/mpatha). Для этого в файл /etc/multipath.conf добавить секции:
blacklist {
wwid .*
}
blacklist_exceptions {
wwid "3600c0ff00014f56ee9f3cf6301000000"
}
Данная настройка предписывает внести в черный список любые найденные устройства хранения данных, за исключением нужного.
multipaths {
multipath {
wwid "3600c0ff00014f56ee9f3cf6301000000"
alias mpatha
}
}
В этом случае устройство всегда будет доступно только по имени /dev/mapper/mpatha. Вместо mpatha можно вписать любое желаемое имя устройства.
Примечание
# /lib/udev/scsi_id -g -u -d /dev/sdb
3600c0ff00014f56ee9f3cf6301000000
Для устройств в одном multipath WWID будут совпадать.
/etc/multipath.conf может также потребоваться внести рекомендованные производителем СХД параметры.
/etc/multipath.conf необходимо перезапустить службу multipathd для активации настроек:
# systemctl restart multipathd.service
Примечание
/etc/multipath.conf на наличие ошибок можно, выполнив команду:
# multipath -t

Примечание
Примечание
/etc/lvm/lvm.conf, например:
filter = [ "a|/dev/mapper/|", "a|/dev/sda.*|", "r|.*|" ]В данном примере принимаются только multipath-устройства и
/dev/sda.*, все остальные устройства отклоняются:
/dev/mapper;
/dev/sda;
# fdisk -l /dev/mapper/mpatha
Disk /dev/mapper/mpatha: 931.32 GiB, 999999995904 bytes, 1953124992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 1048576 bytes
Disklabel type: dos
Disk identifier: 0x2221951e
Device Boot Start End Sectors Size Id Type
/dev/mapper/mpatha-part1 2048 1953124991 1953122944 931.3G 83 Linux
# pvcreate /dev/mapper/mpatha-part1
Physical volume "/dev/mapper/mpatha-part1" successfully created.
# vgcreate VG1 /dev/mapper/mpatha-part1
Volume group "VG1" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/mpatha-part1 VG1 lvm2 a-- 931.32g 931.32g
# pvesm lvmscan
VG1

# pvesm add lvm mpath-lvm --vgname VG1 --content images,rootdir

# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/mpatha-part1 VG1 lvm2 a-- 931.32g 931.32g
# vgs
VG #PV #LV #SN Attr VSize VFree
VG1 1 0 0 wz--n- 931.32g 931.32g
# lvcreate -L 100G -T -n vmstore VG1
Logical volume "vmstore" created.
# pvesm lvmthinscan VG1
vmstore

# pvesm add lvmthin mpath-lvmthin --thinpool vmstore --vgname VG1 --nodes pve01

# multipath -l
mpatha (3600c0ff00014f56ee9f3cf6301000000) dm-0 HP,P2000 G3 FC
size=465G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| |- 1:0:1:1 sdc 8:32 active undef running
| `- 16:0:1:1 sde 8:64 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
|- 1:0:0:1 sdb 8:16 active undef running
`- 16:0:0:1 sdd 8:48 active undef running
# echo 1 > /sys/block/<path_device>/device/rescan
#echo 1 > /sys/block/sdb/device/rescan#echo 1 > /sys/block/sdc/device/rescan#echo 1 > /sys/block/sdd/device/rescan#echo 1 > /sys/block/sde/device/rescan
# dmesg -wHT

# multipathd -k"resize map 3600c0ff00014f56ee9f3cf6301000000"
где 3600c0ff00014f56ee9f3cf6301000000 — WWID multipath-устройства;
# pvresize /dev/mapper/mpatha
# resize2fs /dev/mapper/mpatha
Примечание
pveceph — инструмент для установки и управления службами Ceph на узлах PVE.
ls, find и т.д.) без создания избыточной нагрузки на кластер хранения.
Таблица 26.4. Системные требования к оборудованию для Ceph
|
Процесс
|
Критерий
|
Требования
|
|---|---|---|
|
Монитор Ceph
|
Процессор
|
2 ядра минимум, 4 рекомендуется
|
|
ОЗУ
|
5ГБ+ (большим/производственным кластерам нужно больше)
|
|
|
Жёсткий диск
|
100 ГБ на демон, рекомендуется SSD
|
|
|
Сеть
|
1 Гбит/с (рекомендуется 10+ Гбит/с)
|
|
|
Менеджер Ceph
|
Процессор
|
1 ядро
|
|
ОЗУ
|
1 ГБ
|
|
|
OSD Ceph
|
Процессор
|
|
|
ОЗУ
|
|
|
|
Жёсткий диск
|
1 SSD накопитель на демон
|
|
|
Сеть
|
1 Гбит/с (рекомендуется агрегированная сеть 10+ Гбит/с)
|
|
|
Сервер метаданных Ceph
|
Процессор
|
2 ядра
|
|
ОЗУ
|
2 ГБ+ (для производственных кластеров больше)
|
|
|
Жёсткий диск
|
1 ГБ на демон, рекомендуется SSD
|
|
|
Сеть
|
1 Гбит/с (рекомендуется 10+ Гбит/с)
|
|
Важно
Примечание


Примечание

# pveceph init --network 192.168.0.0/24
/etc/pve/ceph.conf с выделенной сетью для Ceph. Этот файл автоматически распространяется на все узлы PVE с помощью pmxcfs. Будет также создана символическая ссылка /etc/ceph/ceph.conf, указывающая на основной файл конфигурации, что позволяет выполнять команды Ceph без явного указания пути к конфигурации.
Примечание

# pveceph mon create
# pveceph mon destroy <mon_id>
Примечание
Примечание


# pveceph mgr create
# pveceph mgr destroy <mgr_id>
# ceph-volume lvm zap /dev/[X] --destroy
Предупреждение

# pveceph osd create /dev/[X]
-db_dev и -wal_dev:
# pveceph osd create /dev/[X] -db_dev /dev/[Y] -wal_dev /dev/[Z]
Если устройство для WAL не указано, журнал размещается вместе с DB.
-db_size и -wal_size. Если параметры не заданы, используются следующие значения (в указанном порядке):
Примечание

# ceph osd df tree
Пример вывода:
ID CLASS WEIGHT REWEIGHT AVAIL %USE VAR PGS STATUS TYPE NAME
-1 0.40585 - 415 GiB 0.07 1.00 - root default
-7 0.11279 - 115 GiB 0.06 0.91 - host pve01
3 ssd 0.11279 1.00000 115 GiB 0.06 0.91 65 up osd.3
-3 0.19537 - 200 GiB 0.07 1.03 - host pve02
0 ssd 0.09769 1.00000 100 GiB 0.08 1.11 31 up osd.0
2 ssd 0.09769 1.00000 100 GiB 0.06 0.94 34 up osd.2
-5 0.09769 - 100 GiB 0.07 1.05 - host pve03
1 ssd 0.09769 1.00000 100 GiB 0.07 1.05 65 up osd.1
TOTAL 415 GiB 0.07
MIN/MAX VAR: 0.91/1.11 STDDEV: 0.01
Примечание




# ceph osd out <ID>
Эта команда указывает Ceph не включать OSD в распределение данных.
# ceph osd ok-to-stop <ID>
# systemctl stop ceph-osd@<ID>.service
До этого момента данные не теряются.
# pveceph osd destroy <ID> [--cleanup]
Параметр --cleanup уничтожает таблицу разделов на диске.
Предупреждение
#ceph osd out 2marked out osd.2. #ceph osd ok-to-stop 2{"ok_to_stop":true,"osds":[2],"num_ok_pgs":0,"num_not_ok_pgs":0} #systemctl stop ceph-osd@2.service#pveceph osd destroy 2 --cleanupdestroy OSD osd.2 Remove osd.2 from the CRUSH map Remove the osd.2 authentication key. Remove OSD osd.2 …

pveceph pool create):
-size) — количество реплик на объект. Ceph всегда пытается поддерживать указанное количество копий каждого объекта (по умолчанию 3);
warn выводится предупреждение, если количество PG в пуле неоптимально (по умолчанию on);
-add_storages) — автоматическое создание хранилища. Доступно только при создании пула (по умолчанию true);
-min_size) — минимальное количество реплик, необходимое для записи. Ceph отклонит операции ввода-вывода, если в PG доступно меньше реплик, чем указано (по умолчанию 2);
-crush_rule) — правило размещения данных в кластере;
-pg_num) — начальное количество групп размещения (по умолчанию 128);
-target_size_ratio) — доля пула в общем объёме кластера. Автомасштабирование PG использует это соотношение относительно других пулов. Параметр имеет приоритет над целевым размером, если заданы оба;
-target_size) — ожидаемый объём данных пула (используется для автомасштабирования);
-pg_num_min) — минимальное число PG при автомасштабировании. Используется для задания нижней границы количества PG; autoscaler не будет объединять PG ниже этого значения.
Примечание
min_size=1, так как это приведёт к потере данных при отказе одного OSD.
# pveceph pool create <pool-name> -add_storages
size), тогда как в пулах EC данные разбиваются на k фрагментов данных и m фрагментов кодирования (проверки). Фрагменты кодирования используются для восстановления данных при утрате фрагментов данных.
m определяет, сколько OSD может выйти из строя без потери данных. Общее количество хранимых объектов равно k + m.
pveceph. При их планировании следует учитывать, что они работают иначе, чем реплицированные пулы.
min_size для EC-пула зависит от параметра m:
m = 1, min_size = k;
m > 1, min_size = k + 1.
min_size = k + 2.
min_size, все операции ввода-вывода в пуле будут заблокированы до восстановления достаточного количества доступных OSD.
Примечание
min_size, так как он определяет минимальное число доступных OSD, необходимое для работы пула.
k = 2, m = 1 → size = 3, min_size = 2 (выдерживает 1 отказ);
k = 2, m = 2 → size = 4, min_size = 3 (выдерживает 2 отказа).
# pveceph pool create <pool-name> --erasure-coding k=<integer> ,m=<integer> \
[,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]
--add_storages 0. При ручной настройке хранилища необходимо задать параметр data-pool, чтобы EC-пул использовался для хранения.
Примечание
--size, --min_size и --crush_rule применяются только к пулу метаданных. Параметры size и crush_rule нельзя изменить для EC-пулов. Значение min_size для пула данных можно изменить после создания.
profile, например:
# pveceph pool create <pool-name> --erasure-coding profile=<profile-name>
# pvesm add rbd <storage-name> --pool <replicated-pool> --data-pool <ec-pool>
Примечание
keyring и monhost.

# pveceph pool destroy <name>
-cleanup, чтобы дополнительно уничтожить таблицу разделов):
# pveceph osd destroy <ID>
Чтобы также удалить связанное хранилище, следует указать параметр -remove_storages.
Примечание
Примечание
# ceph mgr module enable pg_autoscaler
Список загруженных модулей:
# ceph mgr module ls
warn — выводится предупреждение, если предлагаемое значение pg_num значительно отличается от текущего;
on — pg_num настраивается автоматически без ручного вмешательства;
off — автоматическая корректировка pg_num отключена, предупреждения не выводятся.
target_size, target_size_ratio и pg_num_min.
# ceph osd pool set <pool> pg_autoscale_mode on

# ceph osd crush tree --show-shadow
ID CLASS WEIGHT TYPE NAME
-6 nvme 0.09760 root default~nvme
-5 nvme 0 host pve01~nvme
-9 nvme 0.04880 host pve02~nvme
1 nvme 0.04880 osd.1
-12 nvme 0.04880 host pve03~nvme
2 nvme 0.04880 osd.2
-2 ssd 0.04880 root default~ssd
-4 ssd 0.04880 host pve01~ssd
0 ssd 0.04880 osd.0
-8 ssd 0 host pve02~ssd
-11 ssd 0 host pve03~ssd
-1 0.14639 root default
-3 0.04880 host pve01
0 ssd 0.04880 osd.0
-7 0.04880 host pve02
1 nvme 0.04880 osd.1
-10 0.04880 host pve03
2 nvme 0.04880 osd.2
# ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
Где:
rule-name — имя правила;
root — корень дерева (значение default — корень Ceph);
failure-domain — домен отказа, на котором должны распределяться объекты (как правило, host);
class — класс устройств (например, nvme, ssd).
# ceph osd crush rule create-replicated my_rule default host nvme
# ceph osd crush rule dump
# ceph osd pool set <pool-name> crush_rule <rule-name>
Примечание
/etc/pve/priv/ceph/<storage_id>.keyring.
Примечание
hotstandby при создании сервера либо, после его создания, установи в соответствующем разделе MDS файла /etc/pve/ceph.conf параметр:
mds standby replay = trueЕсли этот параметр включён, указанный MDS будет находиться в состоянии warm standby, опрашивая активный сервер, что позволяет быстрее принять управление в случае сбоя.
Примечание

# pveceph mds create

# pveceph fs create --pg_num 128 --add-storage

Примечание
--add-storage (опция Добавить как хранилище) автоматически добавляет CephFS в конфигурацию хранилищ PVE.
Предупреждение
# umount /mnt/pve/<STORAGE-NAME>
где <STORAGE-NAME> — имя хранилища CephFS в PVE.
#pveceph stop --service mds.NAME#pveceph mds destroy NAME
# pveceph fs destroy NAME --remove-storages --remove-pools
Примечание
size=3, min_size=2) для восстановления требуется минимум 4 (домен отказа — хост).
# ceph osd out osd.<id>
# ceph osd safe-to-destroy osd.<id>
#systemctl stop ceph-osd@<id>.service#pveceph osd destroy <id>
#systemctl stop ceph-osd@<id>.service#pveceph osd destroy <id>
# ceph crash archive-all
fstrim (discard) на ВМ и контейнерах. Это освобождает блоки данных, которые файловая система больше не использует, снижая нагрузку на ресурсы хранения.
Примечание
osd scrub begin hour = 2 osd scrub end hour = 6
#watch ceph -s# постоянный мониторинг (обновление каждые 2 сек) #ceph --watch# однократный вывод + поток событий
Примечание
# journalctl --since "2 days ago"
или в веб-интерфейсе: → ;
# ceph crash ls
# ceph crash info <ID_аварии>
# ceph crash archive-all
/var/log/ceph/. Уровень детализации журналов можно настроить в конфигурации Ceph.
Таблица 26.5. Возможные причины проблем
|
Категория
|
Примеры
|
|---|---|
|
Сетевые проблемы
|
Перегрузка сети, неисправный коммутатор, отключённый интерфейс, блокировка брандмауэром
|
|
Проблемы с дисками
|
Неисправные диски, ненадёжное подключение, недостаточная производительность (HDD, потребительские контроллеры)
|
|
Несоответствие рекомендациям
|
Нарушение требований к оборудованию или конфигурации Ceph
|
# ceph-volume lvm activate --all
Примечание
# ceph -s
noout, чтобы избежать ненужных операций восстановления при остановке и последующем запуске кластера:
# ceph osd set noout
Также флаг можно включить через веб-интерфейс ( → → ):

noout.
noout:
# ceph osd unset noout
Или через веб-интерфейс ( → → ).
pvesr.
Примечание
pvesr.


# pvesr create-local-job 214-0 pve03 --schedule "*/10" --rate 10
# pvesr disable 214-0
# pvesr list
JobID Target Schedule Rate Enabled
213-0 local/pve02 */1:00 - yes
214-0 local/pve03 */10 10 no
# pvesr status
JobID Enabled Target LastSync NextSync Duration FailCount State
213-0 Yes local/pve02 2025-02-26_10:10:48 2025-02-26_11:00:00 2.455654 0 OK
# pvesr enable 214-0
# pvesr update 214-0 --schedule '*/1:00'
Примечание
# pvecm status
# pvecm expected 1
Примечание
#mv /etc/pve/nodes/pve02/qemu-server/100.conf /etc/pve/nodes/pve03/qemu-server/100.conf#mv /etc/pve/nodes/pve02/lxc/200.conf /etc/pve/nodes/pve03/lxc/200.conf
#qm start 100#pct start 200
Примечание
#apt-get install ifupdown2#systemctl disable network#systemctl mask network#systemctl enable networking.service#reboot
/etc/network/interfaces, который содержит всю конфигурацию сети.

Примечание
/etc/network/interfaces см. в man interfaces(5)
Примечание
/etc/network/interfaces. Изменения сначала записываются во временный файл (/etc/network/interfaces.new), что позволяет сделать несколько связанных изменений одновременно. Это также позволяет убедиться, что изменения сделаны верно, так как неправильная конфигурация сети может сделать узел недоступным.
interfaces.new будут перенесены в файл /etc/network/interfaces и применены в реальном времени.
/etc/network/interfaces, применить их можно, выполнив команду:
# ifreload -a
systemd pvenetcommit активирует файл interfaces.new до того, как сетевая служба применит эту конфигурацию.
en для сетевых устройств Ethernet. Следующие символы зависят от драйвера устройства и того факта, какая схема подходит первой:

ovs_ports;

/etc/network/interfaces может выглядеть следующим образом:
auto lo
iface lo inet loopback
iface eno1 inet manual
iface enp0s20f0u1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.0.186/24
gateway 192.168.0.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
dns-nameservers 8.8.8.8



Примечание

Таблица 28.1. Режимы агрегации Linux Bond
|
Режим
|
Название
|
Описание
|
Отказоустойчивость
|
Балансировка нагрузки
|
|---|---|---|---|---|
|
balance-rr или mode=0
|
Round-robin
|
Режим циклического выбора активного интерфейса для трафика. Пакеты последовательно передаются и принимаются через каждый интерфейс один за другим. Данный режим не требует применения специальных коммутаторов.
|
Да
|
Да
|
|
active-backup или mode=1
|
Active Backup
|
В этом режиме активен только один интерфейс, остальные находятся в режиме горячей замены. Если активный интерфейс выходит из строя, его заменяет резервный. MAC-адрес интерфейса виден извне только на одном сетевом адаптере, что предотвращает путаницу в сетевом коммутаторе. Это самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов.
|
Да
|
Нет
|
|
balance-xor или mode=2
|
XOR
|
Один и тот же интерфейс работает с определённым получателем. Передача пакетов распределяется между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Режим не требует применения специальных коммутаторов. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость.
|
Да
|
Да
|
|
broadcast или mode=3
|
Широковещательный
|
Трафик идёт через все интерфейсы одновременно.
|
Да
|
Нет
|
|
LACP (802.3ad) или mode=4
|
Агрегирование каналов по стандарту IEEE 802.3ad
|
В группу объединяются одинаковые по скорости и режиму интерфейсы. Все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки).
|
Да
|
Да
|
|
balance-tlb или mode=5
|
Адаптивная балансировка нагрузки при передаче
|
Исходящий трафик распределяется в соответствии с текущей нагрузкой (с учетом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт). Входящие пакеты принимаются только активным сетевым интерфейсом.
|
Да
|
Да (исходящий трафик)
|
|
balance-alb или mode=6
|
Адаптивная балансировка нагрузки
|
Включает в себя балансировку исходящего трафика, плюс балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов (балансировка на приём достигается на уровне протокола ARP, перехватом ARP ответов локальной системы и перезаписью физического адреса на адрес одного из сетевых интерфейсов, в зависимости от загрузки).
|
Да
|
Да
|
xmit_hash_policy).
Таблица 28.2. Режимы выбора каналов при организации балансировки нагрузки
|
Режим
|
Описание
|
|---|---|
|
layer2
|
Канал для отправки пакета однозначно определяется комбинацией MAC-адреса источника и MAC-адреса назначения. Весь трафик между определённой парой узлов всегда идёт по определённому каналу. Алгоритм совместим с IEEE 802.3ad. Этот режим используется по умолчанию.
|
|
layer2+3
|
Канал для отправки пакета определяется по совокупности MAC- и IP-адресов источника и назначения. Трафик между определённой парой IP-хостов всегда идёт по определённому каналу (обеспечивается более равномерная балансировка трафика, особенно в случае, когда большая его часть передаётся через промежуточные маршрутизаторы). Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм совместим с IEEE 802.3ad.
|
|
layer3+4
|
Канал для отправки пакета определяется по совокупности IP-адресов и номеров портов источника и назначения (трафик определённого узла может распределяться между несколькими каналами, но пакеты одного и того же TCP/UDP-соединения всегда передаются по одному и тому же каналу). Для фрагментированных пакетов TCP и UDP, а также для всех прочих протоколов 4 уровня, учитываются только IP-адреса. Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм не полностью совместим с IEEE 802.3ad.
|
Таблица 28.3. Параметры OVS Bond
|
Параметр
|
Описание
|
|---|---|
|
bond_mode=active-backup
|
В этом режиме активен только один интерфейс, остальные находятся в режиме горячей замены. Если активный интерфейс выходит из строя, его заменяет резервный. MAC-адрес интерфейса виден извне только на одном сетевом адаптере, что предотвращает путаницу в сетевом коммутаторе. Это самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов.
|
|
bond_mode=balance-slb
|
Режим простой балансировки на основе MAC и VLAN. В этом режиме нагрузка трафика на интерфейсы постоянно измеряется, и если один из интерфейсов сильно загружен, часть трафика перемещается на менее загруженные интерфейсы. Параметр
bond-rebalance-interval определяет, как часто OVS должен выполнять измерение нагрузки трафика (по умолчанию 10 секунд). Этот режим не требует какой-либо специальной настройки на коммутаторах.
|
|
bond_mode=balance-tcp
|
Этот режим выполняет балансировку нагрузки, принимая во внимание данные уровней 2-4 (например, MAC-адрес, IP -адрес и порт TCP). На коммутаторе должен быть настроен LACP. Этот режим похож на режим mode=4 Linux Bond. Всегда, когда это возможно, рекомендуется использовать этот режим
|
|
lacp=[active|passive|off]
|
Управляет поведением протокола управления агрегацией каналов (LACP). На коммутаторе должен быть настроен протокол LACP. Если коммутатор не поддерживает LACP, необходимо использовать
bond_mode=balance-slb или bond_mode=active-backup.
|
|
other-config:lacp-fallback-ab=true
|
Устанавливает поведение LACP для переключения на
bond_mode=active-backup в качестве запасного варианта
|
|
other_config:lacp-time=[fast|slow]
|
Определяет, с каким интервалом управляющие пакеты LACPDU отправляются по каналу LACP: каждую секунду (fast) или каждые 30 секунд (slow). По умолчанию slow
|
|
other_config:bond-detect-mode=[miimon|carrier]
|
Режим определения состояния канала. По умолчанию carrier
|
|
other_config:bond-miimon-interval=100
|
Устанавливает периодичность MII мониторинга в миллисекундах
|
|
other_config:bond_updelay=1000
|
Задает время задержки в миллисекундах, перед тем как поднять линк при обнаружении восстановления канала
|
|
other_config:bond-rebalance-interval=10000
|
Устанавливает периодичность выполнения измерения нагрузки трафика в миллисекундах (по умолчанию 10 секунд).
|



Примечание

/etc/network/interfaces:
auto lo
iface lo inet loopback
iface enp0s3 inet manual
auto enp0s9
iface enp0s9 inet manual
auto enp0s8
iface enp0s8 inet manual
auto bond0
iface bond0 inet static
address 192.168.200.20/24
bond-slaves enp0s8 enp0s9
bond-miimon 100
bond-mode balance-rr
auto vmbr0
iface vmbr0 inet static
address 192.168.0.90/24
gateway 192.168.0.1
bridge-ports enp0s3
bridge-stp off
bridge-fd 0
dns-nameservers 8.8.8.8




Примечание
bond0 и нажать кнопку :


/etc/network/interfaces:
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet manual
auto enp0s9
iface enp0s9 inet manual
auto enp0s8
iface enp0s8 inet manual
auto bond0
iface bond0 inet manual
bond-slaves enp0s3 enp0s8
bond-miimon 100
bond-mode 802.3ad
bond-xmit-hash-policy layer2+3
auto vmbr0
iface vmbr0 inet static
address 192.168.0.90/24
gateway 192.168.0.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
dns-nameservers 8.8.8.8




/etc/network/interfaces:
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet manual
auto enp0s9
iface enp0s9 inet manual
auto enp0s8
iface enp0s8 inet manual
auto bond0
iface bond0 inet manual
ovs_bonds enp0s3 enp0s8
ovs_type OVSBond
ovs_bridge vmbr0
ovs_options bond_mode=balance-slb
auto vmbr0
iface vmbr0 inet static
address 192.168.0.90/24
gateway 192.168.0.1
ovs_type OVSBridge
ovs_ports bond0
# ovs-vsctl show
20dc0ada-cbb5-4518-a437-0bd6909d088a
Bridge vmbr0
Port vmbr0
Interface vmbr0
type: internal
Port bond0
Interface enp0s3
Interface enp0s8
ovs_version: "3.3.2"
Примечание
Trunk выставляется на это новом интерфейсе.







/etc/network/interfaces:
auto lo
iface lo inet loopback
iface enp0s3 inet manual
auto enp0s9
iface enp0s9 inet manual
iface enp0s8 inet manual
auto enp0s8.100
iface enp0s8.100 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.0.90/24
gateway 192.168.0.1
bridge-ports enp0s3
bridge-stp off
bridge-fd 0
dns-nameservers 8.8.8.8
auto vmbr1
iface vmbr1 inet static
address 10.10.10.2/24
bridge-ports enp0s8.100
bridge-stp off
bridge-fd 0



Примечание

# pveam update


# pveam update
update successful
# pveam available
mail proxmox-mail-gateway-8.2-standard_8.2-1_amd64.tar.zst
mail proxmox-mail-gateway-9.0-standard_9.0-1_amd64.tar.zst
system almalinux-10-default_20250930_amd64.tar.xz
system almalinux-9-default_20240911_amd64.tar.xz
system alpine-3.22-default_20250617_amd64.tar.xz
…
Примечание
pveam available, указав нужный раздел, например, базовые образы системы:
# pveam available --section system
system almalinux-10-default_20250930_amd64.tar.xz
system almalinux-9-default_20240911_amd64.tar.xz
system alpine-3.22-default_20250617_amd64.tar.xz
system centos-9-stream-default_20240828_amd64.tar.xz
system debian-12-standard_12.12-1_amd64.tar.zst
…
# pveam download local almalinux-9-default_20240911_amd64.tar.xz
# pveam list local
NAME SIZE
local:vztmpl/almalinux-9-default_20240911_amd64.tar.xz 99.60MB
Таблица 29.1. Каталоги локального хранилища
|
Каталог
|
Тип шаблона
|
|---|---|
/var/lib/vz/template/iso/
|
ISO-образы
|
/var/lib/vz/template/cache/
|
Шаблоны контейнеров LXC
|
Таблица 29.2. Каталоги общих хранилищ
|
Каталог
|
Тип шаблона
|
|---|---|
/mnt/pve/<storage_name>/template/iso/
|
ISO-образы
|
/mnt/pve/<storage_name>/template/cache/
|
Шаблоны контейнеров LXC
|
qm

Примечание




Примечание




Примечание









# qm set <vmid> -onboot 1

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


qmqm — это инструмент для управления ВМ на базе Qemu/KVM в PVE. С её помощью можно:
qm <КОМАНДА> [АРГУМЕНТЫ] [ОПЦИИ]Получить список доступных команд можно, выполнив команду:
# qm help
qm.
Таблица 30.1. Команды qm
|
Команда
|
Описание
|
|---|---|
qm agent
|
Псевдоним для
qm guest cmd
|
qm block <vmid>
|
Заблокировать ВМ.
|
qm cleanup <vmid> <clean-shutdown> <guest-requested>
|
Очищает ресурсы, такие как сенсорные устройства, vgpu и т.д. Вызывается после выключения, сбоя ВМ и т. д.
|
qm clone <vmid> <newid> [ОПЦИИ]
|
Создать копию ВМ/шаблона.
|
qm cloudinit dump <vmid> <type>
|
Получить автоматически сгенерированную конфигурацию cloud-init.
|
qm cloudinit pending <vmid>
|
Получить конфигурацию cloud-init с текущими и ожидающими значениями.
|
qm cloudinit update <vmid>
|
Восстановить и изменить диск конфигурации cloud-init.
|
qm config <vmid> <ОПЦИИ>
|
Вывести конфигурацию ВМ с применёнными ожидающими изменениями конфигурации. Для вывода текущей конфигурации следует указать параметр
current.
|
qm create <vmid> <ОПЦИИ>
|
Создать или восстановить ВМ.
Некоторые опции:
|
qm delsnapshot <vmid> <snapname> <ОПЦИИ>
|
Удалить снимок ВМ.
|
qm destroy <vmid> [ОПЦИИ]
|
Уничтожить ВМ и все её тома (будут удалены все разрешения, специфичные для ВМ).
|
qm disk import <vmid> <source> <storage> [ОПЦИИ]
|
Импортировать образ внешнего диска в неиспользуемый диск ВМ. Формат образа должен поддерживаться qemu-img.
|
qm disk move <vmid> <disk> <storage> [ОПЦИИ]
|
Переместить том в другое хранилище или в другую ВМ.
|
qm disk rescan [ОПЦИИ]
|
Пересканировать все хранилища и обновить размеры дисков и неиспользуемые образы дисков.
|
qm disk resize <vmid> <disk> <size> [ОПЦИИ]
|
Увеличить размер диска.
|
qm disk unlink <vmid> --idlist <строка> [ОПЦИИ]
|
Отсоединить/удалить образы дисков.
|
qm guest cmd <vmid> <команда>
|
Выполнить команды гостевого агента QEMU.
|
qm guest exec <vmid> [<extra-args>] [ОПЦИИ]
|
Выполнить данную команду через гостевой агент.
|
qm guest exec-status <vmid> <pid>
|
Получить статус данного pid, запущенного гостевым агентом.
|
qm guest passwd <vmid> <username> [ОПЦИИ]
|
Установить пароль для данного пользователя.
|
qm help [extra-args] [ОПЦИИ]
|
Показать справку по указанной команде.
|
qm importdisk
|
Псевдоним для
qm disk import.
|
qm importovf <vmid> <manifest> <storage> [ОПЦИИ]
|
Создать новую ВМ, используя параметры, считанные из манифеста OVF.
|
qm list [ОПЦИИ]
|
Вывести список ВМ узла.
|
qm listsnapshot <vmid>
|
Вывести список снимков ВМ.
|
qm migrate <vmid> <target> [ОПЦИИ]
|
Перенос ВМ. Создаёт новую задачу миграции.
|
qm monitor <vmid>
|
Войти в интерфейс монитора QEMU.
|
qm move-disk
|
Псевдоним для
qm disk move.
|
qm move_disk
|
Псевдоним для
qm disk move.
|
qm nbdstop <vmid>
|
Остановить встроенный сервер NBD.
|
qm pending <vmid>
|
Получить конфигурацию ВМ с текущими и ожидающими значениями.
|
qm reboot <vmid> [ОПЦИИ]
|
Перезагрузить ВМ. Применяет ожидающие изменения.
|
qm remote-migrate <vmid> [<target-vmid>] <target-endpoint> --target-bridge <строка> --target-storage <строка> [ОПЦИИ]
|
Перенос ВМ в удалённый кластер. Создаёт новую задачу миграции. ЭКСПЕРИМЕНТАЛЬНАЯ функция!
|
qm rescan
|
Псевдоним для
qm disk rescan.
|
qm reset <vmid> [ОПЦИИ]
|
Сбросить ВМ.
|
qm resize
|
Псевдоним для
qm disk resize.
|
qm resume <vmid> [ОПЦИИ]
|
Возобновить работу ВМ.
|
qm rollback <vmid> <snapname> [ОПЦИИ]
|
Откат состояния ВМ до указанного снимка.
|
qm sendkey <vmid> <ключ> [ОПЦИИ]
|
Послать нажатия клавиш на ВМ.
|
qm set <vmid> [ОПЦИИ]
|
Установить параметры ВМ.
Некоторые опции:
|
qm showcmd <vmid> [ОПЦИИ]
|
Показать командную строку, которая используется для запуска ВМ (информация для отладки).
|
qm shutdown <vmid> [ОПЦИИ]
|
Выключение ВМ (эмуляция нажатия кнопки питания). Гостевой ОС будет отправлено событие ACPI.
|
qm snapshot <vmid> <snapname> [ОПЦИИ]
|
Сделать снимок ВМ.
|
qm start <vmid> [ОПЦИИ]
|
Запустить ВМ.
|
qm status <vmid> [ОПЦИИ]
|
Показать статус ВМ.
|
qm stop <vmid> [ОПЦИИ]
|
Остановка ВМ (аналогично отключению питания работающего компьютера). Процесс qemu немедленно завершается.
|
qm suspend <vmid> [ОПЦИИ]
|
Приостановить ВМ.
|
qm template <vmid> [ОПЦИИ]
|
Создать шаблон.
|
qm terminal <vmid> [ОПЦИИ]
|
Открыть терминал с помощью последовательного устройства (на ВМ должно быть настроено последовательное устройство, например, Serial0: Socket).
|
qm unlink
|
Псевдоним для
qm disk unlink.
|
qm unlock <vmid>
|
Разблокировать ВМ.
|
qm vncproxy <vmid>
|
Проксировать VNC-трафик ВМ на стандартный ввод/вывод.
|
qm wait <vmid> [ОПЦИИ]
|
Подождать, пока ВМ не будет остановлена.
|
qm:
# qm create 109 -ide0 local-lvm:21 -net0 e1000 -cdrom nfs-storage:iso/alt-server-11.0-x86_64.iso
# qm start 109
# qm shutdown 109 && qm wait 109
# qm sendkey 109 ctrl-shift
#qm monitor 109qm>help
Примечание
quit или последовательно нажать CTRL+O и CTRL+C.
/var/lib/vz/snippets) и добавить его к ВМ или контейнеру.
Примечание
hookscript:
#где <script_file> — исполняемый файл скрипта.qm set <vmid> --hookscript <storage>:snippets/<script_file>#pct set <vmid> --hookscript <storage>:snippets/<script_file>
# qm set 103 --hookscript snippet:snippets/guest-hookscript.pl
update VM 103: -hookscript snippet:snippets/guest-hookscript.pl
Примечание


guest-hookscript.pl):
#!/usr/bin/perl
# Example hookscript for PVE guests
use strict;
use warnings;
print "GUEST HOOK: " . join(' ', @ARGV). "\n";
# First argument is the vmid
my $vmid = shift;
# Second argument is the phase
my $phase = shift;
if ($phase eq 'pre-start') {
# Первый этап 'pre-start' будет выполнен до запуска ВМ
# Выход с code != 0 отменит старт ВМ
print "$vmid is starting, doing preparations.\n";
# print "preparations failed, aborting."
# exit(1);
} elsif ($phase eq 'post-start') {
# Второй этап 'post-start' будет выполнен после успешного
# запуска ВМ
system("/root/date.sh $vmid");
print "$vmid started successfully.\n";
} elsif ($phase eq 'pre-stop') {
# Третий этап 'pre-stop' будет выполнен до остановки ВМ через API
# Этап не будет выполнен, если ВМ остановлена изнутри,
# например, с помощью 'poweroff'
print "$vmid will be stopped.\n";
} elsif ($phase eq 'post-stop') {
# Последний этап 'post-stop' будет выполнен после остановки ВМ
# Этап должен быть выполнен даже в случае сбоя или неожиданной остановки ВМ
print "$vmid stopped. Doing cleanup.\n";
} else {
die "got unknown phase '$phase'\n";
}
exit(0);

#!/bin/bash if [ $2 == "pre-start" ] then echo "Запуск ВМ $1" >> /root/test.txt date >> /root/test.txt fi


args: -vnc 0.0.0.0:55Или, чтобы включить защиту паролем:
args: -vnc 0.0.0.0:55,password=on
set_password vnc newvnc -d vnc2
В данном примере, при подключении будет запрашиваться пароль: newvnc. Максимальная длина пароля VNC: 8 символов. После перезапуска ВМ указанную выше команду необходимо повторить, чтобы снова установить пароль.
Примечание

Примечание

qemu-img — утилита для манипулирования образами дисков машин QEMU. qemu-img позволяет выполнять операции по созданию образов различных форматов, конвертировать файлы-образы между этими форматами, получать информацию об образах и объединять снимки ВМ для тех форматов, которые это поддерживают.
qemu-img:
# qemu-img convert -f vmdk test.vmdk -O qcow2 test.qcow2
# qemu-img create -f raw test.raw 40G
# qemu-img resize -f raw test.raw 80G
# qemu-img info test.raw






# qm resize <vm_id> <virtual_disk> [+]<size>
Примечание
# qm resize 100 scsi1 80G

# qm move-disk <vm_id> <virtual_disk> <storage>

# qm move-disk <vm_id> <virtual_disk> --target-vmid <vm_id> --target-disk <virtual_disk>
# qm move-disk 107 scsi0 --target-vmid 10007 --target-disk scsi1

Примечание
Примечание
remote-viewer из пакета virt-viewer).

# qm set VMID -spice_enhancements foldersharing=1,videostreaming=all
Примечание
http://localhost:9843.
Примечание

Примечание
dav://localhost:9843/).




lsusb).

lsusb -t).
# qm set 100 --usb3 spice
update VM 100: -usb3 spice
# qm set 100 --usb4 host=346d:5678
update VM 100: -usb4 host=346d:5678
Примечание

Примечание
info usb и info usbhost:

Предупреждение


# qm set <vm_id> -efidisk0 <storage>:1,format=<format>,efitype=4m,pre-enrolled-keys=1
где:
efitype — указывает, какую версию микропрограммы OVMF следует использовать. Для новых ВМ необходимо указывать 4m (это значение по умолчанию в графическом интерфейсе);
pre-enroll-keys — указывает, должен ли efidisk поставляться с предварительно загруженными ключами безопасной загрузки для конкретного дистрибутива и Microsoft Standard Secure Boot. Включает безопасную загрузку по умолчанию.

# qm set <vm_id> -tpmstate0 <storage>:1,version=<version>
где:
Примечание
intel_iommu=on (для процессоров AMD он должен быть включен автоматически).
/etc/modules):
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
# dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
/etc/modprobe.d/vfio.conf строку:
options vfio-pci ids=1234:5678,4321:8765где 1234:5678 и 4321:8765 — идентификаторы поставщика и устройства.
# lspci -nn
/etc/modprobe.d/blacklist.conf:
blacklist DRIVERNAME

# qm set VMID -hostpci0 00:02.0
# qm set VMID -hostpci0 02:00,device-id=0x10f6,sub-vendor-id=0x0000



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


# pvesh create /cluster/mapping/<тип> <опции>
где <тип> — это тип оборудования (pci или usb), а <опции> — сопоставления устройств и другие параметры конфигурации.
# pvesh create /cluster/mapping/pci --id device \
--map node=pve01,path=0000:01:00.0,id=0002:0001 \
--map node=pve02,path=0000:02:00.0,id=0002:0001
Параметр map должен быть указан для каждого узла, для которого это устройство должно быть сопоставлено.
Примечание
# qm set <vmid> -hostpci0 <сопоставление>
# qm set <vmid> -usb0 <сопоставление>
Mapping.Modify на /mapping/<тип>/<сопоставление> (где <тип> — это тип устройства, <сопоставление> — название сопоставления). Для использования сопоставлений необходимо привилегия Mapping.Use на /mapping/<тип>/<сопоставление> (в дополнение к обычным привилегиям для редактирования конфигурации).
# apt-get install virtiofsd
Примечание


Примечание
, расположенную в строке с созданным сопоставлением:

# pvesh create /cluster/mapping/dir --id sharedir \
--map node=pve01,path=/mnt/share \
--map node=pve02,path=/backup/share \
--map node=pve03,path=/mnt/share


#qm set 100 --virtiofs1 dirid=sharedir,cache=auto,expose-acl=1#qm set 101 --virtiofs0 dirid=media,cache=always
# mount -t virtiofs <dirid> <точка монтирования>
Например:
# mount -t virtiofs sharedir /mnt/pve_share
<dirid> <точка монтирования> virtiofs rw,relatime 0 0
# apt-get install qemu-guest-agent
# systemctl enable --now qemu-guest-agent

# qm set <vmid> --agent 1
Для вступления изменений в силу необходим перезапуск ВМ.
trim гостевой системе после следующих операций, которые могут записать нули в хранилище:
/var/run/qemu-server/<my_vmid>.qga. Проверить связь с агентом можно с помощью команды:
# qm agent <vmid> ping
Если гостевой агент правильно настроен и запущен в ВМ, вывод команды будет пустой.
/etc/pve/qemu-server/<VMID>.conf). Как и другие файлы, находящиеся в /etc/pve/, они автоматически реплицируются на все другие узлы кластера.
Примечание
boot: order=scsi0;net0 cores: 1 cpu: x86-64-v2-AES efidisk0: local-lvm:vm-100-disk-2,efitype=4m,pre-enrolled-keys=1,size=4M memory: 2048 meta: creation-qemu=9.1.2,ctime=1746532273 name: NewVM net0: virtio=BC:24:11:40:5F:C3,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 scsi0: local-lvm:vm-100-disk-0,size=52G scsihw: virtio-scsi-single smbios1: uuid=cafd8016-03d3-4514-8d6f-5f4e353e5936 sockets: 1 spice_enhancements: foldersharing=1 unused0: local-lvm:vm-100-disk-1 unused1: newCIFS:100/vm-100-disk-0.qcow2 usb0: host=090c:1000 usb1: spice usb2: spice usb3: host=346d:5678 vga: qxl vmgenid: 31f7faef-4014-453b-ba8d-801e5634cc08
OPTION: value
qm для генерации и изменения этих файлов, либо выполнять такие действия в веб-интерфейсе.
boot: order=scsi0;net0 … parent: snapshot … vmgenid: 31f7faef-4014-453b-ba8d-801e5634cc08 [snapshot] boot: order=scsi0;net0 cores: 1 cpu: x86-64-v2-AES efidisk0: local-lvm:vm-100-disk-2,efitype=4m,pre-enrolled-keys=1,size=4M memory: 2048 meta: creation-qemu=9.1.2,ctime=1746532273 name: NewVM net0: virtio=BC:24:11:40:5F:C3,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 parent: first runningcpu: qemu64,+aes,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+pni,+popcnt,+sse4.1,+sse4.2,+ssse3 runningmachine: pc-i440fx-9.1+pve0 scsi0: local-lvm:vm-100-disk-0,size=52G scsihw: virtio-scsi-single smbios1: uuid=cafd8016-03d3-4514-8d6f-5f4e353e5936 snaptime: 1746609190 sockets: 1 spice_enhancements: foldersharing=1 usb0: host=090c:1000 usb1: spice usb2: spice usb3: host=346d:5678 vga: qxl vmgenid: 31f7faef-4014-453b-ba8d-801e5634cc08 vmstate: local-lvm:vm-100-state-snapshot
parent при этом используется для хранения родительских/дочерних отношений между снимками, а snaptime — это отметка времени создания снимка (эпоха Unix).

Примечание









pct для создания контейнера:
#!/bin/bash hostname="altLXC" vmid="108" template_path="/var/lib/vz/template/cache" storage="local" description="alt-p11" template="alt-p11-rootfs-systemd-x86_64.tar.xz" ip="192.168.0.94/24" nameserver="8.8.8.8" ram="1024" rootpw="password" rootfs="4" gateway="192.168.0.1" bridge="vmbr0" if="eth0" #### Execute pct create using variable substitution #### pct create $vmid \ $template_path/$template \ -description $description \ -rootfs $rootfs \ -hostname $hostname \ -memory $ram \ -nameserver $nameserver \ -storage $storage \ -password $rootpw \ -net0 name=$if,bridge=$bridge,gw=$gateway,ip=$ip





tty — открывать соединение с одним из доступных tty-устройств (по умолчанию);
shell — вызывать оболочку внутри контейнера (без входа в систему);
/dev/console — подключаться к /dev/console.

Примечание

pct — утилита управления контейнерами LXC в PVE. Чтобы просмотреть доступные для контейнеров команды PVE, можно выполнить следующую команду:
# pct help
# pct create <ct_id> <template> [options]
Пример:
# pct create 110 /var/lib/vz/template/cache/alt-p11-rootfs-systemd-x86_64.tar.xz
# pct set <ct_id> [options]
# pct set 105 -net0 name=eth0,bridge=vmbr0,ip=192.168.0.17/24,gw=192.168.0.1
# pct set <ct_id> -memory <int_value>
# pct set <ct_id> -rootfs <volume>,size=<int_value for GB>
Например, изменить размер диска контейнера #105 до 10 ГБ:
# pct set 105 -rootfs nfs-storage:105/vm-105-disk-0.raw,size=10G
# pct config <ct_id>
# pct unlock <ct_id>
# pct list
VMID Status Lock Name
105 running newLXC
106 stopped altLXC
#pct start <ct_id>#pct stop <ct_id>
# pct destroy <ct_id>
Если необходимо также удалить контейнер из заданий репликации, заданий резервного копирования и конфигураций ресурсов HA, следует использовать параметр --purge.
/etc/pve/lxc, а файлы конфигураций ВМ — в /etc/pve/qemu-server/.
pct. Эти параметры могут быть настроены только путём внесения изменений в файл конфигурации с последующим перезапуском контейнера.
/etc/pve/lxc/105.conf:
arch: amd64 cores: 1 features: nesting=1 hostname: newLXC memory: 512 net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.0.1,hwaddr=BC:24:11:A7:B5:AE,ip=192.168.0.230/24,type=veth ostype: altlinux rootfs: nfs-storage:105/vm-105-disk-0.raw,size=8G swap: 512 tty: 3 unprivileged: 1


# pct start 105
# pct stop 105


# pct enter <ct_id>
[root@pve03 ~]# pct enter 105
[root@newLXC ~]#
exit.
Предупреждение
Insecure $ENV{ENV} while running with...
необходимо в файле /root/.bashrc закомментировать строку:
ENV=$HOME/.bashrcи выполнить команду:
# unset ENV
# pct exec <ct_id> -- <command>
#pct exec 105 mkdir /home/demouser#pct exec 105 ls /homedemouser
pct, добавив -- после идентификатора контейнера:
# pct exec 105 -- df -H /
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/loop0 8,4G 516M 7,4G 7% /

/etc/pve/sdn, который совместно используется всеми узлами кластера через файловую систему PVE.
# pvesh set /cluster/sdn
Такая система позволяет развертывать различные изменения как единое атомарное.
.running-config и .version, расположенные в /etc/pve/sdn.
Таблица 32.1. Общие параметры зон
|
Свойство
|
Описание
|
|---|---|
|
nodes
|
Список узлов кластера, на которых должны быть развернуты зона и связанные с ней виртуальные сети
|
|
ipam
|
Инструмент управления IP-адресами (IPAM) для управления IP-адресами в зоне (по умолчанию — pve)
|
|
dns
|
Адрес API сервера DNS
|
|
ReverseDNS
|
Адрес API сервера обратного DNS
|
|
DNSZone
|
Имя DNS-домена. Используется для регистрации имен узлов, например <hostname>.<domain>. Зона DNS должна уже существовать на DNS-сервере
|
type simple) — базовый тип зоны, предназначенный для простого локального управления VNet, без использования VLAN, VXLAN, маршрутизации или оверлеев.
type vlan) — зона, в которой каждый виртуальный сегмент (VNet) соответствует определённому VLAN ID. Внутри зоны создаются VNet, указывающие, какие VLAN ID используются и через какие интерфейсы осуществляется маршрутизация. Плагин VLAN использует существующий локальный мост (Linux или OVS) для подключения к физическому интерфейсу узла.
Примечание
bridge — локальный мост с поддержкой VLAN, который уже настроен на каждом локальном узле.
type qinq) — расширение обычной VLAN-зоны, позволяющее использовать двойную VLAN-тегировку (802.1ad), то есть VLAN внутри VLAN. Зона QinQ определяет внешний VLAN-тег (сервисную VLAN, S-tag), тогда как внутренний тег (C-tag) определяется VNet.
Примечание
bridge — локальный мост с поддержкой VLAN, который уже настроен на каждом локальном узле;
tag — основной VLAN-тег этой зоны;
vlan-protocol — протокол сервисной VLAN: 802.1Q (по умолчанию) или 802.1ad;
mtu — из-за двойного стекирования тегов QinQ общий размер заголовка увеличивается на 4 байта. Например, если MTU физического интерфейса равен 1500, необходимо уменьшить MTU виртуальной сети до 1496.
type vxlan) — используются для создания оверлей-сетей, которые позволяют соединять ВМ на разных физических узлах через виртуальные сети (VNet), изолированные друг от друга. Это обеспечивает масштабируемость, гибкость и независимость от физической топологии. Плагин VXLAN инкапсулирует Ethernet-кадры уровня 2 в UDP-датаграммы уровня 4, используя порт назначения по умолчанию 4789.
Предупреждение
peers — список IP-адресов всех узлов кластера, участвующих в VXLAN-зоне. Может включать внешние узлы, доступные по указанным IP-адресам. Должен содержать все узлы кластера;
fabric — fabric для автоматического создания списка пиров;
mtu — поскольку инкапсуляция VXLAN использует 50 байт, MTU виртуальной сети должен быть на 50 байт меньше, чем MTU физического интерфейса.
type evpn) в PVE SDN позволяет реализовать распределённую L2-сеть поверх L3-инфраструктуры с использованием BGP EVPN как протокола маршрутизации. Данная зона подходит для крупных сетей и дата-центров с мультиузловой маршрутизацией.
vrf-vxlan — VXLAN-ID, используемый для выделенного маршрутного соединения между VNet (должен отличаться от VXLAN-ID VNet);
controller — контроллер EVPN;
mac — anycast MAC-адрес, который назначается всем VNet в этой зоне (если не определен, будет сгенерирован автоматически);
exitnodes — узлы, выступающие в роли шлюзов в реальную сеть. Настроенные узлы объявят маршрут по умолчанию в сети EVPN;
exitnodes-primary — если используется несколько выходных узлов, принудительно пропускать трафик через этот основной выходной узел вместо балансировки нагрузки между всеми узлами. Необязательно, но необходимо, если будет использоваться SNAT или если маршрутизатор не поддерживает ECMP;
exitnodes-local-routing — специальный параметр, если нужен доступ к ВМ/контейнеру из выходного узла (по умолчанию выходные узлы разрешают пересылку трафика только между реальной сетью и сетью EVPN);
advertise-subnets — объявлять полную подсеть в EVPN. Если в кластере есть «молчащие» ВМ/контейнеры (назначены IP-адреса, которые не проявляют активность) и anycast-шлюз не видит от них трафика, то такие IP могут быть недоступны из EVPN-сети. Данный параметр заставляет SDN явно объявить всю подсеть, независимо от активности;
disable-arp-nd-suppression — не подавлять пакеты ARP (Address Resolution Protocol) или ND (Neighbor Discovery). Необходимо, если в ВМ используются плавающие IP-адреса (IP и MAC-адреса перемещаются между системами);
rt-import — позволяет импортировать список внешних целей маршрута EVPN. Используется для межсетевых соединений DC или различных сетей EVPN;
mtu — поскольку инкапсуляция VXLAN использует 50 байт, MTU виртуальной сети должен быть на 50 байт меньше физического (по умолчанию 1450).
id — идентификатор виртуальной сети (до 8 символов);
alias — более описательный идентификатор (опционально). Назначается как псевдоним на интерфейсе;
zone — зона связанная с этой сетью;
tag — уникальный идентификатор VLAN или VXLAN;
vlanaware — включает параметр VLAN-aware на интерфейсе, позволяя настройку в гостевой системе;
isolate-ports — устанавливает флаг изоляции для всех гостевых портов (но не для самого мостового интерфейса). Это означает, что гостевые системы могут отправлять трафик только на неизолированные порты моста, которые являются самим мостом. Чтобы эта настройка вступила в силу, необходимо перезапустить затронутую гостевую систему.
Примечание
id — адрес сети в нотации CIDR (например, 10.0.0.0/8);
gateway — IP-адрес шлюза по умолчанию сети. В зонах уровня 3 (плагины Simple/EVPN) он будет развернут в виртуальной сети;
snat — включить Source NAT, который позволяет гостевым системам из VNet подключаться к внешней сети, пересылая пакеты на исходящий интерфейс узлов. В зонах EVPN пересылка выполняется на шлюзовых узлах EVPN;
dnszoneprefix — префикс к DNS-домену, например: <hostname>.prefix.<domain>
# apt-get install frr frr-pythontools
И на всех узлах кластера включена служба:
# systemctl enable frr.service
/etc/network/interfaces.d/sdn на этом узле.
ping другого узла источником трафика будет IP-адрес dummy-интерфейса, а не физического интерфейса. Это обеспечивает единообразие выбора исходного адреса и корректную работу маршрутизации.
/etc/network/interfaces строки:
post-up sysctl -w net.ipv6.conf.all.forwarding=1Эта команда активирует глобальную пересылку IPv6 при поднятии интерфейса.
Важно

Примечание



Примечание
Примечание
Примечание


$ ip -br a
enp0s10 UP fd47:d11e:43c1:0:a00:27ff:fe80:2977/64 fe80::a00:27ff:fe80:2977/64
dummy0 DOWN
dummy_of1 UNKNOWN 10.255.0.2/32 fe80::54b9:eeff:fe6b:b2b8/64
В файле /etc/network/interfaces.d/sdn появляются записи вида:
auto dummy_of1
iface dummy_of1 inet static
address 10.255.0.3/32
link-type dummy
ip-forward 1
auto enp0s10
iface enp0s10
ip-forward 1
Примечание
vtysh. Соседей и маршруты OpenFabric можно увидеть с помощью следующих команд:
# vtysh -c "show openfabric neighbor"
# vtysh -c "show openfabric route"
#pvesh create /cluster/sdn/fabrics/fabric\ --id of2 --protocol openfabric --ip_prefix 10.250.0.0/24 #pvesh get /cluster/sdn/fabrics/fabric/of2 --output-format yaml--- digest: 0d9872991acab57cf6afeca9dbf93d0a333fe2d2ef650b21aaedbd30d5b73ecd id: of2 ip_prefix: 10.250.0.0/24 protocol: openfabric
#pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve01 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.1 #pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve02 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.2 #pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve03 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.3 #pvesh get /cluster/sdn/fabrics/node/of2 --output-format yaml--- - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.1 node_id: pve01 protocol: openfabric - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.2 node_id: pve02 protocol: openfabric --- - digest: ba89eae03508e4728939e243bcfdb4452515dfb39eda21692996efaf10b23e54 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.3 node_id: pve03 protocol: openfabric
# pvesh set /cluster/sdn




Примечание


$ ip -br a
enp0s9 UP 10.16.0.2/32 fe80::a00:27ff:fe9e:5ea4/64
dummy0 DOWN
dummy_ospf UNKNOWN 10.16.0.2/32 fe80::cc9f:9bff:fe0c:16bd/64
В файле /etc/network/interfaces.d/sdn появляются записи вида:
auto dummy_ospf
iface dummy_ospf inet static
address 10.16.0.2/32
link-type dummy
ip-forward 1
auto enp0s9
iface enp0s9 inet static
address 10.16.0.2/32
ip-forward 1
Примечание
# vtysh -c "show ip ospf neighbor"
Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL
10.16.0.1 1 Loading/- 0.661s 31.334s 10.16.0.1 enp0s9:10.16.0.2 0 1 0
10.16.0.3 1 Exchange/- 0.663s 34.242s 10.16.0.3 enp0s9:10.16.0.2 1 0 0
# vtysh -c "show ip route ospf"
O 10.16.0.2/32 [110/10] via 0.0.0.0, dummy_ospf onlink, rmapsrc 10.16.0.2, weight 1, 00:08:02
#pvesh create /cluster/sdn/fabrics/fabric\ --id ospf --protocol ospf --ip_prefix 10.16.0.0/24 --area 0 #pvesh get /cluster/sdn/fabrics/fabric/ospf --output-format yaml--- area: '0' digest: b42b0d474b59609522255008351b21dd2badf03e43f7289a80e2feba97815aa5 id: ospf ip_prefix: 10.16.0.0/24 protocol: ospf
#pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve01 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.1 #pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve02 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.2 #pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve03 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.3 #pvesh get /cluster/sdn/fabrics/node/ospf --output-format yaml--- - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.1 node_id: pve01 protocol: ospf - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.2 node_id: pve02 protocol: ospf - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.3 node_id: pve03 protocol: ospf
# pvesh set /cluster/sdn
/etc/pve/sdn/fabrics.cfg:
ospf_fabric: ospf
area 0
ip_prefix 10.16.0.0/24
ospf_node: ospf_pve01
interfaces name=enp0s9
ip 10.16.0.1
ospf_node: ospf_pve02
interfaces name=enp0s9
ip 10.16.0.2
ospf_node: ospf_pve03
interfaces name=enp0s9
ip 10.16.0.3

# pvesh get /cluster/sdn/ipams/pve/status --output-format yaml
Примечание

# openssl x509 -in /var/lib/ssl/certs/nginx-netbox.cert -noout -fingerprint -sha256
sha256 Fingerprint=17:71:60:6A:C7:65:10:7E:FA:00:91:42:…:3A:CB:7B:F3:D0:0C:DC:DE

Примечание

# openssl x509 -in /etc/openssl/phpipam/phpipam.crt -noout -fingerprint -sha256
sha256 Fingerprint=52:EA:33:D0:D4:0D:7E:EE:D5:58:1A:C5:88:…:6B:7B:5A:F4:64:95:4D:E1:41:C4


Примечание
api=yes api-key=WcSieGekANq5KCcEkSk8k7Mv88Wbm7 # случайно сгенерированная строка webserver=yes webserver-port=8081

Примечание
Примечание
# pvesh set /cluster/sdn/vnets/<vnet>/subnets/<subnet>
-dhcp-range start-address=10.10.1.100,end-address=10.10.1.200
-dhcp-range start-address=10.10.2.100,end-address=10.10.2.200
/etc/dnsmasq.d/<zone>:
00-default.conf — содержит глобальную конфигурацию по умолчанию для экземпляра dnsmasq;
10-<Vnet>.conf — содержит DHCP-диапазоны для экземпляра dnsmasq;
ethers — содержит сопоставления MAC и IP-адресов из плагина IPAM. Чтобы переопределить эти сопоставления, следует использовать соответствующий плагин IPAM, а не редактировать этот файл, так как он будет перезаписан плагином dnsmasq.
90-custom.conf) — они не будут изменены плагином DHCP dnsmasq.
/var/lib/misc/dnsmasq.<zone>.leases..
# /etc/pve/sdn/vnets.cfg vnet: vnet0 zone simple # /etc/pve/sdn/subnets.cfg subnet: simple-10.20.30.0-24 vnet vnet0 dhcp-range start-address=10.20.30.100,end-address=10.20.30.150 gateway 10.20.30.1 snat 1 subnet: simple-2001:db8::-64 vnet vnet0 dhcp-range start-address=2001:db8::100,end-address=2001:db8::199 gateway 2001:db8::1 snat 1Автоматически сгенерированные IP-наборы для vnet0 будут содержать следующие элементы:
vnet0-all 10.20.30.0/24 2001:db8::/64 vnet0-gateway 10.20.30.1 2001:db8::1 vnet0-no-gateway 10.20.30.0/24 2001:db8::/64 !10.20.30.1 !2001:db8::1 vnet0-dhcp 10.20.30.100 – 10.20.30.150 2001:db8::1000 – 2001:db8::1999
Примечание
Примечание
/etc/network/interfaces должна присутствовать строка:
source /etc/network/interfaces.d/*










Примечание
#pvesh create /cluster/sdn/zones --type simple --zone simple --dhcp dnsmasq --ipam pve#pvesh get /cluster/sdn/zones/simple --output-format yaml--- dhcp: dnsmasq digest: 9ad0df155d3dab9967a90671dc6123d771f65d29 type: simple zone: simple
#pvesh create /cluster/sdn/vnets --vnet vnet0 --zone simple#pvesh get /cluster/sdn/vnets/vnet0 --output-format yaml--- digest: f137eddad03996ecf6c48aa8b6bd96ef2c8aab3d type: vnet vnet: vnet0 zone: simple
#pvesh create /cluster/sdn/vnets/vnet0/subnets \--subnet 10.20.30.0/24 --type subnet \ --dhcp-range "start-address=10.20.30.10,end-address=10.20.30.20" \ --gateway 10.20.30.1 --snat 1 #pvesh get /cluster/sdn/vnets/vnet0/subnets --output-format yaml--- - cidr: 10.20.30.0/24 dhcp-range: - end-address: 10.20.30.20 start-address: 10.20.30.10 digest: ca799c5ffdc2ffc30f60ed303bd79f4c13cc6519 gateway: 10.20.30.1 id: simple-10.20.30.0-24 mask: '24' network: 10.20.30.0 snat: 1 subnet: simple-10.20.30.0-24 type: subnet vnet: vnet0 zone: simple
# pvesh set /cluster/sdn/vnets/vnet0/subnets/simple-10.20.30.0-24 \
--dhcp-range start-address=10.20.30.100,end-address=10.20.30.150
Если нужно не изменить, а добавить новый диапазон, команда будет выглядеть так:
# pvesh set /cluster/sdn/vnets/vnet0/subnets/simple-10.20.30.0-24 \
--dhcp-range start-address=10.20.30.10,end-address=10.20.30.20 \
--dhcp-range start-address=10.20.30.100,end-address=10.20.30.150
# pvesh set /cluster/sdn
pve03: reloading network config
pve01: reloading network config
pve02: reloading network config
UPID:pve01:00021C9F:0029311C:681F9B30:reloadnetworkall::root@pam:
#pvesh set /nodes/pve01/lxc/101/config --net0 name=eth0,bridge=vnet0,ip=dhcp#pvesh get /nodes/pve01/lxc/101/config --output-format yaml--- arch: amd64 cores: 1 digest: a954d7b078b605d6d477dcd4303419080963ac7f features: nesting=1 hostname: ALTp11 memory: 512 net0: name=eth0,bridge=vnet0,hwaddr=BC:24:11:02:A2:1A,ip=dhcp,type=veth ostype: altlinux rootfs: local-lvm:vm-101-disk-0,size=8G swap: 512 unprivileged: 1







Примечание
#pvesh create /cluster/sdn/zones --type vlan --zone myvlan2 --bridge vmbr0 --ipam pve#pvesh get /cluster/sdn/zones/myvlan2 --output-format yaml--- bridge: vmbr0 digest: 58543afd2dd2b1edf46b9d11647b0cdf42293509 ipam: pve type: vlan zone: myvlan2
#pvesh create /cluster/sdn/vnets --vnet vlannet2 --zone myvlan2 --tag 100#pvesh get /cluster/sdn/vnets/vlannet2 --output-format yaml--- digest: 41e1f7bff1c16506882b4ee1290d6dd066bc8333 tag: 100 type: vnet vnet: vlannet2 zone: myvlan2
# pvesh set /cluster/sdn
# pvesh set /nodes/pve03/lxc/106/config \
--net0 name=eth0,bridge=vlannet2,gw=192.168.100.1,ip=192.168.100.94/24





#pvesh create /cluster/sdn/zones --type qinq --zone myqinq --bridge vmbr0 --ipam pve --tag 40#pvesh get /cluster/sdn/zones/myqinq --output-format yaml--- bridge: vmbr0 digest: 6e9910da8a2ff11579e69c1302c0b5296932e0cc ipam: pve tag: 40 type: qinq zone: myqinq
#pvesh create /cluster/sdn/vnets --vnet myqnet --zone myqinq --tag 100#pvesh get /cluster/sdn/vnets/myqnet --output-format yaml--- digest: 7153cea08ff37c355366ff3edd70d8a54f157046 tag: 100 type: vnet vnet: myqnet zone: myqinq
# pvesh set /cluster/sdn
# pvesh set /nodes/pve03/lxc/106/config \
--net0 name=eth0,bridge=myqnet,gw=192.168.100.1,ip=192.168.100.94/24







#pvesh create /cluster/sdn/zones --type vxlan --zone myvxlan\ --peers 192.168.0.186,192.168.0.90,192.168.0.70 --ipam pve #pvesh get /cluster/sdn/zones/myvxlan --output-format yaml--- digest: 2b49f2691553ab2bc10b7a3486926995a02af885 ipam: pve peers: 192.168.0.186,192.168.0.90,192.168.0.70 type: vxlan zone: myvxlan
#pvesh create /cluster/sdn/vnets --vnet myvxnet --zone myvxlan --tag 200000#pvesh get /cluster/sdn/vnets/myvxnet --output-format yaml--- digest: ee2782a86911fd35fc37d478b4d3aadce2380ce6 tag: 200000 type: vnet vnet: myvxnet zone: myvxlan
# pvesh set /cluster/sdn
# pvesh set /nodes/pve03/lxc/106/config \
--net0 name=eth0,bridge=myvxnet,gw=192.168.100.1,ip=192.168.100.94/24
Примечание

Примечание




# qm migrate <vmid> <target> [OPTIONS]
--online.
# pct migrate <ctid> <target> [OPTIONS]
--restart. Например:
# pct migrate 101 pve02 --restart
Примечание
qm importovf (для файлов OVF/OVA из VMware/VirtualBox).




Примечание
Примечание





Примечание
Примечание
# qm importovf <VMID> /path/to/vm.ovf <целевое хранилище>
haos_ova-15.2.ovf и haos_ova-15.2.vmdk).
# qm importovf 999 haos_ova-15.2.ovf local-lvm
Примечание
$ tar -xvf haos_ova-15.2.ova
Примечание
# vzdump <VMID> --storage <хранилище резервных копий> --mode snapshot --compress zstd
# qmrestore /path/to/vzdump-qemu-<VMID><date>.vma.zst <new_VMID> --storage <целевое хранилище>
$ oneimage show 14
IMAGE 14 INFORMATION
ID : 14
NAME : ALT Linux p9
USER : oneadmin
GROUP : oneadmin
LOCK : None
DATASTORE : default
TYPE : OS
REGISTER TIME : 04/30 11:00:42
PERSISTENT : Yes
SOURCE : /var/lib/one//datastores/1/f811a893808a9d8f5bf1c029b3c7e905
FSTYPE : save_as
SIZE : 12G
STATE : used
RUNNING_VMS : 1
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
IMAGE TEMPLATE
DEV_PREFIX="vd"
DRIVER="qcow2"
SAVED_DISK_ID="0"
SAVED_IMAGE_ID="7"
SAVED_VM_ID="46"
SAVE_AS_HOT="YES"
где /var/lib/one//datastores/1/f811a893808a9d8f5bf1c029b3c7e905 — адрес образа жёсткого диска ВМ.
Примечание
$ onevm disk-saveas <vmid> <diskid> <img_name> [--type type --snapshot snapshot]
где --type <type> — тип нового образа (по умолчанию raw); --snapshot <snapshot_id> — снимок диска, который будет использован в качестве источника нового образа (по умолчанию текущее состояние диска).
$ onevm disk-saveas 125 0 test.qcow2
Image ID: 44
Информация об образе диска ВМ:
$ oneimage show 44
MAGE 44 INFORMATION
ID : 44
NAME : test.qcow2
USER : oneadmin
GROUP : oneadmin
LOCK : None
DATASTORE : default
TYPE : OS
REGISTER TIME : 07/12 21:34:42
PERSISTENT : No
SOURCE : /var/lib/one//datastores/1/9d6336a88d6ab62ea1dce65d81e55881
FSTYPE : save_as
SIZE : 12G
STATE : rdy
RUNNING_VMS : 0
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
IMAGE TEMPLATE
DEV_PREFIX="vd"
DRIVER="qcow2"
SAVED_DISK_ID="0"
SAVED_IMAGE_ID="14"
SAVED_VM_ID="125"
SAVE_AS_HOT="YES"
VIRTUAL MACHINES
Информация о диске:
$ qemu-img info /var/lib/one//datastores/1/9d6336a88d6ab62ea1dce65d81e55881
image: /var/lib/one//datastores/1/9d6336a88d6ab62ea1dce65d81e55881
file format: qcow2
virtual size: 12 GiB (12884901888 bytes)
disk size: 3.52 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
# qm create 120 --bootdisk scsi0 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci
# qm importdisk <vmid> <source> <storage> [OPTIONS]
Импорт диска f811a893808a9d8f5bf1c029b3c7e905 в хранилище local, для ВМ с ID 120 (подразумевается, что образ импортируемого диска находится в каталоге, из которого происходит выполнение команды):
# qm importdisk 120 f811a893808a9d8f5bf1c029b3c7e905 local --format qcow2
importing disk 'f811a893808a9d8f5bf1c029b3c7e905' to VM 120 ...
…
Successfully imported disk as 'unused0:local:120/vm-120-disk-0.qcow2'

# qm set 120 --scsi0 local:120/vm-120-disk-0.qcow2
update VM 120: -scsi0 local:120/vm-120-disk-0.qcow2
"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager" -r win7.vmdk -t 0 win7-pve.vmdk
где win7.vmdk — файл с образом диска.
win7-pve.vmdk в каталог с образами ВМ /var/lib/vz/images/VMID, где VMID — VMID, созданной виртуальной машины (можно воспользоваться WinSCP);
win7-pve.vmdk в qemu формат:
# qemu-img convert -f vmdk win7-pve.vmdk -O qcow2 win7-pve.qcow2
/etc/pve/nodes/pve02/qemu-server/VMID.conf) строку:
unused0: local:100/win7-pve.qcow2где 100 — VMID, а local — хранилище в PVE.

# qemu-img info win7-pve.vmdk
image: win7-pve.vmdk
file format: vmdk
virtual size: 127G (136365211648 bytes)
disk size: 20.7 GiB
cluster_size: 65536
Format specific information:
cid: 3274246794
parent cid: 4294967295
create type: streamOptimized
extents:
[0]:
compressed: true
virtual size: 136365211648
filename: win7-pve.vmdk
cluster size: 65536
format:
В данном случае необходимо создать диск в режиме IDE размером не меньше 127GB.
win7-pve.vmdk в каталог с образами ВМ /var/lib/vz/images/VMID, где VMID — VMID, созданной виртуальной машины (можно воспользоваться WinSCP);
# lvscan
ACTIVE '/dev/sharedsv/vm-101-disk-1' [130,00 GiB] inherit
# qemu-img convert -f vmdk win7-pve.vmdk -O raw /dev/sharedsv/vm-101-disk-1
# qemu-img info win7-pve.vmdk
win7-pve.vmdk в каталог с образами ВМ /var/lib/vz/images/VMID, где VMID — VMID созданной ВМ;
# rbd map rbd01/vm-100-disk-1
/dev/rbd0
Примечание
# qemu-img convert -f vmdk win7-pve.vmdk -O raw /dev/rbd0
Примечание

Полное клонирование и Связанная копия;


Примечание

Примечание

Связанная копия):





, и удалить их, нажав кнопку
. Чтобы сохранить или отменить изменения, используются кнопки
и
соответственно:

# qm set ID --tags 'myfirsttag;mysecondtag'
Например:
# qm set 103 --tags 'linux;openuds'


# pvesh set /cluster/options --tag-style [case-sensitive=<1|0>]\
[,color-map=<tag>:<hex-color> [:<hex-color-for-text>][;<tag>=...]]\
[,ordering=<config|alphabetical>][,shape=<circle|dense|full|none>]
Например, следующая команда установит для тега «FreeIPA» цвет фона черный (#000000), а цвет текста — белый (#FFFFFF) и форму для всех тегов :
# pvesh set /cluster/options --tag-style color-map=FreeIPA:000000:FFFFFF,shape=dense
Примечание
pvesh set /cluster/options --tag-style … удалит все ранее переопределённые стили тегов.

# pvesh set /cluster/options --user-tag-access\
[user-allow=<existing|free|list|none>][,user-allow-list=<tag>[;<tag>...]]
Например, запретить пользователям использовать теги:
# pvesh set /cluster/options --user-tag-access user-allow=none

# pvesh set /cluster/options --registered-tags <tag>[;<tag>...]
vzdump.
mode) зависит от типа гостевой системы.
Важно
Примечание
rsync для копирования данных контейнера во временную папку (опция --tmpdir). Затем контейнер приостанавливается и rsync копирует измененные файлы, после чего контейнер возобновляет свою работу. Это приводит к минимальному времени простоя, но требует дополнительное пространство для хранения копии контейнера. Если контейнер находится в локальной файловой системе, а целевое хранилище резервной копии — сервер NFS/CIFS, для повышения производительности рекомендуется указывать --tmpdir на локальную файловую систему. Локальный tmpdir также необходим, если нужно сделать резервную копию локального контейнера с использованием списков контроля доступа (ACL) в режиме приостановки, при хранении резервных копий на NFS-сервере;
Примечание
backup=0 в конфигурации контейнера:
mp0: local:210/vm-210-disk-1.raw,mp=/mnt/data,backup=0,size=8GВ этом случае
/mnt/data не будет включён архив.
Примечание



prune-backups команды vzdump):
keep-all=<1|0>) — хранить все резервные копии (отключает другие правила);
keep-last=<N>) — хранить <N> последних копий;
keep-hourly=<N>) — хранить резервные копии за последние <N> часов (если за один час создается более одной резервной копии, сохраняется только последняя);
keep-daily=<N>) — хранить резервные копии за последние <N> дней (если за один день создается более одной резервной копии, сохраняется только самая последняя);
keep-weekly=<N>) — хранить резервные копии за последние <N> недель (если за одну неделю создается более одной резервной копии, сохраняется только самая последняя);
keep-monthly=<N>) — хранить резервные копии за последние <N> месяцев (если за один месяц создается более одной резервной копии, сохраняется только самая последняя);
keep-yearly=<N>) — хранить резервные копии за последние <N> лет (если за один год создается более одной резервной копии, сохраняется только самая последняя);
max-protected-backups) — количество защищённых резервных копий на гостевую систему, которое разрешено в хранилище. Для указания неограниченного количества используется значение -1. Значение по умолчанию: неограниченно для пользователей с привилегией Datastore.Allocate и 5 для других пользователей.
# vzdump 777 --prune-backups keep-last=3,keep-daily=13,keep-yearly=9
lzop). Особенностью этого алгоритма является скоростная распаковка. Следовательно, любая резервная копия, созданная с помощью этого алгоритма, может при необходимости быть развернута за минимальное время.
Zip, использующей мощный алгоритм Deflate. Упор делается на максимальное сжатие данных, что позволяет сократить место на диске, занимаемое резервными копиями. Главным отличием от LZO является то, что процедуры компрессии/декомпрессии занимают достаточно большое количество времени.
dump хранилища. Имя файла зависит от типа гостевой системы и алгоритма сжатия:
vzdump.






Предупреждение
/etc/pve/jobs.cfg, которые анализируются и выполняются демоном pvescheduler.
systemd.time (см. man 7 systemd.time):
[WEEKDAY] [[YEARS-]MONTHS-DAYS] [HOURS:MINUTES[:SECONDS]]
Таблица 37.1. Специальные значения
|
Расписание
|
Значение
|
Синтаксис
|
|---|---|---|
|
minutely
|
Каждую минуту
|
*-*-* *:*:00
|
|
hourly
|
Каждый час
|
*-*-* *:00:00
|
|
daily
|
Раз в день
|
*-*-* 00:00:00
|
|
weekly
|
Раз в неделю
|
mon *-*-* 00:00:00
|
|
monthly
|
Раз в месяц
|
*-*-01 00:00:00
|
|
yearly или annually
|
Раз в год
|
*-01-01 00:00:00
|
|
quarterly
|
Раз в квартал
|
*-01,04,07,10-01 00:00:00
|
|
semiannually или semi-annually
|
Раз в полгода
|
*-01,07-01 00:00:00
|
Таблица 37.2. Примеры
|
Расписание
|
Эквивалент
|
Значение
|
|---|---|---|
|
mon,tue,wed,thu,fri
|
mon..fri
|
Каждый будний день в 00:00
|
|
sat,sun
|
sat..sun
|
В субботу и воскресенье в 00:00
|
|
mon,wed,fri
|
-
|
В понедельник, среду и пятницу в 00:00
|
|
12:05
|
12:05
|
Каждый день в 12:05
|
|
*/5
|
0/5
|
Каждые пять минут
|
|
mon..wed 30/10
|
mon,tue,wed 30/10
|
В понедельник, среду и пятницу в 30, 40 и 50 минут каждого часа
|
|
mon..fri 8..17,22:0/15
|
-
|
Каждые 15 минут с 8 часов до 18 и с 22 до 23 в будний день
|
|
fri 12..13:5/20
|
fri 12,13:5/20
|
В пятницу в 12:05, 12:25, 12:45, 13:05, 13:25 и 13:45
|
|
12,14,16,18,20,22:5
|
12/2:5
|
Каждые два часа каждый день с 12:05 до 22:05
|
|
*
|
*/1
|
Ежеминутно (минимальный интервал)
|
|
*-05
|
-
|
Пятого числа каждого месяца
|
|
Sat *-1..7 15:00
|
-
|
Первую субботу каждого месяца в 15:00
|
|
2023-10-22
|
-
|
22 октября 2023 года в 00:00
|







vzdump будет учитывать параметры mailto/mailnotification и отправлять электронные письма на указанные адреса с помощью команды sendmail;
Примечание
# systemctl enable --now postfix



/etc/pve/jobs.cfg):

pct restore — для восстановления контейнера;
qmrestore — для восстановления ВМ.
per-restore limit — максимальная скорость чтения из архива резервной копии;
per-storage write limit — максимальная скорость записи в целевое хранилище.
Важно
bwlimit (в КиБ/с). Например, значение 10240 ограничит скорость до 10 МиБ/с, оставив ресурсы хранилища для работающих ВМ.
Примечание
0 отключает все ограничения — полезно при срочном восстановлении.
# pvesm set <ID хранилища> --bwlimit restore=<KIBs>

--live-restore в команде qmrestore.

Примечание
/var/log/proxmox-backup/file-restore/. Файл журнала может содержать дополнительную информацию в случае, если попытка восстановить отдельные файлы или получить доступ к файловым системам, содержащимся в резервном архиве, не удалась.
/etc/vzdump.conf. Каждая строка файла имеет следующий формат:
OPTION: valueПустые строки и строки, начинающиеся с символа #, игнорируются.
Таблица 37.3. Параметры файла конфигурации
|
Опция
|
Описание
|
|---|---|
|
bwlimit: <целое число> (0 — N) (по умолчанию 0)
|
Ограничение пропускной способности ввода/вывода (КиБ/с)
|
|
compress: (0|1|gzip|lzo|zstd) (по умолчанию 0)
|
Метод сжатия (по умолчанию — без сжатия)
|
|
dumpdir: <строка>
|
Каталог для сохранения резервных копий
|
|
exclude-path: <массив>
|
Исключить определенные файлы/каталоги. Пути, начинающиеся с /, привязаны к корню контейнера, другие пути вычисляются относительно каждого подкаталога
|
|
fleecing: [[enabled=]<1|0>] [,storage=<ID хранилища>]
|
Отложенное копирование (только для ВМ):
|
|
ionice: <целое число> (0 — 8) (по умолчанию 7)
|
Настройка приоритета ввода-вывода при использовании планировщика BFQ. Для резервных копий ВМ в режимах снимка (snapshot) и приостановки (suspend) этот параметр влияет только на работу компрессора (а не на основное копирование данных). Значение 8 означает, что используется приоритет простоя (idle), в противном случае используется стандартный приоритет (best-effort) с указанным уровнем
|
|
lockwait: <целое число> (0 — N) (по умолчанию 180)
|
Максимальное время ожидания для глобальной блокировки (в минутах)
|
|
mailnotification: (always|failure) (по умолчанию always)
|
Устарело: следует использовать цели и триггеры уведомлений. Указание, когда следует отправить отчет по электронной почте
|
|
mailto: <строка>
|
Устарело: следует использовать цели и триггеры уведомлений. Разделенный запятыми список адресов электронной почты или пользователей, которым будут приходить уведомления
|
|
maxfiles: <целое число> (1 — N) (по умолчанию 1)
|
Устарело: следует использовать prune-backups. Максимальное количество файлов резервных копий ВМ
|
|
mode: (snapshot|stop|suspend) (по умолчанию snapshot)
|
Режим резервного копирования
|
|
notes-template: <строка>
|
Шаблон примечания с переменными: {{cluster}}, {{guestname}}, {{node}} и {{vmid}}. Шаблон должен быть записан в одну строку, новая строка и обратная косая черта должны быть экранированы как \n и \\ соответственно
|
|
notification-mode: <auto | legacy-sendmail | notification-system> (по умолчанию auto)
|
Способ отправки уведомлений. Если установлено значение legacy-sendmail,
vzdump будет учитывать параметры mailto/mailnotification и отправлять электронные письма на указанные адреса с помощью команды sendmail. Если установлено значение notification-system, уведомление будет отправлено через систему уведомлений PVE, а параметры mailto/mailnotification будут проигнорированы. Если установлено значение auto (настройка по умолчанию) и установлено значение параметра mailto, будет использоваться режим legacy-sendmail, если значение параметра mailto не установлено, будет использоваться режим notification-system
|
|
pbs-change-detection-mode: <data | legacy | metadata>
|
Определяет метод, используемый PBS для обнаружения изменений в файлах контейнера и выбора оптимального формата кодирования при резервном копировании:
|
|
performance: [max-workers=<целое число>][,pbs-entries-max=<целое число>]
max-workers=<целое число> (1 — 256) (по умолчанию 16)
pbs-entries-max=<целое число> (1 — N) (по умолчанию 1048576)
|
Другие настройки, связанные с производительностью:
|
|
pigz: <целое число> (по умолчанию 0)
|
Если N=0 при сжатии резервных копий используется gzip. Если N>0 — используется pigz.
При N=1 pigz использует половину ядер CPU, при N>1 pigz работает в многопоточном режиме с указанным количеством потоков (N)
|
|
pool: <строка>
|
Резервное копирование ВМ из указанного пула
|
|
protected: boolean
|
Пометить копию как защищённую
|
|
prune-backups: [keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]
|
Политика хранения (переопределяет настройки хранилища см.выше)
|
|
remove: boolean (по умолчанию 1)
|
Удалить старые резервные копии, если их больше, чем установлено опцией prune-backups
|
|
script: <строка>
|
Скрипт, выполняемый до/после копирования
|
|
stdexcludes: boolean (по умолчанию 1)
|
Исключить временные файлы и файлы журналов
|
|
stopwait: <целое число> (0 — N) (по умолчанию 10)
|
Максимальное время ожидания до остановки гостевой системы (минуты)
|
|
storage: <строка>
|
Целевое хранилище
|
|
tmpdir: <строка>
|
Временный каталог (рекомендуется — быстрый локальный диск)
|
|
zstd: <целое число> (default = 1)
|
Количество потоков для сжатия zstd.
При N=1 zstd использует половину доступных ядер CPU, при N>1 zstd работает в многопоточном режиме с указанным количеством потоков (N)
|
vzdump.conf:
tmpdir: /mnt/fast_local_disk storage: my_backup_storage mode: snapshot bwlimit: 10000
--script. Этот скрипт вызывается на различных этапах процесса резервного копирования с соответствующими параметрами (см. пример скрипта /usr/share/doc/pve-manager/examples/vzdump-hook-script.pl).
Примечание
vzdump по умолчанию пропускает следующие файлы (отключается с помощью опции --stdexcludes 0):
/tmp/?* /var/tmp/?* /var/run/?*pid
# vzdump 777 --exclude-path /tmp/ --exclude-path '/var/foo*'
# vzdump 777 --exclude-path bar
исключает любые файлы и каталоги с именами /bar, /var/bar, /var/foo/bar и т.д.
/etc/vzdump/) и будут корректно восстановлены.
/var/lib/vz/dump/):
# vzdump 103
rsync и режим приостановки для создания снимка (минимальное время простоя):
# vzdump 103 --mode suspend
# vzdump --all --mode suspend --mailto root --mailto admin
/mnt/backup:
# vzdump 103 --dumpdir /mnt/backup --mode snapshot
# vzdump 101 102 103 --mailto root
# vzdump --mode suspend --exclude 101,102
# vzdump 105 --storage pbs-backup --pbs-change-detection-mode metadata
# pct restore 600 /mnt/backup/vzdump-lxc-104.tar
# qmrestore /mnt/backup/vzdump-qemu-105.vma 601
# vzdump 101 --stdout | pct restore --rootfs 4 300 -



qm сохраняет конфигурацию ВМ во время снимка в отдельном разделе в файле конфигурации ВМ. Например, после создания снимка с именем first файл конфигурации будет выглядеть следующим образом:
boot: order=scsi0;net0 cores: 1 cpu: x86-64-v2-AES memory: 2048 meta: creation-qemu=9.1.2,ctime=1746532273 name: NewVM net0: virtio=BC:24:11:40:5F:C3,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 parent: first scsi0: local-lvm:vm-100-disk-0,size=52G scsihw: virtio-scsi-single smbios1: uuid=cafd8016-03d3-4514-8d6f-5f4e353e5936 sockets: 1 spice_enhancements: foldersharing=1 tags: admc;linux;openuds usb1: host=090c:1000 usb2: spice vga: qxl vmgenid: 31f7faef-4014-453b-ba8d-801e5634cc08 [first] boot: order=scsi0;net0 cores: 1 cpu: x86-64-v2-AES memory: 2048 meta: creation-qemu=9.1.2,ctime=1746532273 name: NewVM net0: virtio=BC:24:11:40:5F:C3,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 scsi0: local-lvm:vm-100-disk-0,size=52G scsihw: virtio-scsi-single smbios1: uuid=cafd8016-03d3-4514-8d6f-5f4e353e5936 snaptime: 1746637751 sockets: 1 spice_enhancements: foldersharing=1 tags: admc;linux;openuds usb1: host=090c:1000 usb2: spice vga: qxl vmgenid: 31f7faef-4014-453b-ba8d-801e5634cc08
parent используется для хранения родительских/дочерних отношений между снимками, а snaptime — это отметка времени создания снимка (эпоха Unix).
/etc/pve/notifications.cfg — основные настройки;
/etc/pve/priv/notifications.cfg — конфиденциальные параметры (пароли, токены аутентификации). Файл доступен для чтения только пользователю root.
sendmail для отправки электронных писем указанным получателям. Если в качестве получателя указан пользователь PVE, используется адрес электронной почты из его профиля (адрес электронной почты пользователя можно настроить в разделе → → ). Если у пользователя не указан адрес электронной почты, письмо не будет отправлено.
Примечание
sendmail предоставляется почтовым агентом (например, Postfix). Для корректной доставки может потребоваться настройка Postfix (например, указание внешнего ретранслятора). В случае ошибок необходимо проверить системные журналы на наличие сообщений, зарегистрированных демоном Postfix (journalctl -u postfix).
Примечание
# systemctl enable --now postfix

notifications.cfg):
users.cfg;
email_from из файла datacenter.cfg), а при его отсутствии — значение по умолчанию root@$hostname, где $hostname — имя узла.

/etc/pve/notifications.cfg):
sendmail: sendmails-admin
comment Отправка уведомлений администраторам
mailto user@example.test
mailto-user kim@test.alt
mailto-user orlov@test.alt
mailto-user root@pam
Примечание

notifications.cfg):
users.cfg;

/etc/pve/notifications.cfg:
smtp: smtp
from-address pve-mail@test.alt
mailto-user root@pam
mailto-user orlov@test.alt
mode tls
server mail.test.alt
username pve-mail
/etc/pve/priv/notifications.cfg:
smtp: smtp password somepassword

notifications.cfg):
/etc/pve/priv/notifications.cfg), доступном для чтения только пользователю root. Для любых конечных точек API, возвращающих конфигурацию конечной точки, будет возвращено только имя секрета, но не значение. Доступ к секретам можно получить в шаблонах body/header/URL через пространство имен secrets.

/etc/pve/notifications.cfg:
webhook: ntfy
body e3sgbWVzc2FnZSB9fQ== # Закодированный {{ message }}
comment Отправка PUSH уведомлений
method post
url https://ntfy.sh/pve_backup_job_186
/etc/pve/priv/notifications.cfg:
webhook: ntfy secret name=channel,value=MTIzNDU2NDg3OA==
Примечание
body и secret.value должны быть закодированы в base64.
$ echo -n 'pve_backup_job_186' | base64 -w 0
cHZlX2JhY2t1cF9qb2JfMTg2
{{ title }} — заголовок уведомления;
{{ message }} — тело уведомления;
{{ severity }} — уровень серьёзности (info, notice, warning, error, unknown);
{{ timestamp }} — временная метка в виде эпохи UNIX (в секундах);
{{ fields.<name> }} — метаданные (например, fields.type содержит тип уведомления);
{{ secrets.<name> }} — секреты (например, секретный именованный токен доступен через secrets.token).
{{ url-encode <value/property> }} — URL-кодирование свойства/литерала;
{{ escape <value/property> }} — экранирование управляющих символов, которые не могут быть безопасно представлены как строка JSON;
{{ json <value/property> }} — преобразование в JSON. Может быть полезно для передачи целого подпространства имен (например, полей) как части полезной нагрузки JSON (например, {{ json fields }}).
Примечание
matcher: always-matches
comment Это сопоставление всегда срабатывает
mode all
target mail-to-root
match-calendar фильтрует уведомления по временной метке события.
match-calendar 8-12 — ежедневно с 8 до 12 часов;
match-calendar 8:00-15:30 — ежедневно с 8 часов до 15:30;
match-calendar mon..fri 9:00-17:00 — в будние дни с 9 до 17 часов;
match-calendar sun,tue..wed,fri 9-17 — в воскресенье, вторник, среду и пятницу с 9 до 17 часов.
match-field фильтрует уведомления по значениям полей метаданных.
exact, значения можно перечислять через запятую. Правило срабатывает, если поле содержит любое из указанных значений.
regex применяется регулярное выражение.
match-field exact:type=vzdump — только уведомления о резервном копировании;
match-field exact:type=replication,fencing — уведомления о репликации и ограждении;
match-field regex:hostname=^pve-.*$ — уведомления для любого узла, имя которого начинается с pve.
match-field regex:hostname=.* сработает только для уведомлений, содержащих поле hostname.
match-severity фильтрует уведомления по уровню серьёзности (severity) события. Поддерживаются следующие уровни: info, notice, warning, error, unknown.
match-severity error — только ошибки;
match-severity warning,error — предупреждения и ошибки.
Таблица 38.1. Список событий уведомлений
|
Событие
|
Тип
|
Серьезность
|
Поля метаданных (в дополнение к типу)
|
|---|---|---|---|
|
Доступны обновления пакетов
|
package-updates
|
info
|
hostname
|
|
Узел кластера огражден
|
fencing
|
error
|
hostname
|
|
Задание репликации хранилища не выполнено
|
replication
|
error
|
hostname, job-id
|
|
Резервное копирование выполнено успешно
|
vzdump
|
info
|
hostname, job-id (только для заданий резервного копирования)
|
|
Резервное копирование не выполнено
|
vzdump
|
error
|
hostname, job-id (только для заданий резервного копирования)
|
|
Почта для root
|
system-mail
|
unknown
|
hostname
|
match-field.
Таблица 38.2. Описание полей метаданных
|
Поле
|
Описание
|
|---|---|
|
type
|
Тип события уведомления
|
|
hostname
|
Имя хоста PVE без домена (например, pve01)
|
|
job-id
|
Идентификатор задания
|
Примечание
/etc/pve/notifications.cfg):
matcher: workday
match-calendar mon..fri 9-17
target admin
comment Notify admins during working hours
matcher: night-and-weekend
match-calendar mon..fri 9-17
invert-match true
target on-call-admins
comment Separate target for non-working hours
matcher: zfs-error
match-calendar mon..fri 8-17
match-field exact:type=vzdump
match-severity error
mode all
target smtp



system-mail с уровнем серьёзности unknown.
/mapping/notifications.
/mapping/notifications.
notification-mode (Режим отправки уведомлений), который может принимать одно из трёх значений:
auto) — использовать режим legacy-sendmail если email-адрес указан в поле mailto, в противном случае использовать режим notification-system;
legacy-sendmail) — отправлять уведомления по электронной почте с помощью системной команды sendmail. Система уведомлений будет проигнорирована. Этот режим эквивалентен поведению уведомлений для версии PVE<8.1;
notification-system) — использовать систему уведомлений.
notification-mode не установлен, PVE по умолчанию будет использовать auto.



# smartctl -a /dev/sdX
где /dev/sdX — это путь к одному из локальных дисков.
# smartctl -s on /dev/sdX

/dev каждые 30 минут на наличие ошибок и предупреждений, а также отправляет сообщение электронной почты пользователю root в случае обнаружения проблемы (для пользователя root в PVE должен быть введен действительный адрес электронной почты).
Примечание
ha-manager, который автоматически обнаруживает сбои и выполняет автоматический переход на резервный ресурс. Основной объект, управляемый ha-manager, называется ресурсом (service). Ресурс однозначно идентифицируется идентификатором сервиса (SID), состоящим из типа ресурса и идентификатора, специфичного для данного типа:
pve-ha-lrm — локальный менеджер ресурсов (Local Resource Manager, LRM). Он управляет службами, работающими на локальном узле. LRM считывает требуемые состояния служб из текущего статусного файла менеджера и выполняет соответствующие команды;
pve-ha-crm — кластерный менеджер ресурсов (Cluster Resource Manager, CRM). Он принимает решения на уровне кластера: отправляет команды LRM, обрабатывает результаты и переносит ресурсы на другие узлы при сбоях. CRM также выполняет fencing узлов.
Примечание
Примечание
Примечание
/etc/modprobe.d/nohpwdt.conf:
# Do not load the 'hpwdt' module on boot. blacklist hpwdtПосле этого перезагрузить систему.
ha-manager);

ha-manager:
# ha-manager status
quorum OK
master pve03 (active, Fri Nov 28 13:23:12 2025)
lrm pve01 (active, Fri Nov 28 13:23:19 2025)
lrm pve02 (idle, Fri Nov 28 13:23:16 2025)
lrm pve03 (idle, Fri Nov 28 13:23:16 2025)
service ct:109 (pve01, started)
service vm:104 (pve01, started)
# ha-manager config
ct:109
state started
vm:104
# ha-manager migrate vm:104 pve02
Примечание
# ha-manager relocate vm:104 pve02
# ha-manager remove ct:109
Примечание
stopped — служба остановлена (подтверждено LRM). Если LRM обнаружит, что служба в этом состоянии фактически работает, он остановит её снова;
request_stop — службу необходимо остановить. CRM ожидает подтверждения от LRM;
stopping — ожидание обработки запроса на остановку. CRM ещё не получил подтверждение;
started — служба активна, и LRM должен запускать её как можно скорее, если она ещё не работает. Если служба аварийно завершилась и LRM фиксирует, что она не работает, LRM перезапускает её;
started — ожидание запуска службы. CRM ещё не получил подтверждение от LRM;
fence — ожидание fencing узла, так как узел службы находится вне кворумной части кластера. После успешного ограждения служба переводится в состояние recovery;
recovery — ожидание восстановления службы. HA-менеджер ищет новый узел, на котором можно запустить службу. Поиск зависит от доступных и кворумных узлов, а также от правил affinity (если заданы). Когда подходящий узел найден, служба переносится туда и сначала получает состояние stopped. Если служба должна быть запущена — узел её запускает;
freeze — состояние «заморозки»: служба не изменяется. Используется во время перезагрузки узла или перезапуска демона LRMM;
ignored — служба временно игнорируется HA-менеджером. Полезно, если требуется полный ручной контроль без удаления службы из конфигурации HA;
migrate — онлайн-миграция службы на другой узел;
error — служба отключена из-за ошибок LRM. Требуется ручное вмешательство;
queued — служба недавно добавлена, и CRM ещё не видел её;
disabled — служба остановлена и помечена как disabled.
/etc/pve/ha/ и автоматически синхронизируются между узлами кластера.

# ha-manager add ct:108 --state started --max_relocate 2
ha-manager, хранится в файле /etc/pve/ha/resources.cfg в формате:
<тип>: <имя> <свойство> <значение> …
Таблица 40.1. Дополнительные свойства
|
Свойство
|
Описание
|
|---|---|
|
comment: <строка>
|
Описание ресурса
|
|
failback: <логическое значение> (по умолчанию = 1)
|
Автоматически возвращать ресурс на узел с наивысшим приоритетом, если он снова доступен
|
|
group: <строка>
|
Идентификатор группы высокой доступности (HA)
|
|
max_relocate: <целое число> (0 — N) (по умолчанию = 1)
|
Максимальное количество попыток перераспределения службы при сбое запуска службы
|
|
max_restart: <целое число> (0 — N) (по умолчанию = 1)
|
Максимальное количество попыток перезапуска службы на узле после сбоя запуска
|
|
state: <disabled | enabled | ignore | started | stopped> (по умолчанию = started)
|
Запрошенное состояние ресурса (
enabled — псевдоним для started)
|
/etc/pve/ha/resources.cfg):
vm: 102
max_relocate 2
state started
vm: 106
ct: 109
state stopped
Примечание

/etc/pve/ha/rules.cfg. Формат файла:
<тип>: <правило> resources <список_ресурсов> <свойство> <значение>
Таблица 40.2. Дополнительные свойства
|
Свойство
|
Описание
|
|---|---|
|
comment: <строка>
|
Описание правила высокой доступности (HA)
|
|
disable: <логическое значение>
|
Отключено ли правило высокой доступности (HA)
|
|
resources: <тип>:<имя>{,<тип>:<имя>}*
|
Список идентификаторов ресурсов высокой доступности (HA)
|
Таблица 40.3. Типы правил высокой доступности (HA)
|
Тип правила HA
|
Описание
|
|---|---|
|
node-affinity
|
Привязка ресурсов к определённым узлам
|
|
resource-affinity
|
Устанавливает соответствие между двумя или более ресурсами:
positive — ресурсы должны размещаться на одном узле, negative — ресурсы должны размещаться на разных узлах
|

# ha-manager rules add node-affinity ha-rule-vm102 --resources vm:102 --nodes pve01
# ha-manager rules set node-affinity ha-rule-vm102 --strict 1
# ha-manager rules add node-affinity priority-cascade \
--resources vm:200,ct:109 --nodes "pve01:2,pve02:1,pve03:1,pve04"
В данном примере узел pve01 получает наивысший приоритет, узлы pve02 и pve03 — одинаковый, и, наконец, узел pve04 получает самый низкий приоритет, который можно не указывать (будет установлено значение по умолчанию равное 0).
/etc/pve/ha/rules.cfg):
node-affinity: ha-rule-vm102
nodes pve01
resources vm:102
strict 1
node-affinity: priority-cascade
nodes pve01:2,pve02:1,pve03
resources ct:109
Таблица 40.4. Свойства правила привязки к узлам
|
Свойство
|
Описание
|
|---|---|
|
nodes: <узел>[:<приоритет>]{,<узел>[:<приоритет>]}*
|
Список узлов кластера, каждому из которых может быть назначен приоритет
|
|
resources: <тип>: <имя>{,<тип>: <имя>}*
|
Список идентификаторов ресурсов HA
|
|
strict: <логическое значение> (по умолчанию = 0)
|
Описывает, является ли правило привязки к узлам строгим или нестрогим
|
Важно

#Первое правило гарантирует размещение ресурсов на одном узле, второе — на разных.ha-manager rules add resource-affinity keep-together\ --affinity positive --resources vm:104,ct:108 #ha-manager rules add resource-affinity keep-separate\ --affinity negative --resources vm:200,ct:300
Примечание
Примечание
/etc/pve/ha/rules.cfg):
resource-affinity: ha-rule-734d043c-c23a
affinity positive
resources ct:108,vm:104
Таблица 40.5. Свойства правила привязки ресурсов
|
Свойство
|
Описание
|
|---|---|
|
affinity: <negative | positive>
|
Описывает, должны ли ресурсы храниться на одном узле (positive) или на разных узлах (negative)
|
|
resources: <тип>: <имя>{,<тип>: <имя>}*
|
Список идентификаторов ресурсов HA
|
/etc/pve/firewall/).
/etc/pve/firewall/cluster.fw используется для хранения конфигурации PVE Firewall на уровне всего кластера. Этот файл содержит глобальные правила и параметры, которые применяются ко всем узлам и ВМ в кластере. Файл автоматически синхронизируется между всеми узлами кластера через PVE Cluster File System (pmxcfs).
/etc/pve/firewall/cluster.fw состоит из нескольких секций, каждая из которых отвечает за определённые аспекты конфигурации firewall. В файле содержатся следующие секции:
Таблица 41.1. Опции секции [OPTIONS] файла cluster.fw
|
Опция
|
Описание
|
|---|---|
|
ebtables: <1|0> (по умолчанию = 1)
|
Включить правила ebtables для всего кластера
|
|
enable: <1|0>
|
Включить или отключить межсетевой экран для всего кластера
|
|
log_ratelimit: [enable=]<1|0> [,burst=<integer>] [,rate=<rate>]
|
Настройки ограничения частоты записи логов (rate limiting) в PVE Firewall.
|
|
policy_in: <ACCEPT | DROP | REJECT>
|
Политика по умолчанию для входящего трафика. Возможные значения:
|
|
policy_out: <ACCEPT | DROP | REJECT>
|
Политика по умолчанию для исходящего трафика (аналогично policy_in)
|

enable в файле /etc/pve/firewall/cluster.fw:
[OPTIONS] # enable firewall (настройка для всего кластера, по умолчанию отключено) enable: 1
Важно
Примечание
/etc/pve/nodes/<nodename>/host.fw. Здесь можно перезаписать правила из конфигурации cluster.fw или увеличить уровень детализации журнала и задать параметры, связанные с netfilter.
host.fw содержатся следующие секции:
Таблица 41.2. Опции секции [OPTIONS] конфигурации узла
|
Опция
|
Описание
|
|---|---|
|
enable: <1|0>
|
Включить или отключить межсетевой экран узла
|
|
log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
|
Уровень журнала для входящего трафика. Возможные значения:
|
|
log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
|
Уровень журнала для исходящего трафика (аналогично log_level_in)
|
|
log_nf_conntrack: <1|0> (по умолчанию = 0)
|
Включить регистрацию информации о conntrack
|
|
ndp: <1|0> (по умолчанию = 0)
|
Включить NDP (протокол обнаружения соседей)
|
|
nf_conntrack_allow_invalid: <1|0> (по умолчанию = 0)
|
Разрешить недействительные пакеты при отслеживании соединения
|
|
nf_conntrack_helpers: <string> (по умолчанию = ``)
|
Включить conntrack helpers для определенных протоколов. Поддерживаемые протоколы: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp
|
|
nf_conntrack_max: <integer> (32768 — N) (по умолчанию = 262144)
|
Максимальное количество отслеживаемых соединений
|
|
nf_conntrack_tcp_timeout_installed: <integer> (7875 — N) (по умолчанию = 432000)
|
Тайм-аут, установленный для conntrack
|
|
nf_conntrack_tcp_timeout_syn_recv: <integer> (30 — 60) (по умолчанию = 60)
|
Тайм-аут syn recv conntrack
|
|
nosmurfs: <1|0>
|
Включить фильтр SMURFS
|
|
protection_synflood: <1|0> (по умолчанию = 0)
|
Включить защиту от synflood
|
|
protection_synflood_burst: <integer> (по умолчанию = 1000)
|
Уровень защиты от Synflood rate burst по IP-адресу источника
|
|
protection_synflood_rate: <integer> (по умолчанию = 200)
|
Скорость защиты Synflood syn/sec по IP-адресу источника
|
|
smurf_log_level: <alert | crit | debug | emerg | err | info | nolog | notification | warning>
|
Уровень журнала для фильтра SMURFS
|
|
tcp_flags_log_level: <alert | crit | debug | emerg | err | info | nolog | notification | warning>
|
Уровень журнала для фильтра нелегальных флагов TCP
|
|
tcpflags: <1|0> (по умолчанию = 0)
|
Фильтрация недопустимых комбинаций флагов TCP
|

/etc/pve/firewall/<VMID>.fw. Этот файл используется для установки параметров межсетевого экрана, связанных с ВМ/контейнером.
Таблица 41.3. Опции секции [OPTIONS] файла конфигурации ВМ/контейнера
|
Опция
|
Описание
|
|---|---|
|
dhcp: <1|0> (по умолчанию = 0)
|
Включить DHCP
|
|
enable: <1|0>
|
Включить или отключить межсетевой экран
|
|
ipfilter: <1|0>
|
Включить фильтры IP по умолчанию. Это эквивалентно добавлению пустого ipfilter-net<id> ipset для каждого интерфейса. Такие ipset неявно содержат разумные ограничения по умолчанию, такие как ограничение локальных адресов ссылок IPv6 до одного, полученного из MAC-адреса интерфейса. Для контейнеров будут неявно добавлены настроенные IP-адреса
|
|
log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
|
Уровень журнала для входящего трафика. Возможные значения:
|
|
log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
|
Уровень журнала для исходящего трафика (аналогично log_level_in)
|
|
macfilter: <1|0> (по умолчанию = 1)
|
Включить/выключить фильтр MAC-адресов
|
|
ndp: <1|0> (по умолчанию = 0)
|
Включить NDP (протокол обнаружения соседей)
|
|
policy_in: <ACCEPT | DROP | REJECT>
|
Политика по умолчанию для входящего трафика. Возможные значения:
|
|
policy_out: <ACCEPT | DROP | REJECT>
|
Политика по умолчанию для исходящего трафика (аналогично policy_in)
|
|
radv: <1|0>
|
Разрешить отправку объявлений маршрутизатора
|


[RULES] DIRECTION ACTION [OPTIONS] |DIRECTION ACTION [OPTIONS] # отключенное правило DIRECTION MACRO(ACTION) [OPTIONS] # использовать предопределенный макрос
Таблица 41.4. Параметры файла конфигурации
|
Опция
|
Описание
|
|---|---|
|
--dest <string>
|
Ограничить адрес назначения пакета. Может быть указан одиночный IP-адрес, набор IP-адресов (+ipsetname) или псевдоним IP (alias). Можно указать диапазон адресов (например, 200.34.101.207-201.3.9.99) или список IP-адресов и сетей (записи разделяются запятой). Не следует смешивать адреса IPv4 и IPv6 в таких списках
|
|
--dport <string>
|
Ограничить порт назначения TCP/UDP. Можно использовать имена служб или простые числа (0-65535), как определено в
/etc/services. Диапазоны портов можно указать с помощью \d+:\d+, например, 80:85. Для сопоставления нескольких портов или диапазонов можно использовать список, разделенный запятыми
|
|
--icmp-type <string>
|
Тип icmp. Действителен, только если proto равен icmp
|
|
--iface <string>
|
Сетевой интерфейс, к которому применяется правило. В правилах для ВМ и контейнеров необходимо указывать имена ключей конфигурации сети net\d+, например, net0. Правила, связанные с узлом, могут использовать произвольные строки
|
|
--log <alert | crit | debug | emerg | err | info | nolog | notice | warning>
|
Уровень журналирования для правила межсетевого экрана
|
|
--proto <string>
|
IP-протокол. Можно использовать названия протоколов (tcp/udp) или простые числа, как определено в
/etc/protocols
|
|
--source <string>
|
Ограничить исходный адрес пакета. Может быть указан одиночный IP-адрес, набор IP-адресов (+ipsetname) или псевдоним IP (alias). Можно указать диапазон адресов (например, 200.34.101.207-201.3.9.99) или список IP-адресов и сетей (записи разделяются запятой). Не следует смешивать адреса IPv4 и IPv6 в таких списках
|
|
--sport <string>
|
Ограничить исходный порт TCP/UDP. Можно использовать имена служб или простые числа (0-65535), как определено в
/etc/services. Диапазоны портов можно указать с помощью \d+:\d+, например, 80:85. Для сопоставления нескольких портов или диапазонов можно использовать список, разделенный запятыми
|
[RULES] IN SSH(ACCEPT) -i net0 IN SSH(ACCEPT) -i net0 # a comment IN SSH(ACCEPT) -i net0 -source 192.168.0.192 # разрешить SSH только из 192.168.0.192 IN SSH(ACCEPT) -i net0 -source 10.0.0.1-10.0.0.10 # разрешить SSH для диапазона IP IN SSH(ACCEPT) -i net0 -source 10.0.0.1,10.0.0.2,10.0.0.3 # разрешить SSH для списка IP-адресов IN SSH(ACCEPT) -i net0 -source +mynetgroup # разрешить SSH для ipset mynetgroup IN SSH(ACCEPT) -i net0 -source myserveralias # разрешить SSH для псевдонима myserveralias |IN SSH(ACCEPT) -i net0 # отключенное правило IN DROP # отбросить все входящие пакеты OUT ACCEPT # принять все исходящие пакеты

# /etc/pve/firewall/cluster.fw [group webserver] IN ACCEPT -p tcp -dport 80 IN ACCEPT -p tcp -dport 443
# /etc/pve/firewall/<VMID>.fw [RULES] GROUP webserver




source и dest правил межсетевого экрана.
# pve-firewall localnet
local hostname: pve01
local IP address: 192.168.0.186
network auto detect: 192.168.0.0/24
using detected local_network: 192.168.0.0/24
accepting corosync traffic from/to:
- pve02: 192.168.0.90 (link: 0)
- pve03: 192.168.0.70 (link: 0)
Межсетевой экран автоматически устанавливает правила, чтобы разрешить все необходимое для кластера (corosync, API, SSH) с помощью этого псевдонима.
/etc/pve/firewall/cluster.fw. Если используется один узел в публичной сети, лучше явно назначить локальный IP-адрес:
# /etc/pve/firewall/cluster.fw [ALIASES] local_network 192.168.0.186 # использовать одиночный IP-адрес

IN HTTP(ACCEPT) -source +management




# /etc/pve/firewall/cluster.fw [IPSET management] 192.168.0.90 192.168.0.90/24
# /etc/pve/firewall/cluster.fw [IPSET blacklist] 77.240.159.182 213.87.123.0/24
/etc/pve/firewall/<VMID>.fw [IPSET ipfilter-net0] # only allow specified IPs on net0 192.168.0.90
pve-firewall:
#Получение статуса службы:pve-firewall start#pve-firewall stop
# pve-firewall status
Данная команда считывает и компилирует все правила межсетевого экрана, поэтому если конфигурация межсетевого экрана содержит какие-либо ошибки, будут выведены ошибки.
# iptables-save

# iptables-save
Этот вывод также включен в системный отчет, выводимый при выполнении команды:
# pvereport
loglevel не влияет на объем регистрируемого фильтрованного трафика. Он изменяет LOGID, добавленный в качестве префикса к выводу журнала для упрощения фильтрации и постобработки.
Таблица 41.5. Флаги loglevel
|
loglevel
|
LOGID
|
|---|---|
|
nolog
|
—
|
|
emerg
|
0
|
|
alert
|
1
|
|
crit
|
2
|
|
err
|
3
|
|
warning
|
4
|
|
notice
|
5
|
|
info
|
6
|
|
debug
|
7
|
VMID LOGID CHAIN TIMESTAMP POLICY: PACKET_DETAILSВ случае межсетевого экрана узла VMID равен 0.
-log <loglevel> к выбранному правилу.
IN REJECT -p icmp -log nolog IN REJECT -p icmpА правило:
IN REJECT -p icmp -log debugсоздает вывод журнала, помеченный уровнем отладки.
Таблица 41.6. Используемые порты
|
Порт
|
Функция
|
|---|---|
|
8006 (TCP, HTTP/1.1 через TLS)
|
Веб-интерфейс PVE
|
|
5900-5999 (TCP, WebSocket)
|
Доступ к консоли VNC
|
|
3128 (TCP)
|
Доступ к консоли SPICE
|
|
22 (TCP)
|
SSH доступ
|
|
111 (UDP)
|
rpcbind
|
|
25 (TCP, исходящий)
|
sendmail
|
|
5405-5412 UDP
|
Трафик кластера corosync
|
|
60000-60050 (TCP)
|
Живая миграция (память виртуальной машины и данные локального диска)
|

/etc/pve/user.cfg:
# cat /etc/pve/user.cfg
user:root@pam:1:0::::::
user:test@pve:1:0::::::
user:testuser@pve:1:0::::Just a test::
user:user@pam:1:0::::::
group:admin:user@pam::
group:testgroup:test@pve::
Каждая запись о пользователе в этом файле содержит следующую информацию: имя, фамилия, адрес электронной почты, членство в группах, дата истечения срока действия, комментарий, включен или отключен этот пользователь, отметка о включении двухфакторной аутентификации.

Примечание

Примечание


# pveum user token add <userid> <tokenid> [ОПЦИИ]
Возможные опции:
--comment <строка> — комментарий к токену;
--expire <целое число> — дата истечения срока действия API-токена в секундах с начала эпохи (по умолчанию срок действия API-токена совпадает со сроком действия пользователя). Значение 0 указывает, что срок действия токена не ограничен;
--privsep <логическое значение> — ограничить привилегии API-токена с помощью отдельных списков контроля доступа (по умолчанию) или предоставить полные привилегии соответствующего пользователя (значение 0).
# pveum user token add user@pam t2 --privsep 0
┌──────────────┬──────────────────────────────────────┐
│ key │ value │
╞══════════════╪══════════════════════════════════════╡
│ full-tokenid │ user@pam!t2 │
├──────────────┼──────────────────────────────────────┤
│ info │ {"privsep":"0"} │
├──────────────┼──────────────────────────────────────┤
│ value │ 3c749375-e189-493d-8037-a1179317c406 │
└──────────────┴──────────────────────────────────────┘
# pveum user token list user@pam
┌─────────────┬─────────┬────────┬─────────┐
│ tokenid │ comment │ expire │ privsep │
╞═════════════╪═════════╪════════╪═════════╡
│ monitoring │ │ 0 │ 1 │
├─────────────┼─────────┼────────┼─────────┤
│ t2 │ │ 0 │ 0 │
└─────────────┴─────────┴────────┴─────────┘
# pveum user token permissions user@pam t2
Можно использовать опцию --path, чтобы вывести разрешения для этого пути, а не всё дерево:
# pveum user token permissions user@pam t2 --path /storage
# pveum acl modify /vms --tokens 'user@pam!monitoring' --roles PVEAdmin,PVEAuditor
# pveum user token remove user@pam t2
Примечание
# pveum acl modify /vms --users test@pve --roles PVEVMAdmin
#pveum user token add test@pve monitoring --privsep 1#pveum acl modify /vms --tokens 'test@pve!monitoring' --roles PVEAuditor
#pveum user permissions test@pve#pveum user token permissions test@pve monitoring



# pveum pool add IT --comment 'IT development pool'
# pveum pool list
┌────────┬─────────────────────┬─────────┐
│ poolid │ comment │ members │
╞════════╪═════════════════════╪═════════╡
│ IT │ IT development pool │ │
├────────┼─────────────────────┼─────────┤
│ mypool │ │ │
└────────┴─────────────────────┴─────────┘
# pveum pool modify IT --vms 201,108,202,104,208 --storage mpath2,nfs-storage
# pveum pool modify IT --delete 1 --vms 108,104
# pveum pool delete IT
Примечание
/etc/pve/domains.cfg.
adduser) на всех узлах, на которых пользователю разрешено войти в систему. Если пользователи PAM существуют в хост-системе PVE, соответствующие записи могут быть добавлены в PVE, чтобы эти пользователи могли входить в систему, используя свое системное имя и пароль.


/etc/pve/priv/shadow.cfg). Пароль шифруется с использованием метода хеширования SHA-256.


# pveum useradd testuser@pve -comment "Just a test"
# pveum passwd testuser@pve
# pveum usermod testuser@pve -enable 0
# pveum groupadd testgroup
# pveum roleadd VM_Power-only -privs "VM.PowerMgmt VM.Console"


/etc/pve/priv/realm/<realmname>.pw);



Примечание
# pveum realm sync example.test --scope both



/etc/pve/priv/realm/<realmname>.pw);


Примечание
# pveum realm sync test.alt --scope both





oathkeygen), который печатает случайный ключ в нотации Base32. Этот ключ можно использовать непосредственно с различными инструментами OTP, такими как инструмент командной строки oathtool, или приложении FreeOTP и в других подобных приложениях.
Примечание
Примечание






# pveum user tfa unlock orlov@test.alt
Важно


# pveum role add VM_Power-only --privs "VM.PowerMgmt VM.Console"
Примечание
Таблица 42.1. Привилегии используемые в PVE
|
Привилегия
|
Описание
|
|---|---|
|
Привилегии узла/системы
|
|
|
Group.Allocate
|
Создание/удаление/изменение групп
|
|
Mapping.Audit
|
Просмотр сопоставлений ресурсов
|
|
Mapping.Modify
|
Управление сопоставлениями ресурсов
|
|
Mapping.Use
|
Использование сопоставлений ресурсов
|
|
Permissions.Modify
|
Изменение прав доступа
|
|
Pool.Allocate
|
Создание/удаление/изменение пулов
|
|
Pool.Audit
|
Просмотр пула
|
|
Realm.Allocate
|
Создание/удаление/изменение областей аутентификации
|
|
Realm.AllocateUser
|
Назначение пользователю области аутентификации
|
|
SDN.Allocate
|
Управление конфигурацией SDN
|
|
SDN.Audit
|
Просмотр конфигурации SDN
|
|
Sys.AccessNetwork
|
Просмотр информации о сетевых интерфейсах, использование сетевых ресурсов
|
|
Sys.Audit
|
Просмотр состояния/конфигурации узла, конфигурации кластера Corosync и конфигурации HA
|
|
Sys.Console
|
Консольный доступ к узлу
|
|
Sys.Incoming
|
Разрешить входящие потоки данных из других кластеров (экспериментально)
|
|
Sys.Modify
|
Создание/удаление/изменение параметров сети узла
|
|
Sys.PowerMgmt
|
Управление питанием узла (запуск, остановка, сброс, выключение)
|
|
Sys.Syslog
|
Просмотр Syslog
|
|
User.Modify
|
Создание/удаление/изменение пользователя
|
|
Права, связанные с ВМ
|
|
|
SDN.Use
|
Доступ к виртуальным сетям SDN и локальным сетевым мостам
|
|
VM.Allocate
|
Создание/удаление ВМ
|
|
VM.Audit
|
Просмотр конфигурации ВМ
|
|
VM.Backup
|
Резервное копирование/восстановление ВМ
|
|
VM.Clone
|
Клонирование/копирование ВМ
|
|
VM.Config.CDROM
|
Извлечение/изменение CDROM
|
|
VM.Config.CPU
|
Изменение настроек процессора
|
|
VM.Config.Cloudinit
|
Изменение параметров Cloud-init
|
|
VM.Config.Disk
|
Добавление/изменение/удаление дисков ВМ
|
|
VM.Config.HWType
|
Изменение типа эмуляции
|
|
VM.Config.Memory
|
Изменение настроек памяти
|
|
VM.Config.Network
|
Добавление/изменение/удаление сетевых устройств
|
|
VM.Config.Options
|
Изменение любой другой конфигурации ВМ
|
|
VM.Console
|
Консольный доступ к ВМ
|
|
VM.GuestAgent.Audit
|
Выполнение информационных команд QEMU Guest Agent
|
|
VM.GuestAgent.FileRead
|
Чтение файлов в гостевой системе через QEMU Guest Agent
|
|
VM.GuestAgent.FileSystemMgmt
|
Заморозка/разморозка/trim файловых систем в гостевой ОС через QEMU Guest Agent
|
|
VM.GuestAgent.FileWrite
|
Запись файлов в гостевой системе через QEMU Guest Agent
|
|
VM.GuestAgent.Unrestricted
|
Выполнение произвольных команд QEMU Guest Agent без ограничений
|
|
VM.Migrate
|
Миграция ВМ на альтернативный сервер в кластере
|
|
VM.PowerMgmt
|
Управление питанием (запуск, остановка, сброс, выключение)
|
|
VM.Replicate
|
Настройка и выполнение репликации гостевой ВМ
|
|
VM.Snapshot.Rollback
|
Откат ВМ к одному из её снимков
|
|
VM.Snapshot
|
Создание/удаление снимков ВМ
|
|
Права, связанные с хранилищем
|
|
|
Datastore.Allocate
|
Создание/удаление/изменение хранилища данных
|
|
Datastore.AllocateSpace
|
Выделить место в хранилище
|
|
Datastore.AllocateTemplate
|
Размещение/загрузка шаблонов контейнеров и ISO-образов
|
|
Datastore.Audit
|
Просмотр хранилища данных
|
Примечание
/nodes/{node} — доступ к узлам PVE;
/vms — распространяется на все ВМ;
/vms/{vmid} — доступ к определенным ВМ;
/storage/{storeid} — доступ к определенным хранилищам;
/pool/{poolid} — доступ к ресурсам из определенного пула ресурсов;
/access/groups — администрирование групп;
/access/realms/{realmid} — административный доступ к области аутентификации.


# pveum acl modify / --groups admin --roles Administrator
# pveum acl modify /vms --users test@pve --roles PVEAuditor
# pveum acl modify /access --users test@pve --roles PVEUserAdmin
#pveum acl modify /access/realm/test.alt --users orlov@test.alt --roles PVEUserAdmin#pveum acl modify /access/groups/office-test.alt --users orlov@test.alt --roles PVEUserAdmin
# pveum acl modify /pool/IT/ --groups developers --roles PVEAdmin
# pveum acl delete /vms --users test@pve --roles PVEAuditor
Примечание
pvenode task приведены в таблице Команды pvenode task.
Таблица 43.1. Команды pvenode task
|
Команда
|
Описание
|
|---|---|
pvenode task list [Параметры]
|
Вывести список выполненных задач для данного узла.
|
pvenode task log <vmid> [Параметры]
|
Вывести журнал задачи.
|
pvenode task status <upid>
|
Вывести статус задачи.
|
Примечание
UPID:$node:$pid:$pstart:$starttime:$dtype:$id:$userpid, pstart и starttime имеют шестнадцатеричную кодировку.
pvenode task:
# pvenode task list --errors --vmid 105
Список задач будет представлен в виде таблицы:

# pvenode task list --userfilter user
# pvenode task log UPID:pve01:0002277F:0033E9A0:681B87A1:qmsnapshot:102:root@pam:
snapshotting 'drive-scsi0' (local-lvm:vm-102-disk-0)
Logical volume "snap_vm-102-disk-0_first" created.
TASK OK
# pvenode task status UPID:pve01:0002277F:0033E9A0:681B87A1:qmsnapshot:102:root@pam:
┌────────────┬────────────────────────────────────────────────────────────────┐
│ key │ value │
╞════════════╪════════════════════════════════════════════════════════════════╡
│ exitstatus │ OK │
├────────────┼────────────────────────────────────────────────────────────────┤
│ id │ 102 │
├────────────┼────────────────────────────────────────────────────────────────┤
│ node │ pve01 │
├────────────┼────────────────────────────────────────────────────────────────┤
│ pid │ 141183 │
├────────────┼────────────────────────────────────────────────────────────────┤
│ pstart │ 3402144 │
├────────────┼────────────────────────────────────────────────────────────────┤
│ starttime │ 1746634657 │
├────────────┼────────────────────────────────────────────────────────────────┤
│ status │ stopped │
├────────────┼────────────────────────────────────────────────────────────────┤
│ type │ qmsnapshot │
├────────────┼────────────────────────────────────────────────────────────────┤
│ upid │ UPID:pve01:0002277F:0033E9A0:681B87A1:qmsnapshot:102:root@pam: │
├────────────┼────────────────────────────────────────────────────────────────┤
│ user │ root@pam │
└────────────┴────────────────────────────────────────────────────────────────┘


Примечание
Примечание




pvesh (см.ниже), доступна в веб-API, поскольку они используют одну и ту же конечную точку.
-H или --header для отправки заголовков HTTP) и т. д.;
-d или --data при запросах POST, PUT, PATCH или DELETE.
Примечание
--data-urlencode.
curl.
Примечание
/var/lib/rrdcached/, например, выполнив команду:
# find /var/lib/rrdcached -type f -mtime +5 -delete
Или, добавив соответствующее задание в crontab.
$ curl -k -d 'username=root@pam' --data-urlencode 'password=xxxxxxxxx' \
https://192.168.0.186:8006/api2/json/access/ticket
Примечание
$ curl -k -d 'username=root@pam' --data-urlencode "password@$HOME/.pve-pass-file" \
https://192.168.0.186:8006/api2/json/access/ticket
Примечание
jq (должен быть установлен пакет jq):
$ curl -k -d 'username=root@pam' --data-urlencode "password@$HOME/.pve-pass-file" \
https://192.168.0.186:8006/api2/json/access/ticket | jq
{
"data": {
"ticket":"PVE:root@pam:66AA52D6::d85E+IIFAuG731…",
"CSRFPreventionToken":"66AA52D6:Y2zvIXjRVpxx4ZG74F14Ab0EHn8NRoso/WmVqZEnAuM",
"username":"root@pam"
}
}
Примечание
$ curl -k -b "PVEAuthCookie=PVE:root@pam:66AA52D6::d85E+IIFAuG731…" \
https://192.168.0.186:8006/api2/json/
Ответ:
{
"data": [
{ "subdir": "version" },
{ "subdir": "cluster" },
{ "subdir": "nodes" },
{ "subdir": "storage" },
{ "subdir": "access" },
{ "subdir": "pools" }
]
}
Примечание
--cookie (-b).
$ curl -k -XDELETE \
'https://pve01:8006/api2/json/access/users/testuser@pve' \
-b "PVEAuthCookie=PVE:root@pam:66AA52D6::d85E+IIFAuG731…" \
-H "CSRFPreventionToken: 66AA52D6:Y2zvIXjRVpxx4ZG74F14Ab0EHn8NRoso/WmVqZEnAuM"
$ curl -H 'Authorization: PVEAPIToken=root@pam!test=373007e1-4ecb-4e56-b843-d0fbed543375' \
https://192.168.0.186:8006/api2/json/access/users
$ curl -k -X 'POST' \
'https://pve01:8006/api2/json/access/users' \
--data-urlencode 'userid=testuser@pve' \
-H 'Authorization: PVEAPIToken=root@pam!test=373007e1-4ecb-4e56-b843-d0fbed543375'
$ curl -k -X 'DELETE' \
'https://pve01:8006/api2/json/access/users/testuser@pve' \
-H 'Authorization: PVEAPIToken=root@pam!test=373007e1-4ecb-4e56-b843-d0fbed543375'
Примечание
curl: (60) SSL certificate problem: unable to get local issuer certificateможно дополнить запрос опцией
--insecure (-k), для отключения проверки валидности сертификатов:
$ curl -k -H 'Authorization: PVEAPIToken=root@pam!test=373007e1-4ecb-4e56-b843-d0fbed543375' \
https://192.168.0.186:8006/api2/json/
Примечание
cookie — файл, в который будет помещен cookie;
csrftoken — файл, в который будет помещен CSRF-токен.
$export APINODE=pve01$export TARGETNODE=pve03
cookie:
$ curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket \
| jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie
csrftoken:
$ curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket \
| jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > csrftoken
$ curl --insecure --cookie "$(<cookie)" https://$APINODE:8006/api2/json/nodes/$TARGETNODE/status | jq '.'
$ curl --silent --insecure --cookie "$(<cookie)" --header "$(<csrftoken)" -X POST\
--data-urlencode net0="name=myct0,bridge=vmbr0" \
--data-urlencode ostemplate="local:vztmpl/alt-p11-rootfs-systemd-x86_64.tar.xz" \
--data vmid=601 \
https://$APINODE:8006/api2/json/nodes/$TARGETNODE/lxc
{"data":"UPID:pve03:00005470:00083F6D:66A76C80:vzcreate:601:root@pam:"}
Команда должна вернуть структуру JSON, содержащую идентификатор задачи (UPID).
Примечание
# pvesh ls /
Dr--- access
Dr--- cluster
Dr--- nodes
Drwcd pools
Dr-c- storage
-r--- version
Примечание
pvesh может использовать только пользователь root.
# pvesh get /version
# pvesh get /nodes
# pvesh usage cluster/options -v
# pvesh create /access/users --userid testuser@pve
# pvesh delete /access/users/testuser@pve
# pvesh set cluster/options -console html5
#pvesh createnodes/pve03/lxc -vmid 210 -hostname test --storage local \ --password "supersecret" \ --ostemplate nfs-storage:vztmpl/alt-p11-rootfs-systemd-x86_64.tar.xz \ --memory 512 --swap 512 UPID:pve03:0000286E:0003553C:66A75FE7:vzcreate:210:root@pam: #pvesh create/nodes/pve03/lxc/210/status/start UPID:pve03:0000294B:00036B33:66A7601F:vzstart:210:root@pam

# pvedaemon help
# pvedaemon restart
# pvedaemon start
# pvedaemon start --debug 1
# pvedaemon status
# pvedaemon stop
pvedaemon предоставляет весь API PVE на 127.0.0.1:85. Она работает от имени пользователя root и имеет разрешение на выполнение всех привилегированных операций.
Примечание
pveproxy.
pveproxy предоставляет весь PVE API на TCP-порту 8006 с использованием HTTPS. Она работает от имени пользователя www-data и имеет минимальные разрешения. Операции, требующие дополнительных разрешений, перенаправляются локальному pvedaemon.
/etc/default/pveproxy. Например:
ALLOW_FROM="10.0.0.1-10.0.0.5,192.168.0.0/22" DENY_FROM="all" POLICY="allow"IP-адреса можно указывать в любом формате, поддерживаемом Net::IP. Ключевое слово all является псевдонимом для 0/0 и ::/0 (все адреса IPv4 и IPv6).
Таблица 45.1. Правила обработки запросов
|
Соответствие
|
POLICY=deny
|
POLICY=allow
|
|---|---|---|
|
Соответствует только Allow
|
Запрос разрешён
|
Запрос разрешён
|
|
Соответствует только Deny
|
Запрос отклонён
|
Запрос отклонён
|
|
Нет соответствий
|
Запрос отклонён
|
Запрос разрешён
|
|
Соответствует и Allow и Deny
|
Запрос отклонён
|
Запрос разрешён
|
pveproxy и spiceproxy прослушивают подстановочный адрес и принимают соединения от клиентов как по IPv4, так и по IPv6.
LISTEN_IP в /etc/default/pveproxy, можно контролировать, к какому IP-адресу будут привязываться службы pveproxy и spiceproxy. IP-адрес должен быть настроен в системе.
sysctl net.ipv6.bindv6only=1 приведет к тому, что службы будут принимать соединения только от клиентов IPv6, что может вызвать множество проблем. Если устанавливается эта конфигурация, рекомендуется либо удалить настройку sysctl, либо установить LISTEN_IP в значение 0.0.0.0 (что позволит использовать только клиентов IPv4).
LISTEN_IP можно использовать только для ограничения сокета внутренним интерфейсом, например:
LISTEN_IP="192.168.0.186"Аналогично можно задать IPv6-адрес:
LISTEN_IP="2001:db8:85a3::1"Если указывается локальный IPv6-адрес, необходимо указать имя интерфейса, например:
LISTEN_IP="fe80::c463:8cff:feb9:6a4e%vmbr0"
Примечание
LISTEN_IP в кластерных системах.
pveproxy и spiceproxy:
# systemctl restart pveproxy.service spiceproxy.service
Примечание
pveproxy, в отличие от перезагрузки конфигурации (reload), может прервать некоторые рабочие процессы, например, запущенную консоль или оболочку ВМ. Поэтому следует дождаться остановки системы на обслуживание, чтобы это изменение вступило в силу.
/etc/default/pveproxy с помощью ключей CIPHERS (TLS = 1.2) и CIPHERSUITES (TLS >= 1.3), например:
CIPHERS="ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256" CIPHERSUITES="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
/etc/default/pveproxy (по умолчанию используется первый шифр в списке, доступном как клиенту, так и pveproxy):
HONOR_CIPHER_ORDER=0
/etc/default/pveproxy:
DISABLE_TLS_1_2=1или, соответственно:
DISABLE_TLS_1_3=1
Примечание
/etc/default/pveproxy, указав в параметре DHPARAMS путь к файлу, содержащему параметры DH в формате PEM, например:
DHPARAMS="/path/to/dhparams.pem"
Примечание
pveproxy использует /etc/pve/local/pveproxy-ssl.pem и /etc/pve/local/pveproxy-ssl.key, если они есть, или /etc/pve/local/pve-ssl.pem и /etc/pve/local/pve-ssl.key в противном случае. Закрытый ключ не может использовать парольную фразу.
/etc/pve/local/pveproxy-ssl.key, установив TLS_KEY_FILE в /etc/default/pveproxy, например:
TLS_KEY_FILE="/secrets/pveproxy.key"
pveproxy использует сжатие gzip HTTP-уровня для сжимаемого контента, если клиент его поддерживает. Это поведение можно отключить в /etc/default/pveproxy:
COMPRESSION=0
pvestatd регулярно опрашивает состояние ВМ, хранилищ и контейнеров и рассылает обновления на все узлы кластера.
spiceproxy прослушивает TCP-порт 3128 и реализует HTTP-прокси для пересылки запроса CONNECT от SPICE-клиента к ВМ PVE. Она работает от имени пользователя www-data и имеет минимальные разрешения.
/etc/default/pveproxy. Подробнее см. pveproxy — служба PVE API Proxy
pvescheduler отвечает за запуск заданий по расписанию, например, заданий репликации и vzdump.
/etc/pve/jobs.cfg.
Примечание



apt-get или через графический интерфейс ( → ).

# apt-get update


Примечание
Примечание
Важно
/etc.
alt-virtualization-pve-11.1-x86_64.iso.
Предупреждение
/etc/network/interfaces;
/etc/pve/storage.cfg, для подключения внешнего хранилища, используемого для резервного копирования;
/etc/pve/firewall/;
/etc/pve/nodes/<node>/host.fw (если применимо);
sysctl.conf параметр:
net.ipv4.ip_forward = 1
pvecm status).
alt-virtualization-pve-11.1-x86_64.iso.
Предупреждение
/etc/pve синхронизирован и узел появился в кластере.
Примечание
size=3, свободное место в кластере — не менее объёма данных одного OSD (желательно с запасом 30 %), а заполненность OSD не должна превышать 70–75 %. В кластере из трёх OSD любые операции по их выводу допустимы, но считаются пограничными и требуют повышенного контроля.
# pvecm status
…
Quorum information
------------------
Date: Wed Feb 4 16:34:33 2026
Quorum provider: corosync_votequorum
Nodes: 3
Node ID: 0x00000001
Ring ID: 1.27
Quorate: Yes
# ceph -s
cluster:
id: e2a86754-35d1-4e63-a41b-35aafa5e0542
health: HEALTH_OK
services:
mon: 3 daemons, quorum pve01,pve02,pve03 (age 38s)
mgr: pve03(active, since 2m), standbys: pve01
mds: 1/1 daemons up, 1 standby
osd: 3 osds: 3 up (since 24m), 3 in (since 58m)
data:
volumes: 1/1 healthy
pools: 3 pools, 65 pgs
objects: 24 objects, 595 KiB
usage: 222 MiB used, 315 GiB / 315 GiB avail
pgs: 65 active+clean
#pveceph mon destroy <mon_id>#pveceph mgr destroy <mgr_id>#pveceph mds destroy <mds_id>
Примечание
# ceph osd out <osd.id>
#Дождаться, пока все затронутые PG перейдут в состояние active+clean (завершение backfill и rebalancing).ceph -s#ceph pg stat
# ceph osd down <osd.id>
# systemctl stop ceph-osd@<osd.id>.service
#ceph osd rm <osd.id>#ceph osd crush remove <osd.id>#ceph auth del osd.<osd.id>
#ceph osd tree#ceph osd crush tree
Примечание
# ceph-volume lvm zap /dev/X --destroy
#lvremove#vgremove#wipefs -a /dev/X
Примечание
alt-virtualization-pve-11.1-x86_64.iso.
# ceph -s
apt-repo).
tmux или screen), чтобы избежать прерывания обновления при потере SSH-соединения.
Важно
Примечание
alt-virtualization-pve-11.0-x86_64.iso.
qm remote-migrate). При наличии технической возможности можно развернуть новый кластер параллельно и выполнить миграцию всех ВМ.
# ha-manager crm-command node-maintenance enable <Узел>
Примечание
ha-manager переместит все ресурсы, за которыми он следит (HA-ресурсы), на другие узлы кластера. Также данный режим помечает узел как недоступный для размещения новых ресурсов, предотвращая автоматическую миграцию ВМ с других узлов.
#apt-get update && apt-get dist-upgrade#update-kernel#apt-get clean#reboot
# ha-manager crm-command node-maintenance disable <Узел>
Примечание
pmxcfs. После обновления всех узлов эти ошибки, как правило, исчезают.
Содержание
Примечание
apt-get. Она автоматически определяет зависимости между пакетами и строго следит за её соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.
Важно
/etc/apt/sources.list, либо в любой файл .list (например, mysources.list) в каталоге /etc/apt/sources.list.d/. Описания репозиториев заносятся в эти файлы в следующем виде:
rpm [подпись] метод:путь база название rpm-src [подпись] метод:путь база названиеЗдесь:
/etc/apt/vendor.list;
/etc/apt/sources.list.d/*.list обычно указывается интернет-репозиторий, совместимый с установленным дистрибутивом.
sources.list, необходимо обновить локальную базу данных APT о доступных пакетах. Это делается командой apt-get update.
sources.list присутствует репозиторий, содержимое которого может изменяться (например, постоянно разрабатываемый репозиторий или репозиторий обновлений по безопасности), то прежде чем работать с APT, необходимо синхронизировать локальную базу данных с удалённым сервером командой apt-get update. Локальная база данных создаётся заново при каждом изменении в репозитории: добавлении, удалении или переименовании пакета.
/etc/apt/sources.list, относящиеся к ресурсам в сети Интернет.
apt-repo:
apt-repo
apt-repo add репозиторий
apt-repo rm репозиторий
apt-repo update
apt-repo:
man apt-repo
или
apt-repo --help
Примечание
#Или то же самое одной командой:apt-repo#rm allapt-repoadd p11
# apt-repo set p11
sources.list репозитория на сменном диске в APT предусмотрена специальная утилита — apt-cdrom.
Acquire::CDROM::mount в файле конфигурации APT (/etc/apt/apt.conf), по умолчанию это /media/ALTLinux:
# mkdir /media/ALTLinux
# mount /dev/носитель /media/ALTLinux
где /dev/носитель — соответствующее блочное устройство (например, /dev/dvd — для CD/DVD-диска).
# apt-cdrom -m add
sources.list появится запись о подключённом носителе:
rpm cdrom:[ALT Virtualization 11.1 x86_64 build 2025-11-13]/ ALTLinux main
/etc/apt/sources.list.d/.
Примечание
alt.list может содержаться такая информация:
# ftp.altlinux.org (ALT Linux, Moscow) # ALT Platform 11 #rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic #rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic #rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic
apt-get update или apt-repo update).
apt-cache. Данная утилита позволяет искать пакет не только по имени, но и по его описанию.
apt-cache search подстрока позволяет найти все пакеты, в именах или описании которых присутствует указанная подстрока. Например:
$ apt-cache search telegraf
ceph-mgr-telegraf - Telegraf module for Ceph Manager Daemon
telegraf - The plugin-driven server agent for collecting and reporting metrics
apt-cache show:
$ apt-cache show telegraf
Package: telegraf
Section: Development/Other
Installed Size: 276056584
Maintainer: Alexey Shabalin (ALT Team) <shaba@altlinux.org>
Version: 1.33.0-alt1:p11+365214.100.2.1@1734429624
Pre-Depends: /bin/sh, /usr/sbin/groupadd, /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/post_service, /usr/sbin/preun_service, rpmlib(PayloadIsXz)
Depends: /bin/kill, /bin/sh, /etc/logrotate.d, /etc/rc.d/init.d, /etc/rc.d/init.d(SourceIfNotEmpty), /etc/rc.d/init.d(msg_reloading), /etc/rc.d/init.d(msg_usage), /etc/rc.d/init.d(start_daemon), /etc/rc.d/init.d(status), /etc/rc.d/init.d(stop_daemon), /etc/rc.d/init.d/functions
Provides: telegraf (= 1.33.0-alt1:p11+365214.100.2.1)
Architecture: x86_64
Size: 46969532
MD5Sum: 92c284ee01d9657bebe670bb72468f5c
Filename: telegraf-1.33.0-alt1.x86_64.rpm
Description: The plugin-driven server agent for collecting and reporting metrics
Telegraf is an agent written in Go for collecting, processing, aggregating, and writing metrics.
Design goals are to have a minimal memory footprint with a plugin system so that developers
in the community can easily add support for collecting metrics from well known services
(like Hadoop, Postgres, or Redis) and third party APIs (like Mailchimp, AWS CloudWatch,
or Google Analytics).
apt-cache можно использовать русскую подстроку. В этом случае будут найдены пакеты, имеющие описание на русском языке. К сожалению, описание на русском языке в настоящее время есть не у всех пакетов, но наиболее актуальные описания переведены.
Важно
apt-get install имя_пакета.
Важно
# apt-get update
apt-get позволяет устанавливать в систему пакеты, требующие для работы наличие других, пока ещё не установленных пакетов. В этом случае он определяет, какие пакеты необходимо установить. apt-get устанавливает их, пользуясь всеми доступными репозиториями.
apt-get install telegraf приведёт к следующему диалогу с APT:
# apt-get install telegraf
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены:
telegraf
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 31 не будет обновлено.
Необходимо получить 47,0MB архивов.
После распаковки потребуется дополнительно 276MB дискового пространства.
Получено: 1 http://ftp.altlinux.org p11/branch/x86_64/classic telegraf 1.33.0-alt1:p11+365214.100.2.1@1734429624 [47,0MB]
Получено 47,0MB за 15s (2942kB/s).
Совершаем изменения...
Подготовка... ################################### [100%]
Обновление / установка...
1: telegraf-1.33.0-alt1 ################################### [100%]
Завершено.
apt-get install имя_пакета используется также и для обновления уже установленного пакета или группы пакетов. В этом случае apt-get дополнительно проверяет, есть ли обновлённая, в сравнении с установленной в системе, версия пакета в репозитории.
# apt-get install /путь/к/файлу.rpm
При этом APT проведёт стандартную процедуру проверки зависимостей и конфликтов с уже установленными пакетами.
apt-get отказывается выполнять операции установки, удаления или обновления. В этом случае необходимо повторить операцию, задав опцию -f, заставляющую apt-get исправить нарушенные зависимости, удалить или заменить конфликтующие пакеты. В этом случае необходимо внимательно следить за сообщениями, выводимыми apt-get. Любые действия в этом режиме обязательно требуют подтверждения со стороны пользователя.
apt-get remove имя_пакета. Для того чтобы не нарушать целостность системы, будут удалены и все пакеты, зависящие от удаляемого. В случае удаления пакета, который относится к базовым компонентам системы, apt-get потребует дополнительное подтверждение с целью предотвращения возможной случайной ошибки.
Важно
apt-get удалить базовый компонент системы, вы увидите следующий запрос на подтверждение операции:
# apt-get remove filesystem
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие пакеты будут УДАЛЕНЫ:
...
ВНИМАНИЕ: Будут удалены важные для работы системы пакеты
Обычно этого делать не следует. Вы должны точно понимать возможные последствия!
...
0 будет обновлено, 0 новых установлено, 2648 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B архивов.
После распаковки будет освобождено 8994MB дискового пространства.
Вы делаете нечто потенциально опасное!
Введите фразу 'Yes, do as I say!' чтобы продолжить.
Предупреждение
#apt-get&&updateapt-getdist-upgrade
apt-get update) обновит индексы пакетов. Вторая команда (apt-get dist-upgrade) позволяет обновить только те установленные пакеты, для которых в репозиториях, перечисленных в /etc/apt/sources.list, имеются новые версии.
Примечание
apt-get upgrade существует, использовать её следует осторожно, либо не использовать вовсе.
/etc/apt/sources.list, имеются новые версии.
apt-get upgrade, в результате чего происходит нарушение целостности системы: появляются неудовлетворённые зависимости. Для разрешения этой проблемы существует режим обновления в масштабе дистрибутива — apt-get dist-upgrade.
apt-get, которым APT предварит само обновление.
Примечание
apt-get dist-upgrade обновит систему, но ядро ОС не будет обновлено.
# update-kernel
Примечание
update-kernel необходимо выполнить команду apt-get update.
update-kernel обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра.
# remove-old-kernels
Содержание
/.
/media/cdrom (путь в дистрибутиве обозначается с использованием /, а не \, как в DOS/Windows).
/:
/bin — командные оболочки (shell), основные утилиты;
/boot — содержит ядро системы;
/dev — псевдофайлы устройств, позволяющие работать с устройствами напрямую. Файлы в /dev создаются сервисом udev
/etc — общесистемные конфигурационные файлы для большинства программ в системе;
/etc/rc?.d, /etc/init.d, /etc/rc.boot, /etc/rc.d — каталоги, где расположены командные файлы, выполняемые при запуске системы или при смене её режима работы;
/etc/passwd — база данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, его зашифрованный пароль и другие данные;
/etc/shadow — теневая база данных пользователей. При этом информация из файла /etc/passwd перемещается в /etc/shadow, который недоступен для чтения всем, кроме пользователя root. В случае использования альтернативной схемы управления теневыми паролями (TCB), все теневые пароли для каждого пользователя располагаются в каталоге /etc/tcb/имя пользователя/shadow;
/home — домашние каталоги пользователей;
/lib — содержит файлы динамических библиотек, необходимых для работы большей части приложений, и подгружаемые модули ядра;
/lost+found — восстановленные файлы;
/media — подключаемые носители (каталоги для монтирования файловых систем сменных устройств);
/mnt — точки временного монтирования;
/opt — вспомогательные пакеты;
/proc — виртуальная файловая система, хранящаяся в памяти компьютера при загруженной ОС. В данном каталоге расположены самые свежие сведения обо всех процессах, запущенных на компьютере.
/root — домашний каталог администратора системы;
/run — файлы состояния приложений;
/sbin — набор программ для административной работы с системой (системные утилиты);
/selinux — виртуальная файловая система SELinux;
/srv — виртуальные данные сервисных служб;
/sys — файловая система, содержащая информацию о текущем состоянии системы;
/tmp — временные файлы.
/usr — пользовательские двоичные файлы и данные, используемые только для чтения (программы и библиотеки);
/var — файлы для хранения изменяющихся данных (рабочие файлы программ, очереди, журналы).
/usr:
/usr/bin — дополнительные программы для всех учетных записей;
/usr/sbin — команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root;
/usr/local — место, где рекомендуется размещать файлы, установленные без использования пакетных менеджеров, внутренняя организация каталогов практически такая же, как и корневого каталога;
/usr/man — каталог, где хранятся файлы справочного руководства man;
/usr/share — каталог для размещения общедоступных файлов большей части приложений.
/var:
/var/log — место, где хранятся файлы аудита работы системы и приложений;
/var/spool — каталог для хранения файлов, находящихся в очереди на обработку для того или иного процесса (очереди печати, непрочитанные или не отправленные письма, задачи cron т.д.).
/dev файловой системы дистрибутива (об этом — ниже). Диски (в том числе IDE/SATA/SCSI/SAS жёсткие диски, USB-диски) имеют имена:
/dev/sda — первый диск;
/dev/sdb — второй диск;
/dev/sdX, где X — a, b, c, d, e, … в зависимости от порядкового номера диска на шине.
/dev/sdb4 — четвертый раздел второго диска.
/) и раздел подкачки (swap). Размер последнего, как правило, составляет от однократной до двукратной величины оперативной памяти компьютера. Если на диске много свободного места, то можно создать отдельные разделы для каталогов /usr, /home, /var.
command.com в DOS, но несравненно мощнее. При помощи командных интерпретаторов можно писать небольшие программы — сценарии (скрипты). В Linux доступны следующие командные оболочки:
bash — самая распространенная оболочка под linux. Она ведет историю команд и предоставляет возможность их редактирования;
pdksh — клон korn shell, хорошо известной оболочки в UNIX™ системах.
$ echo $SHELL
history. Команды, присутствующие в истории, отображаются в списке пронумерованными. Чтобы запустить конкретную команду необходимо набрать:
!номер команды
!!запустится последняя из набранных команд.
gunzip, можно набрать следующую команду:
gu
$guguilegunzipgupnp-binding-tool
gunzip — это единственное имя, третьей буквой которого является «n»), а затем нажать клавишу Tab, то оболочка самостоятельно дополнит имя. Чтобы запустить команду нужно нажать Enter.
$PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слеш) (если только не выбран один из двух самых слабых уровней защиты). Поэтому, для запуска программы из текущего каталога, необходимо использовать команду (в примере запускается команда prog):
./prog
cal, выводящая календарь на текущий месяц.
$calМарт 2025 Пн Вт Ср Чт Пт Сб Вс 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Команда$cal1 2026Январь 2026 Пн Вт Ср Чт Пт Сб Вс 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cal 1 2026 состоит из двух частей — собственно команды cal и «остального». То, что следует за командой, называется параметрами (или аргументами), и они вводятся для изменения поведения команды. В большинстве случаев, первое слово считается именем команды, а остальные — её параметрами.
date, только для работы по Гринвичу ей нужен дополнительный параметр -u (он же --universal).
$dateЧт 13 мар 2025 12:10:52 EET$date-uЧт 13 мар 2025 10:11:05 UTC
--help. К примеру, получить подсказку о том, что делает команда rm, можно, набрав в терминале rm --help.
man. Пример:
$manls
Примечание
ls -l -F можно ввести команду ls -lF
Учетные записи пользователей
susu позволяет изменить «владельца» текущего сеанса (сессии) без необходимости завершать сеанс и открывать новый.
su [ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
su - будет запрошен пароль суперпользователя (root), и, в случае ввода корректного пароля, пользователь получит права администратора. Чтобы вернуться к правам пользователя, необходимо ввести команду:
exit
idid выводит информацию о пользователе и группах, в которых он состоит, для заданного пользователя или о текущем пользователе (если ничего не указано).
id [ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
passwdpasswd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.
Основные операции с файлами и каталогами
lsls (list) печатает в стандартный вывод содержимое каталогов.
ls [ОПЦИИ...] [ФАЙЛ...]
-a — просмотр всех файлов, включая скрытые;
-l — отображение более подробной информации;
-R — выводить рекурсивно информацию о подкаталогах.
cdcd предназначена для смены каталога. Команда работает как с абсолютными, так и с относительными путями. Если каталог не указан, используется значение переменной окружения $HOME (домашний каталог пользователя). Если каталог задан полным маршрутным именем, он становится текущим. По отношению к новому каталогу нужно иметь право на выполнение, которое в данном случае трактуется как разрешение на поиск.
cd [-L|-P] [КАТАЛОГ]
$OLDPWD. Если переход был осуществлен по переменной окружения $CDPATH или в качестве аргумента был задан «-» и смена каталога была успешной, то абсолютный путь нового рабочего каталога будет выведен на стандартный вывод.
docs/ (относительный путь):
cd docs/
/usr/bin (абсолютный путь):
cd /usr/bin/
cd ..
cd -
cd
pwdpwd выводит абсолютный путь текущего (рабочего) каталога.
pwd [-L|-P]
-P — не выводить символические ссылки;
-L — выводить символические ссылки.
rmrm служит для удаления записей о файлах. Если заданное имя было последней ссылкой на файл, то файл уничтожается.
Предупреждение
rm[ОПЦИИ...]<ФАЙЛ>
-f — никогда не запрашивать подтверждения;
-i — всегда запрашивать подтверждение;
-r, -R — рекурсивно удалять содержимое указанных каталогов.
html в каталоге ~/html:
rm-i~/html/*.html
mkdirmkdir — команда для создания новых каталогов.
mkdir [-p] [-m права] <КАТАЛОГ...>
rmdirrmdir удаляет каталоги из файловой системы. Каталог должен быть пуст перед удалением.
rmdir [ОПЦИИ...] <КАТАЛОГ...>
-p — удалить каталог и его потомки.
rmdir часто заменяется командой rm -rf, которая позволяет удалять каталоги, даже если они не пусты.
cpcp предназначена для копирования файлов из одного в другие каталоги.
cp [-fip] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
cp [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
cp [-R] [[-H] | [-L] | [-P]] [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
-p — сохранять по возможности времена изменения и доступа к файлу, владельца и группу, права доступа;
-i — запрашивать подтверждение перед копированием в существующие файлы;
-r, -R — рекурсивно копировать содержимое каталогов.
mvmv предназначена для перемещения файлов.
mv [-fi] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
mv [-fi] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
mv перемещает исх_файл в цел_файл (происходит переименование файла).
mv перемещает исходные файлы в указанный каталог под именами, совпадающими с краткими именами исходных файлов.
-f — не запрашивать подтверждения перезаписи существующих файлов;
-i — запрашивать подтверждение перезаписи существующих файлов.
catcat последовательно выводит содержимое файлов.
cat [ОПЦИИ...] [ФАЙЛ...]
-n, --number — нумеровать все строки при выводе;
-E, --show-ends — показывать $ в конце каждой строки.
headhead выводит первые 10 строк каждого файла на стандартный вывод.
head [ОПЦИИ] [ФАЙЛ...]
-n, --lines=[-]K — вывести первые К строк каждого файла, а не первые 10;
-q, --quiet — не печатать заголовки с именами файлов.
lessless позволяет постранично просматривать текст (для выхода необходимо нажать q).
less ФАЙЛ
grepgrep имеет много опций и предоставляет возможности поиска символьной строки в файле.
grep [шаблон_поиска] <ФАЙЛ>
Поиск файлов
findfind предназначена для поиска всех файлов, начиная с корневого каталога. Поиск может осуществляться по имени, типу или владельцу файла.
find [-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [ПУТЬ…] [ВЫРАЖЕНИЕ]
-name — поиск по имени файла;
-type — поиск по типу f=файл, d=каталог, l=ссылка(lnk);
-user — поиск по владельцу (имя или UID).
find, можно выполнять различные действия над найденными файлами. Основные действия:
-exec команда \; — выполнить команду. Запись команды должна заканчиваться экранированной точкой с запятой. Строка «{}» заменяется текущим маршрутным именем файла;
-execdir команда \; — то же самое что и -exec, но команда вызывается из подкаталога, содержащего текущий файл;
-ok команда — эквивалентно -exec за исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе: «y»;
-print — вывод имени файла на экран.
-print.
find . -type f -name "~*" -print
file.bak:
find . -newer file.bak -type f -print
a.out или *.o, доступ к которым не производился в течение недели:
find / \( -name a.out -o -name '*.o' \) \ -atime +7 -exec rm {} \;
find . -size 0c -ok rm {} \;
whereiswhereis сообщает путь к исполняемому файлу программы, ее исходным файлам (если есть) и соответствующим страницам справочного руководства.
whereis [ОПЦИИ...] <ФАЙЛ>
-b — вывод информации только об исполняемых файлах;
-m — вывод информации только о страницах справочного руководства;
-s — вывод информации только об исходных файлах.
Мониторинг и управление процессами
psps отображает список текущих процессов.
ps [ОПЦИИ...]
-a — вывести информацию о процессах, ассоциированных с терминалами;
-f — вывести «полный» список;
-l — вывести «длинный» список;
-p список — вывести информацию о процессах с перечисленными в списке PID;
-u список — вывести информацию о процессах с перечисленными идентификаторами или именами пользователей.
killkill позволяет прекратить исполнение процесса или передать ему сигнал.
kill [-s] [сигнал] [идентификатор] [...]
kill [-l] [статус_завершения]
kill [-номер_сигнала] [идентификатор] [...]
-l — вывести список поддерживаемых сигналов;
-s сигнал, -сигнал — послать сигнал с указанным именем.
kill не дает желательного эффекта, необходимо использовать команду kill с параметром -9 (kill -9 PID_номер).
dfdf показывает количество доступного дискового пространства в файловой системе, в которой содержится файл, переданный как аргумент. Если ни один файл не указан, показывается доступное место на всех смонтированных файловых системах. Размеры по умолчанию указаны в блоках по 1КБ.
df [ОПЦИИ] [ФАЙЛ...]
--total — подсчитать общий объем в конце;
-h, --human-readable — печатать размеры в удобочитаемом формате (например, 1K, 234M, 2G).
dudu подсчитывает использование диска каждым файлом, для каталогов подсчет происходит рекурсивно.
du [ОПЦИИ] [ФАЙЛ...]
-a, --all — выводить общую сумму для каждого заданного файла, а не только для каталогов;
-c, --total — подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
-d, --max-depth=N — выводить объем для каталога (или файлов, если указано --all) только если она на N или менее уровней ниже аргументов командной строки;
-S, --separate-dirs — выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
-s, --summarize — отобразить только сумму для каждого аргумента.
whichwhich отображает полный путь к указанным командам или сценариям.
which [ОПЦИИ] <ФАЙЛ...>
-a, --all — выводит все совпавшие исполняемые файлы по содержимому в переменной окружения $PATH, а не только первый из них;
-c, --total — подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
-d, --max-depth=N — выводить объем для каталога (или файлов, если указано --all) только если она на N или менее уровней ниже аргументов командной строки;
-S, --separate-dirs — выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
--skip-dot — пропускает все каталоги из переменной окружения $PATH, которые начинаются с точки.
Использование многозадачности
bgbg позволяет перевести задание на задний план.
bg [ИДЕНТИФИКАТОР ...]
fgfg позволяет перевести задание на передний план.
fg [ИДЕНТИФИКАТОР ...]
Сжатие и упаковка файлов
tartar, которая преобразует файл или группу файлов в архив без сжатия (tarfile).
tar -cf [имя создаваемого файла архива] [упаковываемые файлы и/или каталоги]
tar -cf moi_dokumenti.tar Docs project.tex
tar -xf [имя файла архива]
gzip, bzip2 и 7z.
cat. По умолчанию команда cat читает данные из всех файлов, которые указаны в командной строке, и посылает эту информацию непосредственно в стандартный вывод (stdout). Следовательно, команда:
cat history-final masters-thesis
выведет на экран сначала содержимое файла history-final, а затем — файла masters-thesis.
cat читает входные данные из stdin и возвращает их в stdout. Пример:
cat
Hello there.
Hello there.
Bye.
Bye.
Ctrl-D
cat немедленно возвращает на экран. При вводе информации со стандартного ввода конец текста сигнализируется вводом специальной комбинации клавиш, как правило, Ctrl+D. Сокращённое название сигнала конца текста — EOT (end of text).
sort является простым фильтром — она сортирует входные данные и посылает результат на стандартный вывод. Совсем простым фильтром является команда cat — она ничего не делает с входными данными, а просто пересылает их на выход.
ls на stdin команды sort:
ls|sort-r notes masters-thesis history-final english-list
ls/usr/bin |more
где командаls|sort-r |head-1 notes
head -1 выводит на экран первую строку получаемого ей входного потока строк (в примере поток состоит из данных от команды ls), отсортированных в обратном алфавитном порядке.
ls > file-list
уничтожит содержимое файла file-list, если этот файл ранее существовал, и создаст на его месте новый файл. Если вместо этого перенаправление будет сделано с помощью символов >>, то вывод будет приписан в конец указанного файла, при этом исходное содержимое файла не будет уничтожено.
Примечание
chmod предназначена для изменения прав доступа файлов и каталогов.
chmod [ОПЦИИ] РЕЖИМ[,РЕЖИМ]... <ФАЙЛ>
chmod [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
-R — рекурсивно изменять режим доступа к файлам, расположенным в указанных каталогах;
--reference=ИФАЙЛ — использовать режим файла ИФАЙЛ.
chmod изменяет права доступа каждого указанного файла в соответствии с правами доступа, указанными в параметре РЕЖИМ. Режим может быть представлен как в символьном виде, так и в числовом (восьмеричном) виде, представляющем битовую маску новых прав доступа.
[ugoa...][[+-=][разрешения...]...]Здесь разрешения — это ноль или более букв из набора «rwxXst» или одна из букв из набора «ugo».
Примечание
f1, а членам группы и прочим пользователям только читать. Команду можно записать двумя способами:
$chmod644 f1 $chmodu=rw,go=r f1
f2 всем пользователям:
$ chmod +x f2
f3:
$ chmod +t f3
f4:
$chmod=rwx,g+s f4 $chmod2777 f4
chown изменяет владельца и/или группу для каждого заданного файла.
chown [КЛЮЧ]…[ВЛАДЕЛЕЦ][:[ГРУППА]] <ФАЙЛ>
chown [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
-R — рекурсивно изменять файлы и каталоги;
--reference=ИФАЙЛ — использовать владельца и группу файла ИФАЙЛ.
/u на пользователя test:
chown test /u
/u:
chown test:staff /u
/u и вложенных файлов на test:
chown -hR test /u
chgrp изменяет группу для каждого заданного файла.
chgrp [ОПЦИИ] ГРУППА <ФАЙЛ>
chgrp [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
-R — рекурсивно изменять файлы и каталоги;
--reference=ИФАЙЛ — использовать группу файла ИФАЙЛ.
umask задает маску режима создания файла в текущей среде командного интерпретатора равной значению, задаваемому операндом режим. Эта маска влияет на начальное значение битов прав доступа всех создаваемых далее файлов.
umask [-p] [-S] [режим]
$ umask
0022
или то же самое в символьном режиме:
$ umask -S
u=rwx,g=rx,o=rx
umask распознается и выполняется командным интерпретатором bash.
chattr управляет расширенными атрибутами файловых систем ext3 и ext4.
chattr [ -RVf ] [+-=aAcCdDeFijmPsStTux] [ -v версия ] <ФАЙЛЫ> …
-R — рекурсивно изменять атрибуты каталогов и их содержимого. Символические ссылки игнорируются;
-V — выводит расширенную информацию и версию программы;
-f — подавлять сообщения об ошибках;
-v версия — установить номер версии/генерации файла.
+-=aAcCdDeFijmPsStTux
a — только добавление к файлу;
A — не обновлять время последнего доступа (atime) к файлу;
c — сжатый файл;
C — отключение режима «Copy-on-write» для указанного файла;
d — не архивировать (отключает создание архивной копии файла командой dump);
D — синхронное обновление каталогов;
e — включает использование extent при выделении места на устройстве (атрибут не может быть отключён с помощью chattr);
F — регистронезависимый поиск в каталогах;
i — неизменяемый файл (файл защищен от изменений: не может быть удалён или переименован, к этому файлу не могут быть созданы ссылки, и никакие данные не могут быть записаны в этот файл);
j — ведение журнала данных (данные файла перед записью будут записаны в журнал ext3/ext4);
m — не сжимать;
P — каталог с вложенными файлами является иерархической структурой проекта;
s — безопасное удаление (перед удалением все содержимое файла полностью затирается «00»);
S — синхронное обновление (аналогичен опции монтирования «sync» файловой системы);
t — отключает метод tail-merging для файлов;
T — вершина иерархии каталогов;
u — неудаляемый (при удалении файла его содержимое сохраняется, это позволяет пользователю восстановить файл);
x — прямой доступ к файлам (атрибут не может быть установлен с помощью chattr).
lsattr показывает расширенные атрибуты файлов.
lsattr [ -RVadlpv ] <ФАЙЛЫ> …
-R — рекурсивно изменять атрибуты каталогов и их содержимого. Символические ссылки игнорируются;
-V — выводит расширенную информацию и версию программы;
-a — просматривает все файлы в каталоге, включая скрытые файлы (имена которых начинаются с «.»);
-d — отображает каталоги так же, как и файлы вместо того, чтобы просматривать их содержимое;
-l — отображает параметры, используя длинные имена вместо одного символа;
-p — выводит номер проекта файла;
-v — выводит номер версии/генерации файла.
getfacl показывает списки контроля доступа (ACL) — расширенные права, дополняющие традиционные.
getfacl [ --aceEsRLPtpndvh ] <ФАЙЛ> …
-a — вывести только ACL файла;
-d — вывести только ACL по умолчанию;
-c — не показывать заголовок (имя файла);
-e — показывать все эффективные права;
-E — не показывать эффективные права;
-s — пропускать файлы, имеющие только основные записи;
-R — для подкаталогов рекурсивно;
-L — следовать по символическим ссылкам, даже если они не указаны в командной строке;
-P — не следовать по символическим ссылкам, даже если они указаны в командной строке;
-t — использовать табулированный формат вывода;
-p — не удалять ведущие «/» из пути файла;
-n — показывать числовые значения пользователя/группы.
1: # file: somedir/ 2: # owner: lisa 3: # group: staff 4: # flags: -s- 5: user::rwx 6: user:joe:rwx #effective:r-x 7: group::rwx #effective:r-x 8: group:cool:r-x 9: mask:r-x 10: other:r-x 11: default:user::rwx 12: default:user:joe:rwx #effective:r-x 13: default:group::r-x 14: default:mask:r-x 15: default:other:---
setfacl изменяет ACL файлов и каталогов. В командной строке за последовательностью команд идет последовательность файлов (за которой, в свою очередь, также может идти последовательность команд и так далее).
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] <ФАЙЛ> …
setfacl --restore=file
-b — удалить все разрешенные записи ACL;
-k — удалить ACL по умолчанию;
-n — не пересчитывать маску эффективных прав, обычно setfacl пересчитывает маску (кроме случая явного задания маски) для того, чтобы включить ее в максимальный набор прав доступа элементов, на которые воздействует маска (для всех групп и отдельных пользователей);
-d — применить ACL по умолчанию;
-R — для подкаталогов рекурсивно;
-L — переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R);
-P — не переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R);
-L — следовать по символическим ссылкам, даже если они не указаны в командной строке;
-P — не следовать по символическим ссылкам, даже если они указаны в командной строке;
--mask — пересчитать маску эффективных прав;
-m — изменить текущий ACL для файла;
-M — прочитать записи ACL для модификации из файла;
-x — удалить записи из ACL файла;
-X — прочитать записи ACL для удаления из файла;
--restore=file — восстановить резервную копию прав доступа, созданную командой getfacl –R или ей подобной. Все права доступа дерева каталогов восстанавливаются, используя этот механизм. В случае если вводимые данные содержат элементы для владельца или группы-владельца, и команда setfacl выполняется пользователем с именем root, то владелец и группа-владелец всех файлов также восстанавливаются. Эта опция не может использоваться совместно с другими опциями за исключением опции --test;
--set=acl — установить ACL для файла, заменив текущий ACL;
--set-file=file — прочитать записи ACL для установления из файла;
--test — режим тестирования (ACL не изменяются).
--set, -m и -x должны быть перечислены записи ACL в командной строке. Элементы ACL разделяются одинарными кавычками.
-set-file, -M и -X команда setfacl принимает множество элементов в формате вывода команды getfacl. В строке обычно содержится не больше одного элемента ACL.
setfacl использует следующие форматы элементов ACL:
[d[efault]:] [u[ser]:]uid [:perms]
[d[efault]:] g[roup]:gid [:perms]
[d[efault]:] m[ask][:] [:perms]
[d[efault]:] o[ther][:] [:perms]
setfacl создает права доступа, используя уже существующие, согласно следующим условиям:
test.txt, принадлежащего пользователю liza и группе docs, так, чтобы:
$Установить разрешения (от пользователя liza):ls -l test.txt-rw-r-r-- 1 liza docs 8 янв 22 15:54 test.txt $getfacl test.txt# file: test.txt # owner: liza # group: docs user::rw- group::r-- other::r--
$Просмотреть разрешения (от пользователя liza):setfacl -m u:ivan:rw- test.txt$setfacl -m u:misha:--- test.txt
$ getfacl test.txt
# file: test.txt
# owner: liza
# group: docs
user::rw-
user:ivan:rw-
user:misha:---
group::r--
mask::rw-
other::r--
Примечание
ls -l указывает на использование ACL:
$ ls -l test.txt
-rw-rw-r--+ 1 liza docs 8 янв 22 15:54 test.txt
su (shell of user), которая позволяет выполнить одну или несколько команд от лица другого пользователя. По умолчанию эта утилита выполняет команду sh от пользователя root, то есть запускает командный интерпретатор. Отличие от предыдущего способа в том, что всегда известно, кто именно запускал su, а значит, ясно, кто выполнил определённое административное действие.
su, а утилиту sudo, которая позволяет выполнять только заранее заданные команды.
Важно
su и sudo, необходимо быть членом группы wheel. Пользователь, созданный при установке системы, по умолчанию уже включён в эту группу.
control доступна только для суперпользователя (root). Для того чтобы посмотреть, что означает та или иная политика control (разрешения выполнения конкретной команды, управляемой control), надо запустить команду с ключом help:
# control su help
Запустив control без параметров, можно увидеть полный список команд, управляемых командой (facilities) вместе с их текущим состоянием и набором допустимых состояний.
su -
su без ключа, то происходит вызов командного интерпретатора с правами root. При этом значение переменных окружения, в частности $PATH, остаётся таким же, как у пользователя: в переменной $PATH не окажется каталогов /sbin, /usr/sbin, без указания полного имени будут недоступны команды route, shutdown, mkswap и другие. Более того, переменная $HOME будет указывать на каталог пользователя, все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами root в каталоге пользователя, что в дальнейшем может вызвать проблемы.
su -. В этом режиме su запустит командный интерпретатор в качестве login shell, и он будет вести себя в точности так, как если бы в системе зарегистрировался root.
id, вывод её может быть примерно следующим:
uid=1000(test) gid=1000(test) группы=1000(test),16(rpm)
Примечание
useradd[ОПЦИИ...]<ИМЯ ПОЛЬЗОВАТЕЛЯ>useradd -D[ОПЦИИ...]
-b каталог — базовый каталог для домашнего каталога новой учётной записи;
-c комментарий — текстовая строка (обычно используется для указания фамилии и имени);
-d каталог — домашний каталог новой учётной записи;
-D — показать или изменить настройки по умолчанию для useradd;
-e дата — дата устаревания новой учётной записи;
-g группа — имя или ID первичной группы новой учётной записи;
-G группы — список дополнительных групп (через запятую) новой учётной записи;
-m — создать домашний каталог пользователя;
-M — не создавать домашний каталог пользователя;
-p пароль — зашифрованный пароль новой учётной записи (не рекомендуется);
-s оболочка — регистрационная оболочка новой учётной записи (по умолчанию /bin/bash);
-u UID — пользовательский ID новой учётной записи.
useradd имеет множество параметров, которые позволяют менять её поведение по умолчанию. Например, можно принудительно указать, какой будет UID или какой группе будет принадлежать пользователь:
# useradd -u 1500 -G usershares new_user
passwd и утилит shadow.
passwd [ОПЦИИ...] [ИМЯ ПОЛЬЗОВАТЕЛЯ]
-d, --delete — удалить пароль для указанной записи;
-f, --force — форсировать операцию;
-k, --keep-tokens — сохранить не устаревшие пароли;
-l, --lock — блокировать указанную запись;
--stdin — прочитать новые пароли из стандартного ввода;
-S, --status — дать отчет о статусе пароля в указанной записи;
-u, --unlock — разблокировать указанную запись;
-?, --help — показать справку и выйти;
--usage — дать короткую справку по использованию;
-V, --version — показать версию программы и выйти.
passwd заканчивает работу с кодом выхода 0. Код выхода 1 означает, что произошла ошибка. Текстовое описание ошибки выводится на стандартный поток ошибок.
useradd и passwd:
#useraddtest1 #passwdtest1 passwd: updating all authentication tokens for user test1. You can now choose the new password or passphrase. A valid password should be a mix of upper and lower case letters, digits, and other characters. You can use a password containing at least 7 characters from all of these classes, or a password containing at least 8 characters from just 3 of these 4 classes. An upper case letter that begins the password and a digit that ends it do not count towards the number of character classes used. A passphrase should be of at least 3 words, 11 to 72 characters long, and contain enough different characters. Alternatively, if no one else can see your terminal now, you can pick this as your password: "Burst*texas$Flow". Enter new password: Weak password: too short. Re-type new password: passwd: all authentication tokens updated successfully.
passwd — но если он попытается поставить слабый пароль, система откажет ему (в отличие от root) в изменении.
/etc/passwdqc.conf.
passwdqc.conf состоит из 0 или более строк следующего формата:
опция=значениеПустые строки и строки, начинающиеся со знака решетка («#»), игнорируются. Символы пробела между опцией и значением не допускаются.
min=N0,N1,N2,N3,N4 (min=disabled,24,11,8,7) — минимально допустимая длина пароля.
Примечание
max=N (max=72) — максимально допустимая длина пароля. Эта опция может быть использована для того, чтобы запретить пользователям устанавливать пароли, которые могут быть слишком длинными для некоторых системных служб. Значение 8 обрабатывается особым образом: пароли длиннее 8 символов, не отклоняются, а обрезаются до 8 символов для проверки надежности (пользователь при этом предупреждается).
passphrase=N (passphrase=3) — число слов, необходимых для ключевой фразы (значение 0 отключает поддержку парольных фраз).
match=N (match=4) — длина общей подстроки, необходимой для вывода, что пароль хотя бы частично основан на информации, найденной в символьной строке (значение 0 отключает поиск подстроки). Если найдена слабая подстрока пароль не будет отклонен; вместо этого он будет подвергаться обычным требованиям к прочности при удалении слабой подстроки. Поиск подстроки нечувствителен к регистру и может обнаружить и удалить общую подстроку, написанную в обратном направлении.
similar=permit|deny (similar=deny) — параметр similar=permit разрешает задать новый пароль, если он похож на старый (параметр similar=deny — запрещает). Пароли считаются похожими, если есть достаточно длинная общая подстрока, и при этом новый пароль с частично удаленной подстрокой будет слабым.
random=N[,only] (random=47) — размер случайно сгенерированных парольных фраз в битах (от 26 до 81) или 0, чтобы отключить эту функцию. Любая парольная фраза, которая содержит предложенную случайно сгенерированную строку, будет разрешена вне зависимости от других возможных ограничений. Значение only используется для запрета выбранных пользователем паролей.
enforce=none|users|everyone (enforce=users) — параметр enforce=users задает ограничение задания паролей в passwd на пользователей без полномочий root. Параметр enforce=everyone задает ограничение задания паролей в passwd и на пользователей, и на суперпользователя root. При значении none модуль PAM будет только предупреждать о слабых паролях.
retry=N (retry=3) — количество запросов нового пароля, если пользователь с первого раза не сможет ввести достаточно надежный пароль и повторить его ввод.
/etc/passwdqc.conf:
min=8,7,4,4,4 enforce=everyoneВ указанном примере пользователям, включая суперпользователя root, будет невозможно задать пароли:
chage.
Примечание
# apt-get install shadow-change
chage изменяет количество дней между сменой пароля и датой последнего изменения пароля.
chage [опции] логин
-d, --lastday LAST_DAY — установить последний день смены пароля в LAST_DAY на день (число дней с 1 января 1970). Дата также может быть указана в формате ГГГГ-ММ-ДД;
-E, -expiredate EXPIRE_DAYS — установить дату окончания действия учётной записи в EXPIRE_DAYS (число дней с 1 января 1970) Дата также может быть указана в формате ГГГГ-ММ-ДД. Значение -1 удаляет дату окончания действия учётной записи;
-I, --inactive INACTIVE — используется для задания количества дней «неактивности», то есть дней, когда пользователь вообще не входил в систему, после которых его учетная запись будет заблокирована. Пользователь, чья учетная запись заблокирована, должен обратиться к системному администратору, прежде чем снова сможет использовать систему. Значение -1 отключает этот режим;
-l, --list — просмотр информации о «возрасте» учётной записи пользователя;
-m, --mindays MIN_DAYS — установить минимальное число дней перед сменой пароля. Значение 0 в этом поле обозначает, что пользователь может изменять свой пароль, когда угодно;
-M, --maxdays MAX_DAYS — установить максимальное число дней перед сменой пароля. Когда сумма MAX_DAYS и LAST_DAY меньше, чем текущий день, у пользователя будет запрошен новый пароль до начала работы в системе. Эта операция может предваряться предупреждением (параметр -W). При установке значения -1, проверка действительности пароля не будет выполняться;
-W, --warndays WARN_DAYS — установить число дней до истечения срока действия пароля, начиная с которых пользователю будет выдаваться предупреждение о необходимости смены пароля.
# chage -M 5 test
# chage -l test
Последний раз пароль был изменён : мар 13, 2025
Срок действия пароля истекает : мар 18, 2025
Пароль будет деактивирован через : никогда
Срок действия учётной записи истекает : никогда
Минимальное количество дней между сменой пароля : -1
Максимальное количество дней между сменой пароля : 5
Количество дней с предупреждением перед деактивацией пароля : -1
Примечание
PASS_MAX_DAYS в файле /etc/login.defs.
Предупреждение
Предупреждение
/etc/security/opasswd, в который пользователи должны иметь доступ на чтение и запись. При этом они могут читать хэши паролей остальных пользователей. Не рекомендуется использовать на многопользовательских системах.
/etc/security/opasswd и дайте права на запись пользователям:
#install -Dm0660 -gpw_users /dev/null /etc/security/opasswd#chgrp pw_users /etc/security#chmod g+w /etc/security
/etc/pam.d/system-auth-local-only таким образом, чтобы он включал модуль pam_pwhistory после первого появления строки с паролем:
password required pam_passwdqc.so config=/etc/passwdqc.conf password required pam_pwhistory.so debug use_authtok remember=10 retry=3
/etc/security/opasswd будут храниться последние 10 паролей пользователя (содержит хэши паролей всех учетных записей пользователей) и при попытке использования пароля из этого списка будет выведена ошибка:
Password has been already used. Choose another.
enforce_for_root:
password required pam_pwhistory.so use_authtok enforce_for_root remember=10 retry=3
usermod:
# usermod -G audio,rpm,test1 test1
# usermod -l test2 test1
usermod -L test2 и usermod -U test2 соответственно временно блокируют возможность входа в систему пользователю test2 и возвращают всё на свои места.
chpasswd. На стандартный вход ей следует подавать список, каждая строка которого будет выглядеть как имя:пароль.
userdel.
userdel test2 удалит пользователя test2 из системы. Если будет дополнительно задан параметр -r, то будет уничтожен и домашний каталог пользователя. Нельзя удалить пользователя, если в данный момент он еще работает в системе.
pstree.
/etc/inittab, откуда вызываются другие программы и скрипты на определенном этапе запуска.
service и chkconfig продолжат работать в мире systemd практически без изменений. Тем не менее, в этой таблице показано как выполнить те же действия с помощью встроенных утилит systemctl.
Таблица 56.1. Команды управления службами
|
Команды Sysvinit
|
Команды Systemd
|
Примечания
|
|---|---|---|
|
service frobozz start
|
systemctl start frobozz.service
|
Используется для запуска службы (не перезагружает постоянные)
|
|
service frobozz stop
|
systemctl stop frobozz.service
|
Используется для остановки службы (не перезагружает постоянные)
|
|
service frobozz restart
|
systemctl restart frobozz.service
|
Используется для остановки и последующего запуска службы
|
|
service frobozz reload
|
systemctl reload frobozz.service
|
Если поддерживается, перезагружает файлы конфигурации без прерывания незаконченных операций
|
|
service frobozz condrestart
|
systemctl condrestart frobozz.service
|
Перезапускает службу, если она уже работает
|
|
service frobozz status
|
systemctl status frobozz.service
|
Сообщает, запущена ли уже служба
|
|
ls /etc/rc.d/init.d/
|
systemctl list-unit-files --type=service (preferred)
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
|
Используется для отображения списка служб, которые можно запустить или остановить.
Используется для отображения списка всех служб.
|
|
chkconfig frobozz on
|
systemctl enable frobozz.service
|
Включает службу во время следующей перезагрузки, или любой другой триггер
|
|
chkconfig frobozz off
|
systemctl disable frobozz.service
|
Выключает службу во время следующей перезагрузки, или любой другой триггер
|
|
chkconfig frobozz
|
systemctl is-enabled frobozz.service
|
Используется для проверки, сконфигурирована ли служба для запуска в текущем окружении
|
|
chkconfig --list
|
systemctl list-unit-files --type=service(preferred)
ls /etc/systemd/system/*.wants/
|
Выводит таблицу служб. В ней видно, на каких уровнях загрузки они (не)запускаются
|
|
chkconfig frobozz --list
|
ls /etc/systemd/system/*.wants/frobozz.service
|
Используется, для отображения на каких уровнях служба (не)запускается
|
|
chkconfig frobozz --add
|
systemctl daemon-reload
|
Используется, когда вы создаете новую службу или модифицируете любую конфигурацию
|
/var/log/journal, что исключает возможность просмотра содержимого данных файлов стандартными утилитами обработки текстовых данных. Для просмотра логов используется утилита journalctl.
journalctl с разными ключами:
journalctl -b — покажет сообщения только с текущей загрузки;
journalctl -f — покажет только последние сообщения и продолжит печатать новые записи при добавлении их в журнал.
journalctl _PID=1 — покажет сообщения первого процесса (init).
man journalctl.
/var/log/).
/etc/systemd/journald.conf. Справку по этому файлу можно получить, выполнив команду man journald.conf.
# journalctl --disk-usage
--vacuum-size. Например, удалить журналы, оставив только последние 200 Мб:
# journalctl --vacuum-size=200M
--vacuum-time. Например, удалить журналы, оставив только журналы за последний месяц:
# journalctl --vacuum-time=1months
Примечание
--vacuum-size= оказывает лишь косвенное влияние на вывод, показанный --disk-usage, поскольку последний включает активные файлы журнала, в то время как операция очистки работает только с архивными файлами журнала. Аналогично, --vacuum-time= может фактически не уменьшить количество файлов журнала ниже указанного числа, так как не удалит активные файлы журнала.
/etc/systemd/journald.conf, например:
SystemMaxUse=1G
SystemMaxFileSize=200M
MaxFileSec=20day
MaxRetentionSec=1months
Примечание
/etc/systemd/journald.conf необходимо перезапустить службу systemd-journald:
# systemctl restart systemd-journald
/var/log/ — не текстовые, они являются неполноценными журналами и представляют собой «свалку событий» для служб авторизации и учёта. Текстовую информацию о входе пользователей в систему и выходе оттуда можно получить по команде last, а узнать о тех, кто в данный момент пользуется системой, помогут команды w и who.
ps, top, vmstat), сведения об использовании дискового пространства (du, df) и сведения о работе сетевых устройств (netstat).
man (сокращение от manual). Каждая страница руководства посвящена одному объекту системы. Для того чтобы прочесть страницу руководства по программе, необходимо набрать man название_программы. К примеру, если вы хотите узнать, какие опции есть у команды date, вы можете ввести команду:
$mandate
man осуществляется командой apropos. Если вы точно не знаете, как называется необходимая вам программа, то поиск осуществляется по ключевому слову, к примеру, apropos date или при помощи ввода слова, обозначающего нужное действие, после команды man -k (например, man -k copy). Слово, характеризующее желаемое для вас действие, можно вводить и на русском языке. При наличии русского перевода страниц руководства man результаты поиска будут выведены на запрашиваемом языке.
man запускает программу постраничного просмотра текстов. Страницы перелистывают пробелом, для выхода из режима чтения описания команд man необходимо нажать на клавиатуре q. Команда man man выдаёт справку по пользованию самой командой man.
man по умолчанию будет отображать их на русском языке.
info info. Команда info, введённая без параметров, предлагает пользователю список всех документов info, установленных в системе.
/usr/share/doc — место хранения разнообразной документации.
/usr/share/doc/имя_пакета. Например, документация к пакету file-5.45 находится в /usr/share/doc/file-5.45. Для получения полного списка файлов документации, относящихся к пакету, воспользуйтесь командой rpm -qd имя_установленного_пакета.
README, FAQ, TODO, СhangeLog и другие. В файле README содержится основная информация о программе — имя и контактные данные авторов, назначение, полезные советы и пр. FAQ содержит ответы на часто задаваемые вопросы; этот файл стоит прочитать в первую очередь, если у вас возникли проблемы или вопросы по использованию программы, поскольку большинство проблем и сложностей типичны, вполне вероятно, что в FAQ вы тут же найдёте готовое решение. В файле TODO записаны планы разработчиков на реализацию той или иной функциональности. В файле СhangeLog записана история изменений в программе от версии к версии.
rpm -qi имя_установленного_пакета. В информационном заголовке соответствующего пакета, среди прочей информации, будет выведена искомая ссылка.