Редакция январь, 2026
Аннотация
Примечание
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-one-11.0-x86_64.iso of=/dev/sdc bs=1M status=progress; sync
# pv /iso/alt-virtualization-one-11.0-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-one-11.0-x86_64.isoof=/dev/rdiskX bs=10Msync
alt-virtualization-one-11.0-x86_64.iso — ISO-образ диска, а /dev/rdiskX — flash-диск.
diskutil list
Предупреждение
$ du -b alt-virtualization-one-11.0-x86_64.iso | cut -f1
2760607744
$ md5sum alt-virtualization-one-11.0-x86_64.iso
e182bf50725dbdef572b9a61af83367e alt-virtualization-one-11.0-x86_64.iso
# head -c 2760607744 /dev/sdd | md5sum
e182bf50725dbdef572b9a61af83367e
где размер после -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 ONE Edition 11.0 (Nimbostratus)! Hostname: one IP: 192.168.0.185 one 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
├─one-swap 253:0 0 2G 0 lvm [SWAP]
└─one-root 253:1 0 14G 0 lvm /
sr0 11:0 1 2,6G 0 rom
Примечание


Примечание
Примечание
Примечание
# btrfs subvolume list /
ID 256 gen 23 top level 5 path root
ID 257 gen 15 top level 256 path var/lib/machines

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


/etc/fstab).

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


Примечание


Примечание

Важно


#apt-get update#apt-get dist-upgrade#update-kernel#apt-get clean#reboot
Примечание
$ su -
или зарегистрировавшись в системе (например, на второй консоли Ctrl+Alt+F2) под именем 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 без параметров. Программа попытается переустановить загрузчик в автоматическом режиме.
Содержание

Важно



Примечание
Содержание
Таблица 24.1. Минимальные требования к серверу управления
|
Ресурс
|
Минимальное значение
|
|---|---|
|
Оперативная память
|
2 ГБ
|
|
CPU
|
1 CPU (2 ядра)
|
|
Диск
|
100 ГБ
|
|
Сеть
|
2 сетевых интерфейса
|
CPU и VCPU:
CPU определяет количество физических ядер, выделяемых ВМ;
VCPU — количество виртуальных процессоров, видимых гостевой ОС.
Важно
Примечание
/var/lib/one/.one/one_auth со случайно сгенерированным паролем. Необходимо изменить этот пароль перед первым запуском OpenNebula:
# passwd oneadmin
/var/lib/one/.one/one_auth. Он должен содержать следующее: oneadmin:<пароль>. Например:
$ echo "oneadmin:mypassword" > ~/.one/one_auth
Примечание
# mysql_secure_installation
$mysql -u root -pEnter password: MariaDB >CREATE USER 'oneadmin'@'localhost' IDENTIFIED BY '<пароль>';Query OK, 0 rows affected (0,007 sec) MariaDB >GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin'@'localhost';Query OK, 0 rows affected (0,004 sec) MariaDB >SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;Query OK, 0 rows affected (0.001 sec) MariaDB >FLUSH PRIVILEGES;Query OK, 0 rows affected (0,001 sec) MariaDB >exit
/etc/one/oned.conf закомментируйте секцию sqlite, раскомментируйте и настройте секцию MySQL:
#DB = [ BACKEND = "sqlite",
# TIMEOUT = 2500 ]
# Sample configuration for MySQL
DB = [ BACKEND = "mysql",
SERVER = "localhost",
PORT = 0,
USER = "oneadmin",
PASSWD = "<пароль>",
DB_NAME = "opennebula",
CONNECTIONS = 25,
COMPARE_BINARY = "no" ]
где:
SERVER — IP-адрес/имя машины, на которой запущен сервер MySQL;
PORT — порт для подключения к СУБД. Значение 0 означает использование порта по умолчанию (3306 для MySQL/MariaDB);
USER — имя пользователя MySQL;
PASSWD — пароль MySQL;
DB_NAME — имя базы данных MySQL, которую будет использовать OpenNebula;
CONNECTIONS — максимальное количество подключений;
COMPARE_BINARY — включает учёт регистра при сравнении имён (используется оператор BINARY в SQL-запросах).
#systemctl enable --now opennebula#systemctl enable --now opennebula-sunstone
$ oneuser show
USER 0 INFORMATION
ID : 0
NAME : oneadmin
GROUP : oneadmin
PASSWORD : 3bc15c8aae3e4124dd409035f32ea2fd6835efc9
AUTH_DRIVER : core
ENABLED : Yes
USER TEMPLATE
TOKEN_PASSWORD="ec21d27e2fe4f9ed08a396cbd47b08b8e0a4ca3c"
VMS USAGE & QUOTAS
VMS USAGE & QUOTAS - RUNNING
DATASTORE USAGE & QUOTAS
NETWORK USAGE & QUOTAS
IMAGE USAGE & QUOTAS
http://<IP-адрес_сервера>:9869
Если всё в порядке, будет предложена страница входа.
/var/lib/one/.one/one_auth):


Примечание


Важно
/var/lib/one/.ssh/authorized_keys на всех узлах инфраструктуры.
/var/lib/one/.ssh/id_rsa и /var/lib/one/.ssh/id_rsa.pub), а также открытый ключ добавляется в файл /var/lib/one/.ssh/authorized_keys.
Примечание
$ ssh-keygen -t rsa -f /var/lib/one/.ssh/id_rsa -N ""
known_hosts), чтобы все взаимодействующие стороны могли идентифицировать друг друга без запроса подтверждения.
/var/lib/one/.ssh/known_hosts. Для его создания и обновления используется команда ssh-keyscan, например:
$ ssh-keyscan <сервер_управления> <узел1> <узел2> <узел3> ... >> /var/lib/one/.ssh/known_hosts
Команду следует выполнить от имени пользователя oneadmin на сервере управления, после чего полученный файл необходимо скопировать на все узлы гипервизора.
Примечание
ssh-keyscan необходимо выполнять как для имён узлов, так и для их IP-адресов:
$ ssh-keyscan <IP-узел1> <hostname-узел1> ... >> /var/lib/one/.ssh/known_hosts
Например:
$ ssh-keyscan 192.168.0.185 server 192.168.0.190 host-01 >> /var/lib/one/.ssh/known_hosts
Важно
known_hosts необходимо обновлять и распространять заново каждый раз, когда:
known_hosts, созданный на предыдущем шаге;
#Распространение файлаsu - oneadmin$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <узел1>$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <узел2>$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <узел3>...
known_hosts:
$scp -p /var/lib/one/.ssh/known_hosts <узел1>:/var/lib/one/.ssh/$scp -p /var/lib/one/.ssh/known_hosts <узел2>:/var/lib/one/.ssh/$scp -p /var/lib/one/.ssh/known_hosts <узел3>:/var/lib/one/.ssh/...
Примечание
# от сервера управления к самому серверу управления ssh <сервер_управления> exit # от сервера управления к узлу1, обратно на сервер управления и к другим узлам ssh <узел1> ssh <сервер_управления> exit ssh <узел2> exit ssh <узел3> exit exitАналогичную проверку следует выполнить для всех узлов гипервизора.
Примечание

Примечание
# apt-get install opennebula-node-kvm
Затем включите и запустите службу libvirtd:
# systemctl enable --now libvirtd
# passwd oneadmin
Важно

Примечание
# apt-get install opennebula-node-lxc
# passwd oneadmin
onehost);
Примечание
Примечание
/var/log/one/oned.log. Проблема может быть связана с подключением по SSH.






onehost предоставляет полный контроль над узлами OpenNebula. Описание всех доступных опций утилиты onehost можно получить, выполнив команду:
$ man onehost
$ onehost create host-01 --im kvm --vm kvm
ID: 0
где:
--im — драйвер Information Manager;
--vm — драйвер Virtual Machine Manager.
$ onehost create host-02 --im lxc --vm lxc
ID: 1
$ onehost list
ID NAME CLUSTER TVM ALLOCATED_CPU ALLOCATED_MEM STAT
1 host-02 default 0 0 / 100 (0%) 0K / 945M (0%) on
0 host-01 default 0 0 / 10000 (0%) 0K / 7.6G (0%) on
$onehost delete 1# с указанием ID $onehost delete host-02# с указанием имени
$onehost disable host-01// деактивировать (новые ВМ не запускаются) $onehost enable host-01// активировать $onehost offline host-01// перевести в автономный режим
disable и offline не останавливают и не мигрируют уже запущенные ВМ. Чтобы безопасно вывести узел из эксплуатации, следует использовать команду flush:
$ onehost flush host-01
Эта команда мигрирует все активные ВМ на другие узлы и отключает указанный узел.
flush можно настроить в файле конфигурации CLI /etc/one/cli/onehost.yaml:
:default_actions: - :flush: resched # или delete-recreateгде:
resched — перепланирование (миграция);
delete-recreate — остановка и пересоздание ВМ на другом узле.
$ onehost show host-01
Вывод данной команды содержит:
Таблица 27.1. Режимы работы
|
Режим
|
Мониторинг
|
Запуск ВМ (ручной)
|
Запуск ВМ (через планировщик)
|
Описание
|
|---|---|---|---|---|
|
ENABLED (on)
|
Да
|
Да
|
Да
|
Узел полностью рабочий
|
|
DISABLED (dsbl)
|
Да
|
Да
|
Нет
|
Узел отключен от планировщика (для обслуживания), но можно запускать ВМ вручную
|
|
OFFLINE (off)
|
Нет
|
Нет
|
Нет
|
Узел полностью выключен из системы
|
|
ERROR (err)
|
Да
|
Да
|
Нет
|
Ошибка мониторинга
|
|
RETRY (retry)
|
Да
|
Да
|
Нет
|
Повторная попытка мониторинга после ошибки
|
onevnet);
Примечание
onevnet доступно в справочном руководстве:
$ man onevnet
$ onevnet list
ID USER GROUP NAME CLUSTERS BRIDGE LEASES
2 oneadmin oneadmin VirtNetwork 0 onebr2 0
0 oneadmin oneadmin LAN 0 vmbr0 1
$ onevnet show 0

VN_MAD в шаблоне виртуальной сети.
dummy — без настройки моста (только для тестирования);
bridge () — стандартный мост без фильтрации трафика;
fw () — мост с применением правил групп безопасности с использованием iptables.
Примечание
/var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf (см. табл. Параметры конфигурации).
Таблица 28.1. Параметры конфигурации
|
Параметр
|
Описание
|
|---|---|
:ipset_maxelem
|
Максимальное число записей в IP-наборах (для групп безопасности)
|
:keep_empty_bridge
|
Сохранять мосты без подключённых интерфейсов (true/false)
|
:ip_bridge_conf
|
Хеш параметров, передаваемых команде
ip при создании моста (ip link add <bridge> type bridge ...)
|
Примечание
$ onehost sync -f
BRIDGE;
Важно
PHYDEV.
Примечание
BRIDGE, отсутствует, OpenNebula не создаёт его автоматически, кроме случаев, когда задан PHYDEV. В этом случае мост будет создан при первом запуске ВМ.
net-bridged.conf:
NAME = "VirtNetwork"
VN_MAD = "bridge"
BRIDGE = "vmbr0"
PHYDEV = "enp3s0"
AR=[
TYPE = "IP4",
IP = "192.168.0.140",
SIZE = "5"
]
$ onevnet create net-bridged.conf
ID: 1
Таблица 28.2. Параметры виртуальной сети в режиме Bridged
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
|
NAME
|
Имя виртуальной сети
|
Да
|
|
VN_MAD
|
Режим:
|
Да
|
|
BRIDGE
|
Имя сетевого моста на узлах виртуализации
|
Нет (кроме dummy)
|
|
PHYDEV
|
Имя физического сетевого устройства на узле виртуализации, подключаемого к мосту (не применяется в режиме dummy)
|
Нет
|
|
AR
|
Диапазон адресов, доступных в виртуальной сети
|
Нет
|



VLAN_TAGGED_ID. Он задаёт диапазон VLAN, разрешённых для трафика ВМ (поддерживаются списки тегов, разделённые запятыми, и диапазоны значений). Пример:
VLAN_TAGGED_ID = "100,105-107"В этом случае ВМ будет разрешено использовать VLAN 100, 105, 106 и 107.
Примечание
PHYDEV) подключается к мосту через VLAN-подынтерфейс (например, enp3s0.100);
Важно
PHYDEV, должен быть настроен в режиме trunk и разрешать передачу соответствующих VLAN.
VLAN_ID.
/etc/one/oned.conf:
VLAN_IDS = [
START = "2",
RESERVED = "0, 1, 4095"
]
где:
START — начальный VLAN ID для автоматического назначения;
RESERVED — список или диапазоны VLAN ID, которые не будут использоваться.
/var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf (см. табл. Параметры конфигурации).
Таблица 28.3. Параметры конфигурации
|
Параметр
|
Описание
|
|---|---|
:validate_vlan_id
|
Проверять, что к мосту не подключены другие VLAN (true/false)
|
:keep_empty_bridge
|
Сохранять мосты без подключённых интерфейсов (true/false)
|
:ip_bridge_conf
|
Хеш параметров, передаваемых команде
ip при создании моста (ip link add <bridge> type bridge …)
|
:ip_link_conf
|
Хеш параметров, передаваемых команде
ip при создании VLAN-интерфейса (ip link add)
|
:ip_bridge_conf:
:stp_state: on
:ip_link_conf:
:udp6zerocsumrx:
:tos: 3
Примечание
$ onehost sync -f
net-vlan.conf:
NAME = "VLAN"
VN_MAD = "802.1Q"
BRIDGE = "vmbr1"
PHYDEV = "enp3s0"
AUTOMATIC_VLAN_ID = "Yes"
AR=[
TYPE = "IP4",
IP = "192.168.0.150",
SIZE = "5"
]
$ onevnet create net-vlan.conf
ID: 6
Таблица 28.4. Параметры виртуальной сети в режиме 802.1Q
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
|
NAME
|
Имя виртуальной сети
|
Да
|
|
VN_MAD
|
802.1Q
|
Да
|
|
BRIDGE
|
Имя сетевого моста (по умолчанию onebr<net_id> или onebr.<vlan_id>)
|
Нет
|
|
PHYDEV
|
Имя физического сетевого устройства на узле виртуализации
|
Да
|
|
VLAN_ID
|
Идентификатор VLAN (если не указан и AUTOMATIC_VLAN_ID = "YES", генерируется автоматически)
|
Да (если AUTOMATIC_VLAN_ID = "NO")
|
|
AUTOMATIC_VLAN_ID
|
Автоматически генерировать VLAN_ID
|
Да (если не указан VLAN_ID)
|
|
MTU
|
MTU для тегированного интерфейса и моста
|
Нет
|
|
AR
|
Диапазон адресов, доступных в виртуальной сети
|
Нет
|

CVLANS:
VLAN_ID);
CVLANS, инкапсулируется во внешний VLAN;
Примечание
Таблица 28.5. Параметры виртуальной сети в режиме Q-in-Q
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
VLAN_ID
|
Внешний (сервисный) VLAN ID
|
Да (если AUTOMATIC_VLAN_ID = "NO")
|
CVLANS
|
Список разрешённых клиентских VLAN (через запятую, поддерживаются диапазоны)
|
Да
|
NAME = "qinq_net" VN_MAD = "802.1Q" PHYDEV = eth0 VLAN_ID = 50 # Идентификатор сервисного VLAN CVLANS = "101,103,110-113" # Список клиентских VLAN
Примечание
CVLANS можно изменять динамически — правила фильтрации будут обновлены без перезапуска ВМ.
CVLANS:
Примечание
Примечание
IP_LINK_CONF.
VLAN_ID.
Примечание
PHYDEV), используемый для передачи трафика, должен иметь назначенный IP-адрес.
PHYDEV — это физический интерфейс, а VXLAN_ID — идентификатор VXLAN (VNI). К этому мосту подключаются сетевые интерфейсы.
Примечание
# ip link set en0s0f0p0 alias vx
и затем использовать устройство vx в качестве PHYDEV.
net.ipv4.igmp_max_memberships. Для постоянного увеличения, например до 150, добавьте в файл /etc/sysctl.conf:
net.ipv4.igmp_max_memberships=150и примените настройки:
# sysctl -p
/etc/one/oned.conf:
VXLAN_IDS = [
START = "2"
]
/var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf (см. табл. Параметры конфигурации).
Таблица 28.6. Параметры конфигурации
|
Параметр
|
Описание
|
|---|---|
:vxlan_mc
|
Базовый multicast-адрес (например, "239.0.0.0"). Фактический адрес вычисляется как
vxlan_mc + VNI
|
:vxlan_ttl
|
TTL для multicast-трафика (должен быть >1 при маршрутизации)
|
:validate_vlan_id
|
Проверять конфликты VLAN (true/false)
|
:keep_empty_bridge
|
Сохранять мосты без ВМ (true/false)
|
:ip_bridge_conf
|
Хеш параметров, передаваемых команде
ip при создании моста (ip link add <bridge> type bridge …)
|
:ip_link_conf
|
Хеш параметров, передаваемых команде
ip при создании VXLAN-интерфейса (ip link add)
|
:ip_link_conf:
:udp6zerocsumrx:
:tos: 3
Примечание
$ onehost sync -f
net-vxlan.conf:
NAME = "vxlan"
VN_MAD = "vxlan"
BRIDGE = "vxlan50"
PHYDEV = "enp3s0"
VLAN_ID = 50
AR=[
TYPE = "IP4",
IP = "192.168.0.150",
SIZE = "5"
]
$ onevnet create net-vxlan.conf
ID: 7
Таблица 28.7. Параметры виртуальной сети в режиме VXLAN
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
|
NAME
|
Имя виртуальной сети
|
Да
|
|
VN_MAD
|
vxlan
|
Да
|
|
PHYDEV
|
Имя физического сетевого устройства
|
Нет
|
|
BRIDGE
|
Имя сетевого моста (по умолчанию onebr<net_id> или onebr.<vlan_id>)
|
Нет
|
|
VLAN_ID
|
Идентификатор VXLAN (если не указан и AUTOMATIC_VLAN_ID = "YES", генерируется автоматически)
|
Да (если AUTOMATIC_VLAN_ID = "NO")
|
|
AUTOMATIC_VLAN_ID
|
Автоматически генерировать VLAN_ID
|
Да (если не указан VLAN_ID)
|
|
MTU
|
MTU для VXLAN-интерфейса и моста
|
Нет
|
|
VXLAN_MODE
|
Режим работы: multicast (по умолчанию) или evpn
|
Нет
|
|
VXLAN_TEP
|
Тип адреса конечной точки туннеля (только для evpn): dev или local_ip
|
Нет
|
|
VXLAN_MC
|
Базовый multicast-адрес (MC = vxlan_mc + vlan_id)
|
Нет
|
|
IP_LINK_CONF
|
Параметры команды
ip, специфичные для данной сети. Формат: option=value (IP_LINK_CONF="option1=value1,option2=,option3=value3,...")
|
Нет
|
|
AR
|
Диапазон адресов виртуальной сети
|
Нет
|
Примечание
VXLAN_MODE, VXLAN_TEP и VXLAN_MC можно задать глобально в файле /var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf. Для переопределения на уровне отдельной сети используйте IP_LINK_CONF, например:
IP_LINK_CONF = "dstport=4789,ttl=16"

Примечание
PHYDEV.
Примечание
# apt-get install openvswitch
# systemctl enable --now openvswitch.service
VLAN_ID.
/etc/one/oned.conf:
VLAN_IDS = [
START = "2",
RESERVED = "0, 1, 4095"
]
где
START — начальный ID для автоматического назначения;
RESERVED — список или диапазоны ID, которые не будут использоваться (например, 100:200).
/var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf (см. табл. Параметры конфигурации).
Таблица 28.8. Параметры конфигурации
|
Параметр
|
Описание
|
|---|---|
:arp_cache_poisoning
|
Включить защиту от ARP-spoofing (работает только при активных правилах IP/MAC anti-spoofing) (true/false)
|
:keep_empty_bridge
|
Сохранять мосты без ВМ (true/false)
|
:ovs_bridge_conf
|
Хеш параметров для создания моста Open vSwitch (
ovs-vsctl add-br)
|
Примечание
$ onehost sync -f
net-ovs.conf:
NAME = "OVS"
VN_MAD = "ovswitch"
BRIDGE = "vmbr1"
AR=[
TYPE = "IP4",
IP = "192.168.0.150",
SIZE = "5"
]
$ onevnet create net-ovs.conf
ID: 8
Таблица 28.9. Параметры виртуальной сети в режиме Open vSwitch
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
|
NAME
|
Имя виртуальной сети
|
Да
|
|
VN_MAD
|
ovswitch
|
Да
|
|
BRIDGE
|
Имя моста Open vSwitch
|
Нет
|
|
PHYDEV
|
Физический интерфейс для привязки (обязателен при использовании VLAN)
|
Нет (если не используются VLAN)
|
|
VLAN_ID
|
Идентификатор VLAN (если не указан и AUTOMATIC_VLAN_ID = "YES", генерируется автоматически)
|
Нет
|
|
AUTOMATIC_VLAN_ID
|
Автоматически генерировать VLAN_ID (игнорируется, если задан VLAN_ID)
|
Нет
|
|
MTU
|
MTU для моста Open vSwitch
|
Нет
|
|
AR
|
Диапазон адресов виртуальной сети
|
Нет
|
Примечание
PHYDEV не указан, мост создаётся изолированным и не имеет подключения к физической сети.

VLAN_TAGGED_ID в шаблоне сети или ВМ:
VLAN_TAGGED_ID = "1,10,30,32,100-200"Это настроит порт Open vSwitch в режиме trunk, разрешающем передачу указанных VLAN.
OUTER_VLAN_ID;
VLAN_ID) на портах ВМ.
Важно
net-ovsx.conf:
NAME = "private"
VN_MAD = "ovswitch_vxlan"
PHYDEV = "eth0"
BRIDGE = "ovsvxbr0.10000"
OUTER_VLAN_ID = 10000
VLAN_ID = 50
AR=[
TYPE = "IP4",
IP = "192.168.0.150",
SIZE = "5"
]
$ onevnet create net-ovsx.conf
ID: 11
Таблица 28.10. Параметры виртуальной сети в режиме Open vSwitch VXLAN
|
Параметр
|
Значение
|
Обязательный
|
|---|---|---|
|
NAME
|
Имя виртуальной сети
|
Да
|
|
VN_MAD
|
ovswitch_vxlan
|
Да
|
|
BRIDGE
|
Имя моста Open vSwitch
|
Нет
|
|
PHYDEV
|
Имя физического сетевого устройства
|
Да
|
|
OUTER_VLAN_ID
|
Идентификатор внешней сети VXLAN (если не указан и AUTOMATIC_OUTER_VLAN_ID = "YES", генерируется автоматически)
|
Да (если AUTOMATIC_OUTER_VLAN_ID = "NO")
|
|
AUTOMATIC_OUTER_VLAN_ID
|
Генерировать OUTER_VLAN_ID автоматически (игнорируется, если задан вручную)
|
Да (если не указан OUTER_VLAN_ID)
|
|
VLAN_ID
|
Внутренний VLAN ID 802.1Q (если не указан и AUTOMATIC_VLAN_ID = "YES", генерируется автоматически)
|
Нет
|
|
AUTOMATIC_VLAN_ID
|
Автоматически генерировать VLAN_ID (игнорируется, если определен VLAN_ID)
|
Нет
|
|
MTU
|
MTU для VXLAN-интерфейса и моста
|
Нет
|
|
AR
|
Диапазон адресов виртуальной сети
|
Нет
|


/var/lib/one/datastores/<ID_хранилища>). Кроме того, для каждой запущенной ВМ в системном хранилище создаётся каталог /var/lib/one/datastores/<ID_хранилища>/<ID_ВМ>. В этих каталогах размещаются диски ВМ и дополнительные файлы, например контрольные точки и снимки.
/var/lib/one/datastores |-- 0/ | |-- 0/ | | |-- disk.0 | | `-- disk.1 | |-- 2/ | | `-- disk.0 | `-- 7/ | |-- checkpoint | `-- disk.0 `-- 1 |-- 19217fdaaa715b04f1c740557826514b |-- 99f93bd825f8387144356143dc69787d `-- da8023daf074d0de3c1204e562b8d8d2
Примечание
/var/lib/one/datastores можно изменить в файле /etc/one/oned.conf с помощью параметра DATASTORE_LOCATION.
ssh использует локальные файловые системы узлов для размещения образов работающих ВМ. Все файловые операции выполняются локально, однако образы копируются на узлы по SSH при каждом запуске ВМ. Это может быть ресурсоёмкой операцией, особенно в крупных кластерах.

shared предполагает, что хранилище данных смонтировано на всех узлах кластера (узле управления и вычислительных узлах). Обычно это реализуется с помощью общей файловой системы, например NFS или GlusterFS.
ln, cp и т. д.) выполняются локально на узле. Такой режим передачи, как правило, сокращает время развёртывания ВМ и обеспечивает возможность live-migration, однако может стать узким местом инфраструктуры и негативно повлиять на производительность ВМ при высоких дисковых нагрузках.
disk.i) копируются или связываются в соответствующем каталоге системного хранилища. Эти операции всегда выполняются на целевом узле.

lvm предназначен для работы с SAN-сетями (iSCSI, Fibre Channel). Один и тот же LUN может быть экспортирован на все узлы кластера, при этом виртуальные машины работают непосредственно с SAN.
/var/lib/one/datastores/<ID_хранилища>), однако при запуске ВМ они преобразуются в логические тома (LV) на узле. ВМ запускаются непосредственно на этих логических томах.

/var/lib/one/datastores/<ID_хранилища>) и драйвер передачи ssh.
onedatastore);
Примечание
onedatastore доступно в справочном руководстве:
$ man onedatastore
$ onedatastore list
ID NAME SIZE AVA CLUSTERS IMAGES TYPE DS TM STAT
2 files 195.8G 94% 0 0 fil fs ssh on
1 default 195.8G 94% 0 2 img fs ssh on
0 system - - 0 0 sys - ssh on
$ onedatastore show default
DATASTORE 1 INFORMATION
ID : 1
NAME : default
USER : oneadmin
GROUP : oneadmin
CLUSTERS : 0
TYPE : IMAGE
DS_MAD : fs
TM_MAD : ssh
BASE PATH : /var/lib/one//datastores/1
DISK_TYPE : FILE
STATE : READY
DATASTORE CAPACITY
TOTAL: : 195.8G
FREE: : 183.3G
USED: : 2.5G
LIMIT: : -
PERMISSIONS
OWNER : um-
GROUP : u--
OTHER : ---
DATASTORE TEMPLATE
ALLOW_ORPHANS="YES"
CLONE_TARGET="SYSTEM"
DISK_TYPE="FILE"
DS_MAD="fs"
LN_TARGET="SYSTEM"
RESTRICTED_DIRS="/"
SAFE_DIRS="/var/tmp"
TM_MAD="ssh"
TYPE="IMAGE_DS"
IMAGES
0
1
2
17
$ onedatastore show system
DATASTORE 0 INFORMATION
ID : 0
NAME : system
USER : oneadmin
GROUP : oneadmin
CLUSTERS : 0
TYPE : SYSTEM
DS_MAD : -
TM_MAD : ssh
BASE PATH : /var/lib/one//datastores/0
DISK_TYPE : FILE
STATE : READY
DATASTORE CAPACITY
TOTAL: : -
FREE: : -
USED: : -
LIMIT: : -
PERMISSIONS
OWNER : um-
GROUP : u--
OTHER : ---
DATASTORE TEMPLATE
ALLOW_ORPHANS="YES"
DISK_TYPE="FILE"
DS_MIGRATE="YES"
RESTRICTED_DIRS="/"
SAFE_DIRS="/var/tmp"
SHARED="NO"
TM_MAD="ssh"
TYPE="SYSTEM_DS"
IMAGES
INFORMATION — базовая информация (имя, путь, тип хранилища) и используемые драйверы (DS_MAD и TM_MAD);
CAPACITY — показатели использования дискового пространства (общее, свободное и использованное);
TEMPLATE — атрибуты хранилища;
IMAGES — список образов, размещённых в хранилище.
DS_MAD="fs") и SSH для передачи (TM_MAD="ssh"). Для системного хранилища указывается только драйвер передачи (TM_MAD), а показатели использования (CAPACITY) не отображаются, поскольку драйвер ssh использует локальное хранилище каждого узла.
Примечание
$ onehost show <ID_узла>
Таблица 29.1. Общие атрибуты хранилищ
|
Атрибут
|
Описание
|
|---|---|
Description
|
Произвольное описание
|
RESTRICTED_DIRS
|
Каталоги, запрещённые для размещения образов (через пробел)
|
SAFE_DIRS
|
Исключения из
RESTRICTED_DIRS (через пробел)
|
NO_DECOMPRESS
|
Не распаковывать архивы при регистрации
|
LIMIT_TRANSFER_BW
|
Ограничение скорости загрузки (в байтах/с; допускаются суффиксы K, M, G)
|
DATASTORE_CAPACITY_CHECK
|
Проверять свободное место перед созданием образа
|
LIMIT_MB
|
Максимальный размер хранилища (в МБ)
|
BRIDGE_LIST
|
Список мостов, имеющих доступ к хранилищу (через пробел)
|
STAGING_DIR
|
Каталог для временных файлов (по умолчанию
/var/tmp)
|
DRIVER
|
Драйвер работы с образами (переопределяет настройки образа)
|
COMPATIBLE_SYS_DS
|
Только для хранилищ образов. Список совместимых системных хранилищ (например, «0,100»)
|
CONTEXT_DISK_TYPE
|
Тип диска для контекстуализации: BLOCK или FILE (по умолчанию)
|
Примечание
BRIDGE_LIST на узлах должны быть установлены инструменты доступа к хранилищу и утилиты виртуализации (например, qemu-img).
$onedatastore disable system$onedatastore show systemDATASTORE 0 INFORMATION ID : 0 NAME : system ... STATE : DISABLED ...

/var/lib/one/datastores/ для:
/var/lib/one/datastores/ для хранения дисков ВМ, запущенных на данном узле.
/etc/hosts);
ssh необходимо зарегистрировать два хранилища: системное и хранилище образов.
systemds.conf:
NAME = local_system TM_MAD = ssh TYPE = SYSTEM_DS
$ onedatastore create systemds.conf
ID: 101
NAME — название хранилища;
TYPE — SYSTEM_DS;
TM_MAD — ssh (режим передачи данных).

imageds.conf:
NAME = local_image TM_MAD = ssh TYPE = IMAGE_DS DS_MAD = fs
$ onedatastore create imageds.conf
ID: 102
NAME — название хранилища;
DS_MAD — fs (файловый драйвер хранилища данных);
TYPE — IMAGE_DS;
TM_MAD — ssh (режим передачи данных);
CONVERT — yes (по умолчанию) или no; при значении yes формат образа будет преобразован в формат, поддерживаемый драйвером.
Примечание
TM_MAD), в данном случае — ssh.
ssh могут быть заданы следующие дополнительные параметры:
DD_BLOCK_SIZE — размер блока для операций dd (по умолчанию: 64 КБ). Может быть задан в файле /var/lib/one/remotes/etc/datastore/fs/fs.conf;
SUPPORTED_FS — список файловых систем, поддерживаемых для создания форматированных блоков данных (через запятую). Может быть установлен в файле /var/lib/one/remotes/etc/datastore/datastore.conf;
FS_OPTS_<FS> — параметры создания файловой системы для форматированных блоков данных. Указывается отдельно для каждого типа файловой системы в файле /var/lib/one/remotes/etc/datastore/datastore.conf;
SPARSE — если установлено в NO, файлы будут занимать всё выделенное пространство (неразрежённые файлы). Требует установки параметра QCOW2_STANDALONE="YES" в системном хранилище.
Примечание
TM_MAD=ssh:
qemu-img;
dd или tar;
QCOW2_OPTIONS игнорируется.
Примечание
/var/lib/one/datastores/<ID_хранилища>. Если все хранилища данных относятся к одному типу, допускается монтирование всего каталога /var/lib/one/datastores/.
Примечание
Примечание
soft, intr, rsize=32768, wsize=32768При использовании данной конфигурации libvirt/kvm доступ к файлам образов осуществляется от имени пользователя oneadmin.
no_root_squash на NFS-сервере:
/export *(rw,sync,no_root_squash)
/var/lib/one/datastores/<ID_хранилища>.
systemds.conf:
NAME = nfs_system TM_MAD = shared TYPE = SYSTEM_DS
$ onedatastore create systemds.conf
ID: 103
NAME — название хранилища;
TYPE — SYSTEM_DS;
TM_MAD — shared (режим общей файловой системы);
BRIDGE_LIST — список узлов с подключённым системным хранилищем (через пробел).
imageds.conf:
NAME = nfs_images DS_MAD = fs TM_MAD = shared TYPE = IMAGE_DS
$ onedatastore create imageds.conf
ID: 104
NAME — название хранилища;
DS_MAD — fs (файловый драйвер);
TYPE — IMAGE_DS;
TM_MAD — shared (режим общей файловой системы);
CONVERT — yes (по умолчанию) или no; при yes формат образа будет преобразован в формат, поддерживаемый драйвером.
Примечание
TM_MAD_SYSTEM будет установлен после выбора хранилища данных.
Примечание
TM_MAD).
/var/lib/one/datastores/ будут созданы каталоги 103 и 104. На узлах виртуализации эти каталоги не создаются автоматически, поэтому их необходимо создать вручную:
$mkdir /var/lib/one/datastores/103$mkdir /var/lib/one/datastores/104
/var/lib/one/datastores/<ID_хранилища> на узле управления и на узлах виртуализации необходимо смонтировать удалённый NFS-каталог. Например:
# mount -t nfs 192.168.0.157:/export/storage /var/lib/one/datastores/104
Для автоматического монтирования при загрузке системы добавьте запись в файл /etc/fstab:
192.168.0.157:/export/storage /var/lib/one/datastores/104 nfs intr,soft,nolock,_netdev,x-systemd.automount 0 0
Примечание
# systemctl enable --now nfs-client.target
Список экспортируемых ресурсов NFS-сервера можно получить командой:
# showmount -e 192.168.0.157
Важно
/etc/fstab и перезагрузки системы необходимо назначить владельца каталога хранилища:
# chown oneadmin: /var/lib/one/datastores/104
QCOW2_OPTIONS — дополнительные параметры для qemu-img create (например, -o cluster_size=2M). Задаются в файле /etc/one/tmrc;
DD_BLOCK_SIZE — размер блока для операций dd (по умолчанию 64 КБ). Может быть задан в файле /var/lib/one/remotes/etc/datastore/fs/fs.conf;
SUPPORTED_FS — список поддерживаемых файловых систем (через запятую). Может быть установлен в файле /var/lib/one/remotes/etc/datastore/datastore.conf;
FS_OPTS_<FS> — параметры создания файловой системы для конкретного типа ФС. Указывается отдельно для каждого типа файловой системы в файле /var/lib/one/remotes/etc/datastore/datastore.conf;
SPARSE — если установлено в NO, файлы будут занимать всё выделенное пространство (неразрежённые файлы). Требует установки параметра QCOW2_STANDALONE="YES" в системном хранилище;
QCOW2_STANDALONE — если установлено в YES, создаётся автономный qcow2-диск без backing file.
Примечание
SUPPORTED_FS убедитесь, что команда mkfs.<fs_name> доступна на узле управления и гипервизорах.
TM_MAD=shared);
TM_MAD=ssh).
TM_MAD=shared);
TM_MAD=ssh).
TM_MAD_SYSTEM="ssh"
Примечание
fs_lvm;
fs_lvm_ssh.
BRIDGE_LIST;
/var/lib/one/datastores/<ID_хранилища>.
Примечание
/etc/lvm/lvm.conf необходимо установить:
use_lvmetad = 0и отключить службу, если она запущена:
# systemctl disable --now lvm2-lvmetad.service
# gpasswd -a oneadmin disk
Примечание
# lvchange -ay <DEVICE>
Также можно использовать скрипт активации /var/tmp/one/tm/fs_lvm/activate, доступный в удалённых скриптах OpenNebula.
/var/lib/one/datastores/<ID_хранилища>. Необходимо убедиться, что на локальном хранилище достаточно свободного пространства для этих файлов.
Примечание
systemds.conf:
NAME = lvm-system TM_MAD = fs_lvm_ssh TYPE = SYSTEM_DS BRIDGE_LIST = "host-01 host-02" DISK_TYPE = BLOCK
$ onedatastore create systemds.conf
ID: 105
NAME — название хранилища;
TYPE — SYSTEM_DS;
TM_MAD — fs_lvm (режим NFS), fs_lvm_ssh (режим SSH);
DISK_TYPE — BLOCK. Используется для временных (volatile) дисков;
BRIDGE_LIST — список узлов, имеющих доступ к логическим томам (не требуется, если сервер управления имеет прямой доступ к LUN).
imageds.conf:
NAME = lvm-images TM_MAD = fs_lvm_ssh TYPE = IMAGE_DS DISK_TYPE = "BLOCK" DS_MAD = fs SAFE_DIRS = "/var/tmp /tmp"
$ onedatastore create imageds.conf
ID: 106
NAME — название хранилища;
DS_MAD — fs (файловый драйвер);
TYPE — IMAGE_DS;
TM_MAD — fs_lvm (режим NFS), fs_lvm_ssh (режим SSH);
DISK_TYPE — BLOCK;
BRIDGE_LIST — список узлов с доступом к логическим томам (опционально).
Примечание
TM_MAD).
BRIDGE_LIST можно опустить, если сервер управления имеет прямой доступ к LUN.
/var/lib/one/datastores/ будут автоматически созданы каталоги 105 и 106. На вычислительных узлах эти каталоги необходимо создать вручную:
$ mkdir /var/lib/one/datastores/{105,106}
/var/lib/one/remotes/etc/fs_lvm/fs_lvm.conf:
ZERO_LVM_ON_CREATE — обнулять тома при создании (yes/no);
ZERO_LVM_ON_DELETE — обнулять тома при удалении (рекомендуется включать);
DD_BLOCK_SIZE — размер блока для операций dd (по умолчанию: 64 КБ).
ZERO_LVM_ON_CREATE=no ZERO_LVM_ON_DELETE=yes DD_BLOCK_SIZE=32M
SUPPORTED_FS — список файловых систем, поддерживаемых для создания форматированных блочных устройств (через запятую). Может быть установлен в файле /var/lib/one/remotes/etc/datastore/datastore.conf;
FS_OPTS_<FS> — параметры создания файловой системы для соответствующего типа ФС. Настраиваются в файле /var/lib/one/remotes/etc/datastore/datastore.conf.
Примечание
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 объёмом ~1 ТБ доступен по четырём путям.
node.startup необходимо задать значение automatic.
node.session.timeo.replacement_timeout по умолчанию составляет 120 секунд. Рекомендуется уменьшить его до 15 секунд.
/etc/iscsi/iscsid.conf (глобально). Если iSCSI-цель уже подключена, необходимо изменить настройки для конкретной цели в файле /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
В данном примере один LUN объёмом ~1 ТБ доступен по четырём путям.
Примечание
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 -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, устройство будет именоваться по 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:
#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
# apt-get install ocfs2-tools
Примечание
/etc/ocfs2/cluster.conf. Этот файл должен быть идентичен на всех узлах кластера. При изменении в одном месте его нужно скопировать на остальные узлы. При добавлении нового узла в кластер описание этого узла должно быть добавлено на всех остальных узлах до монтирования OCFS2-раздела с нового узла.
/etc/ocfs2/cluster.conf.
# o2cb_ctl -C -n mycluster -t cluster -a name=mycluster
# o2cb_ctl -C -n <имя_узла> -t node -a number=0 -a ip_address=<IP_узла> -a ip_port=7777 -a cluster=mycluster
/etc/ocfs2/cluster.conf:
cluster: node_count = 3 heartbeat_mode = local name = mycluster node: ip_port = 7777 ip_address = <IP_узла-01> number = 0 name = <имя_узла-01> cluster = mycluster node: ip_port = 7777 ip_address = <IP_узла-02> number = 1 name = <имя_узла-02> cluster = mycluster node: ip_port = 7777 ip_address = <IP_узла-03> number = 2 name = <имя_узла-03> cluster = mycluster
Примечание
/etc/hostname.
/etc/init.d/o2cb:
# /etc/init.d/o2cb configure
Для ручного запуска кластера выполните:
# /etc/init.d/o2cb load
checking debugfs...
Loading filesystem "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Затем переведите кластер в онлайн-состояние:
# /etc/init.d/o2cb online mycluster
checking debugfs...
Setting cluster stack "o2cb": OK
Registering O2CB cluster "mycluster": OK
Setting O2CB cluster timeouts : OK
/dev/mapper/mpatha-part1 на устройстве /dev/mapper/mpatha:
# fdisk /dev/mapper/mpatha
# mkfs.ocfs2 -b 4096 -C 4k -L DBF1 -N 3 /dev/mapper/mpatha-part1
mkfs.ocfs2 1.8.7
Cluster stack: classic o2cb
Label: DBF1
…
mkfs.ocfs2 successful
Таблица 29.2. Параметры команды mkfs.ocfs2
|
Параметр
|
Описание
|
|---|---|
-L метка_тома
|
Метка тома, позволяющая его однозначно идентифицировать его при подключении на разных узлах. Для изменения метки можно использовать утилиту
tunefs.ocfs2
|
-C размер_кластера
|
Размер кластера — минимальная единица пространства, выделяемая файлу. Возможные значения: 4, 8, 16, 32, 64, 128, 256, 512 и 1024 КБ. Не может быть изменён после форматирования
|
-N количество_узлов_кластера
|
Максимальное количество узлов, которые могут одновременно монтировать том. Может быть изменено с помощью
tunefs.ocfs2
|
-b размер_блока
|
Наименьшая единица пространства, адресуемая ФС. Возможные значения: 512 байт (не рекомендуется), 1 КБ, 2 КБ или 4 КБ (рекомендуется). Не может быть изменён после форматирования
|
Примечание
/dev/mapper/mpathX (использовать с осторожностью):
# dd if=/dev/zero of=/dev/mapper/mpathX bs=512 count=1 conv=notrunc
# blkid
/dev/mapper/mpatha-part1: LABEL="DBF1" UUID="df49216a-a835-47c6-b7c1-6962e9b7dcb6" BLOCK_SIZE="4096" TYPE="ocfs2" PARTUUID="15f9cd13-01"
/etc/fstab:
UUID=<uuid> /var/lib/one/datastores/<идентификатор_хранилища> ocfs2 _netdev,defaults 0 0Например:
UUID=df49216a-a835-47c6-b7c1-6962e9b7dcb6 /var/lib/one/datastores/102 ocfs2 _netdev,defaults 0 0
# mount -a
Команда должна завершиться без вывода ошибок.
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 59G 0 disk
`-sda1 8:1 0 255M 0 part /boot/efi
sdb 8:16 0 931.3G 0 disk
`-mpatha 253:0 0 931.3G 0 mpath
`-mpatha-part1 253:1 0 931.3G 0 part /var/lib/one/datastores/102
sdc 8:32 0 931.3G 0 disk
|-sdc1 8:33 0 931.3G 0 part
`-mpatha 253:0 0 931.3G 0 mpath
`-mpatha-part1 253:1 0 931.3G 0 part /var/lib/one/datastores/102
sdd 8:48 0 931.3G 0 disk
`-mpatha 253:0 0 931.3G 0 mpath
`-mpatha-part1 253:1 0 931.3G 0 part /var/lib/one/datastores/102
sde 8:64 0 931.3G 0 disk
`-mpatha 253:0 0 931.3G 0 mpath
`-mpatha-part1 253:1 0 931.3G 0 part /var/lib/one/datastores/102
Примечание
_netdev гарантирует, что раздел будет монтироваться только после запуска сетевой подсистемы.
Важно
/etc/fstab и перезагрузки ОС необходимо назначить владельцем каталога пользователя oneadmin. Например:
# chown oneadmin: /var/lib/one/datastores/102
Примечание
#mounted.ocfs2 -fDevice Stack Cluster F Nodes /dev/mapper/mpatha-part1 o2cb server, host-02, host-01 #mounted.ocfs2 -dDevice Stack Cluster F UUID Label /dev/mapper/mpatha-part1 o2cb DF49216AA83547C6B7C16962E9B7DCB6 DBF
/etc/lvm/lvm.conf необходимо установить:
use_lvmetad = 0и отключить службу, если она запущена:
# systemctl disable --now lvm2-lvmetad.service
# gpasswd -a oneadmin disk
Примечание
/dev/mapper/ и не содержать разметки.
# wipefs -fa /dev/mapper/[LUN_WWID]
# pvcreate /dev/mapper/mpathb
Physical volume "/dev/mapper/mpathb" successfully created.
# vgcreate vg-one-101 /dev/mapper/mpathb
Volume group "vg-one-101" successfully created
# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/mpathb vg-one-101 lvm2 a-- 931.32g 931.32g
#где 52 — идентификатор ВМ.lvscanACTIVE '/dev/vg-one-101/lv-one-52-0' [50,00 GiB] inherit #lsblksde 8:64 0 931.3G 0 disk └─mpathb 253:1 0 931.3G 0 mpath └─vg--one--101-lv--one--52--0 253:3 0 51G 0 lvm
kernels_ds.conf:
NAME = kernels DS_MAD = fs TM_MAD = ssh TYPE = FILE_DS SAFE_DIRS = /var/tmp/files
$ onedatastore create kernels_ds.conf
ID: 107
NAME — название хранилища;
TYPE — FILE_DS;
DS_MAD — fs;
TM_MAD — ssh.
Примечание
DS_MAD и TM_MAD являются рекомендованными, однако при необходимости могут использоваться и другие поддерживаемые драйверы.
ssh для хранилища файлов не требует специальной настройки на узлах виртуализации. Достаточно убедиться, что в каталоге размещения хранилищ данных (по умолчанию — /var/lib/one/datastores) имеется достаточно свободного пространства для хранения файлов ВМ.
$ onedatastore update <ID_хранилища> <имя_файла>
Таблица 30.1. Типы образов
|
Тип
|
Описание
|
Хранилище
|
|---|---|---|
|
OS
|
Загрузочный диск с установленной операционной системой
|
Images Datastore
|
|
CDROM
|
ISO-образ (только для чтения). Можно подключить несколько образов, но загрузка возможна только с одного из них
|
Images Datastore
|
|
DATABLOCK
|
Блок данных (например, для размещения базы данных) или пустой диск для установки ОС
|
Images Datastore
|
|
KERNEL
|
Ядро Linux (vmlinuz)
|
Files & Kernels Datastore
|
|
RAMDISK
|
Образ initrd/initramfs
|
Files & Kernels Datastore
|
|
CONTEXT
|
Файл контекстуализации (для автоматической начальной настройки ВМ)
|
Files & Kernels Datastore
|
Примечание
OS[kernel=...] и OS[initrd=...], а не подключаются как отдельные диски.
Примечание
oneimage list отображается сокращённое имя STATE (например, rdy, disa).
Таблица 30.2. Состояния образов
|
Состояние
|
Краткий псевдоним
|
Описание
|
|---|---|---|
|
INIT
|
init
|
Состояние инициализации
|
|
READY (ГОТОВО)
|
rdy
|
Образ готов к использованию
|
|
USED (ИСПОЛЬЗУЕТСЯ), USED_PERS (ЗАНЯТ_ПОСТОЯННЫЙ)
|
used
|
Образ используется как минимум одной ВМ. Образ нельзя удалить или изменить
|
|
DISABLED (Отключен)
|
disa
|
Образ отключён владельцем. Новые ВМ не могут его использовать
|
|
LOCKED (ЗАБЛОКИРОВАН), LOCKED_USED, LOCKED_USED_PERS (ЗАБЛОКИРОВАН_ПОСТОЯННЫЙ)
|
lock
|
Образ копируется или создаётся. ВМ, использующие его, ожидают завершения операции
|
|
ERROR (Ошибка)
|
err
|
Операция завершилась неудачей (см.
oneimage show для получения сообщения об ошибке)
|
|
CLONE (Клонирование)
|
clon
|
Образ клонируется
|
|
DELETE (Удаление)
|
dele
|
Образ удаляется из хранилища данных
|
oneimage);

oneimage:
--name <имя> — имя нового образа;
--datastore <имя|ID> — имя или идентификатор хранилища данных;
--description <описание> — описание образа (необязательно);
--type <тип> — тип образа: OS, CDROM, DATABLOCK, KERNEL, RAMDISK, CONTEXT;
--persistent — создание постоянного образа;
--prefix <префикс> — префикс устройства в гостевой ОС (hd, sd, vd);
--target <устройство> — целевое устройство подключения диска;
--path <путь/URL> — путь к файлу образа или URL-адрес;
--source <источник> — источник данных для использования (применяется для нефайловых образов);
--size <размер> — размер в МБ (используется для DATABLOCK или при изменении размера).


Примечание
$ oneimage create -d 1 --name "ALT Workstation ISO" \
--path /var/tmp/alt-workstation-11.1-x86_64.iso --type CDROM
ID: 31
где -d 1 — хранилище данных по умолчанию (ID = 1).


$ oneimage create -d 1 --name "ALT Workstation" \
--type DATABLOCK --size 45G --persistent --driver qcow2
ID: 33
где:
-d 1 — хранилище данных по умолчанию (ID = 1);
--size 45G — размер образа (45 ГБ);
--driver qcow2 — формат образа qcow2.
Примечание
template:
NAME = "ALT Workstation" CPU = "1" MEMORY = "1024" MEMORY_UNIT_COST = "MB" HYPERVISOR = "kvm" DISK = [ IMAGE = "ALT Workstation ISO", IMAGE_UNAME = "oneadmin" ] DISK = [ DEV_PREFIX = "vd", IMAGE = "ALT Workstation", IMAGE_UNAME = "oneadmin" ] NIC = [ NETWORK = "VirtNetwork", NETWORK_UNAME = "oneadmin", SECURITY_GROUPS = "0" ] INPUTS_ORDER = "" LOGO = "images/logos/alt.png" NIC_DEFAULT = [ MODEL = "virtio" ] OS = [ BOOT = "disk1,disk0" # Сначала основной диск (disk1), затем CDROM (disk0) ] GRAPHICS = [ LISTEN = "0.0.0.0", TYPE = "SPICE" ] CONTEXT = [ NETWORK = "YES", SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]" ] SCHED_REQUIREMENTS = "ID=\"0\""
$ onetemplate create template
ID: 22





Примечание


Примечание
$USER[SSH_PUBLIC_KEY].



$ onetemplate instantiate 9
VM ID: 5
Примечание

spice://192.168.0.180:5905где:

# apt-get update && apt-get install opennebula-context
# apt-get install systemd-timesyncd
/etc/systemd/network/lan.network для автоматической настройки всех интерфейсов по DHCP:
[Match] Name = * [Network] DHCP = ipv4
# systemctl disable network NetworkManager && systemctl enable systemd-networkd systemd-timesyncd

$ onevm terminate 5
Примечание

$oneimage chtype 1 OS$oneimage nonpersistent 1
Примечание
Примечание
$ onemarket enable <ID_магазина>
$ onemarket disable <ID_магазина>

$ onemarket list
ID NAME SIZE AVAIL APPS MAD ZONE STAT
1 Linux Containers 0M - 0 linuxco 0 off
0 OpenNebula Public 0M - 116 one 0 on



Примечание
Примечание
/var/log/chroot.log содержащий журнал операций установки. В случае ошибок он может помочь в диагностике.




$ onevm create <шаблон>
NAME = "test-vm" CPU = 1 VCPU = 1 MEMORY = 1024 DISK = [ IMAGE = "SL", IMAGE_UNAME = "oneadmin" ] DISK = [ TYPE = "swap", SIZE = "1024" ] NIC = [ NETWORK = "VirtNetwork", NETWORK_UNAME = "oneadmin" ] NIC = [ NETWORK = "Private", NAME = "private_net" ] GRAPHICS = [ TYPE = "vnc", LISTEN = "0.0.0.0" ] OS = [ BOOT = "disk0" ]
Примечание
$ onetemplate create \
--name test-vm \
--cpu 1 \
--vcpu 1 \
--memory 1024 \
--disk "SL" \
--nic VirtNetwork
$ onetemplate create -h
NIC_DEFAULT, через мастер создания шаблонов или глобально — в конфигурации драйвера гипервизора.
CONTEXT шаблона и обрабатываются агентом контекстуализации внутри гостевой ОС.
CONTEXT = [ NETWORK = "YES", SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]", BLOG_TITLE = "$BLOG_TITLE", MYSQL_PASSWORD = "$MYSQL_PASSWORD" ] USER_INPUTS = [ BLOG_TITLE = "M|text|Blog Title", MYSQL_PASSWORD = "M|password|MySQL Password" ]
Примечание
CPU, MEMORY, VCPU могут быть:


USER_INPUTS.
USER_INPUTS:
CPU = "1" MEMORY = "2048" VCPU = "2" USER_INPUTS = [ CPU = "M|list|vCPU count|0.5,1,2,4|1", MEMORY = "M|range|Memory (MB)|512..8192|2048", VCPU = "O|fixed|Virtual CPUs||2" ]
USER_INPUTS:
"<обязательность>|<тип>|<метка>|<значения>|<по умолчанию>"где:
Примечание
Примечание
--user-inputs ui1,ui2,ui3.
SCHED_ACTION = [ ACTION = "poweroff", TIME = "18000" # через 5 часов (в секундах) ]

$ onetemplate instantiate <ID_или_имя_шаблона>
Эта команда развёртывает один экземпляр ВМ. Для создания нескольких экземпляров используется опция --multiple:
$ onetemplate instantiate my-template --multiple 3
VM IDs: 10, 11, 12
Примечание
/etc/one/oned.conf, например:
VM_RESTRICTED_ATTR = "CPU" VM_RESTRICTED_ATTR = "VPU" VM_RESTRICTED_ATTR = "NIC"Пример шаблона ВМ:
CPU = "1" VCPU = "1" MEMORY = "512" DISK = [ IMAGE = "BaseOS" ] NIC = [ NETWORK_ID = "0" ]
$ onetemplate instantiate 0 \
--memory 1G \
--disk "SL"
Примечание
onetemplate instantiate все исходные диски шаблона заменяются. Чтобы сохранить оригинальный диск и добавить новый, необходимо указать все диски явно:
$ onetemplate instantiate 0 \
--memory 1G \
--disk "BaseOS, SL"
$ onevm deploy <ID_ВМ> <ID_узла>
$ onetemplate instantiate <Шаблон> \
--as_uid <ID_пользователя> \
--as_gid <ID_группы>
onetemplate);

Таблица 31.1. Основные операции с шаблонами
|
Операция
|
Команда
|
Описание
|
|---|---|---|
|
Создать
|
onetemplate create file.tmpl
|
Регистрация нового шаблона
|
|
Клонировать
|
onetemplate clone <ID_шаблона> new-name
|
Создание копии шаблона
|
|
Обновить
|
onetemplate update <ID_шаблона>
|
Редактирование шаблона
|
|
Удалить
|
onetemplate delete <ID_шаблона>
|
Удаление (только владелец или админ)
|
Примечание
--recursive OpenNebula создаёт копии всех образов, используемых в шаблоне, и делает их постоянными:
$ onetemplate clone 6 secure-copy --recursive
onetemplate update. Например, если в /etc/one/oned.conf указано:
VM_RESTRICTED_ATTR = "DISK/TOTAL_BYTES_SEC"И шаблон содержит:
DISK = [ IMAGE = "BaseOS", TOTAL_BYTES_SEC = "1048576" ] DISK = [ IMAGE = "DataDisk" ]Пользователь может удалить DataDisk, но не может удалить или изменить BaseOS, так как он содержит ограниченный атрибут.
chmod).
Таблица 31.2. Управление правами доступа
|
Команда
|
Описание
|
|---|---|
onetemplate chmod 0 640
|
Группа может использовать шаблон
|
onetemplate chmod 0 660
|
Группа может использовать и управлять
|
onetemplate chmod 0 664
|
Группа — управление, остальные — использование
|
$onetemplate chmod 0 660$onetemplate show 0... PERMISSIONS OWNER : um- GROUP : um- OTHER : ---
--recursive, чтобы применить права также к всем образам, используемым в шаблоне:
$ onetemplate chmod 0 660 --recursive
chmod --recursive 640 является действие :

Примечание
onevm list отображается сокращённое имя состояния LCM_STATE (например, pend, runn).
Таблица 32.1. Состояния ВМ
|
Краткий псевдоним
|
Состояние
|
Описание
|
|---|---|---|
|
pend
|
Pending
|
ВМ ожидает развёртывания. Планировщик ищет подходящий узел
|
|
hold
|
Hold
|
Запуск ВМ приостановлен владельцем. ВМ может быть развёрнута вручную
|
|
clon
|
Cloning
|
ВМ ожидает завершения первоначального копирования одного или нескольких образов дисков в хранилище (образы находятся в заблокированном состоянии)
|
|
prol
|
Prolog
|
Копирование образов дисков на целевой узел
|
|
boot
|
Boot
|
Запуск гипервизора и загрузка ВМ
|
|
runn
|
Running
|
ВМ запущена и работает на узле
|
|
migr
|
Migrate
|
Выполняется миграция ВМ (live или cold)
|
|
hotp
|
Hotplug
|
Динамическое подключение или отключение дисков и сетевых интерфейсов
|
|
snap
|
Snapshot
|
Создается снимок ВМ
|
|
save
|
Save
|
Сохранение файлов ВМ при миграции, остановке или приостановке
|
|
epil
|
Epilog
|
Очистка ресурсов на узле после завершения работы ВМ
|
|
shut
|
Shutdown
|
Отправка ACPI-сигнала для корректного завершения работы гостевой ОС
|
|
stop
|
Stopped
|
ВМ остановлена, её состояние сохранено в системном хранилище
|
|
susp
|
Suspended
|
ВМ приостановлена; файлы остаются на узле для быстрого возобновления
|
|
poff
|
PowerOff
|
Аналогично состоянию Suspended, но файл контрольной точки не создаётся. Файлы ВМ остаются на узле. После корректного выключения гостевой ОС OpenNebula переводит ВМ в это состояние
|
|
unde
|
Undeployed
|
ВМ выключена, её диски перенесены в системное хранилище. ВМ может быть возобновлена позже
|
|
drsz
|
Disk Resize
|
Выполняется изменение размера дисков ВМ
|
|
back
|
Backup
|
Выполняется резервное копирование ВМ
|
|
rest
|
Restore
|
Диски ВМ восстановлены из образа резервной копии
|
|
fail
|
Failed
|
Ошибка при развёртывании или выполнении операции
|
|
unkn
|
Unknown
|
ВМ недоступна и находится в неизвестном состоянии
|
|
clea
|
Cleanup-resubmit
|
ВМ ожидает завершения очистки узла драйверами после выполнения
onevm recover --recreate
|
|
done
|
Done
|
ВМ завершена и удалена из списка активных, но сохранена в базе данных для учёта
|
$onetemplate listID USER GROUP NAME REGTIME 3 oneadmin oneadmin test-vm 01/15 14:35:19 2 oneadmin oneadmin ALT Workstation 01/14 17:08:22 1 oneadmin oneadmin SimplyLinux 01/14 14:23:03 0 oneadmin oneadmin alt_p11 - LXC 01/14 11:29:47 $onetemplate instantiate test-vm --name my-vmVM ID: 10
USER_INPUTS, система запросит их значения:
$ onetemplate instantiate test-vm --name my-vm
There are some parameters that require user input. Use the string <<EDITOR>> to launch an editor (e.g. for multi-line inputs)
* (BLOG_TITLE) Blog Title
April
* (CPU)
0 0.5
1 1
2 2
3 4
Please type the selection number: 1
* (MEMORY)
Press enter for default (2048). Integer in the range [512..8192]:
* (MYSQL_PASSWORD) MySQL Password
Password:
* (VCPU)
Fixed value of (2). Cannot be changed
VM ID: 11
$ onevm list
ID USER GROUP NAME STAT CPU MEM HOST TIME
11 oneadmin oneadmin my-vm prol 1 2G host-01 0d 00h00
onevm deploy:
$onehost list# найти подходящий узел ID NAME CLUSTER TVM ALLOCATED_CPU ALLOCATED_MEM STAT 2 host-03 default 0 0 / 200 (0%) 0K / 1.9G (0%) on 1 host-02 default 1 0 / 200 (0%) 0K / 1.9G (0%) on 0 host-01 default 1 100 / 200 (50%) 2G / 7.7G (25%) on $onevm deploy 11 2# развернуть ВМ 0 на узле 2
$ onevm show 0
Вывод команды содержит:
onevm list --search позволяет фильтровать ВМ по атрибутам.
VM.<путь>=<значение>
$ onevm list --search 'VM.TEMPLATE.NIC[*].MAC=02:00:0c:00:3e:dd'
$ onevm list --search 'VM.NAME=test-vm&VM.UNAME=oneadmin'
$ onevm list --search 'VM.NAME=test%'
Примечание
Таблица 32.2. Завершение работы
|
Команда
|
Описание
|
|---|---|
onevm terminate <ID_ВМ>
|
Корректно завершает работу ВМ с помощью ACPI-сигнала. После остановки:
|
onevm terminate --hard <ID_ВМ>
|
Немедленно уничтожает ВМ без отправки ACPI-сигнала. Используется, если гостевая ОС не поддерживает корректное завершение работы или не отвечает
|
Примечание
shutdown -h now), OpenNebula автоматически переводит её в состояние POWEROFF.
Таблица 32.3. Приостановка и выключение
|
Команда
|
Состояние
|
Описание
|
|---|---|---|
onevm suspend <ID_ВМ>
|
SUSPENDED
|
Сохраняет полное состояние ВМ (включая RAM) на узле. При возобновлении ВМ запускается на том же узле без перепланирования
|
onevm poweroff <ID_ВМ>
|
POWEROFF
|
Выключает ВМ через ACPI без сохранения состояния RAM. При запуске выполняется «холодная» загрузка на том же узле
|
onevm poweroff --hard <ID_ВМ>
|
POWEROFF
|
Принудительное выключение ВМ без отправки ACPI-сигнала
|
Таблица 32.4. Долгосрочная пауза (освобождение ресурсов узла)
|
Команда
|
Состояние
|
Описание
|
|---|---|---|
onevm undeploy <ID_ВМ>
|
UNDEPLOYED
|
Корректно выключает ВМ и переносит все её диски в системное хранилище. При возобновлении ВМ переходит в состояние PENDING, и планировщик выбирает новый узел
|
onevm undeploy --hard <ID_ВМ>
|
UNDEPLOYED
|
Принудительное выключение ВМ с немедленным переносом дисков в системное хранилище
|
onevm stop <ID_ВМ>
|
STOPPED
|
Аналогично undeploy, но дополнительно сохраняет состояние RAM для последующего восстановления
|
$ onevm resume <ID_ВМ>
Поддерживаемые состояния: STOPPED, SUSPENDED, UNDEPLOYED, POWEROFF.
Таблица 32.5. Перезагрузка
|
Команда
|
Описание
|
|---|---|
onevm reboot <ID_ВМ>
|
Отправляет ACPI-сигнал перезагрузки гостевой ОС
|
onevm reboot --hard <ID_ВМ>
|
Принудительная перезагрузка (аналог жёсткого выключения и последующего запуска)
|
Таблица 32.6. Управление запуском
|
Команда
|
Описание
|
|---|---|
onevm instantiate --hold <шаблон>
onevm create --hold <файл>
|
Создаёт ВМ в состоянии HOLD (планировщик игнорирует её до снятия удержания)
|
onevm hold <ID_ВМ>
|
Переводит существующую ВМ в состояние HOLD
|
onevm release <ID_ВМ>
|
Снимает удержание — ВМ переходит в состояние PENDING и передаётся под управление планировщика
|
$ onevm disk-attach <ВМ> --image storage
$onevm show <ВМ># определить DISK_ID $onevm disk-detach <ВМ> <ID_диска>
Примечание
$ onevm nic-attach <ВМ> --network <Сеть>
$ onevm nic-detach <ВМ> <NIC_ID>
$ onevm nic-attach <ВМ> --network <Сеть> --pci '00:06.1'
Примечание
$cat update_nic.txtNIC = [ INBOUND_AVG_BW = "512", INBOUND_PEAK_BW = "1024" ] $onevm nic-update <ВМ> <NIC_ID> update_nic.txt
Примечание
$ onevm sg-attach <ВМ> <NIC_ID> <SG_ID>
$ onevm sg-detach <ВМ> <NIC_ID> <SG_ID>

Важно
$ onevm pci-attach <ВМ> \
--pci_class "0c03" \
--pci_vendor "1912" \
--pci_device "0015"
$ onevm pci-detach <ВМ> <PCI_ID>
$ onehost show <HOST_ID> | grep -A5 "PCI"
$onevm snapshot-create 17 "before domain"$onevm show 17... SNAPSHOTS ID TIME NAME HYPERVISOR_ID 0 01/19 18:49 before update snap-0 1 01/20 15:53 before domain $onevm snapshot-revert 17 0 --verboseVM 17: reverting snapshot
Примечание
$ onevm snapshot-delete 17

onevm disk-snapshot-* — управление снимками: создание, восстановление, удаление, переименование;
onevm disk-saveas — экспорт диска или снимка в новый образ.
$ onevm disk-snapshot-create <ID_ВМ> <ID_диска> <имя_снимка>
$ onevm disk-snapshot-revert <ID_ВМ> <ID_диска> <ID_снимка>
$ onevm disk-snapshot-delete <ID_ВМ> <ID_диска> <ID_снимка>
onevm disk-snapshot-revert требует состояния POWEROFF или SUSPENDED;
guest_agent = "YES" в шаблоне);
DISK[CACHE] = "writethrough" (рекомендуется для обеспечения согласованности данных).
$onevm disk-snapshot-create 17 0 newtest$onevm show 17... VM DISK SNAPSHOTS AC ID DISK PARENT DATE SIZE NAME => 0 0 -1 01/19 17:18:28 -/15G test 1 0 -1 01/19 29:19:26 -/15G newtest
Примечание
CPU_HOTPLUG = "YES" MEMORY_HOTPLUG = "YES"
$onevm poweroff web_vm$onevm resize web_vm --memory 2G --vcpu 2$onevm resume web_vm
Примечание
Примечание
$ echo 1 > /sys/devices/system/cpu/cpu<ID>/online
$ onetemplate instantiate <шаблон> --disk "alt:size=20G"
Размер образа alt будет изменен до 20 ГБ
$ onevm disk-resize <ID_ВМ> <ID_диска> <новый_размер>
onevm updateconf позволяет изменить конфигурацию ВМ без её пересоздания.
Таблица 32.7. Поддерживаемые атрибуты
|
Атрибут
|
Податрибуты
|
Требуется перезагрузка
|
|---|---|---|
|
OS
|
ARCH, MACHINE, KERNEL, INITRD, BOOTLOADER, BOOT, KERNEL_CMD, ROOT, SD_DISK_BUS, UUID, FIRMWARE
|
Да
|
|
FEATURES
|
ACPI, PAE, APIC, LOCALTIME, HYPERV, GUEST_AGENT, VIRTIO_SCSI_QUEUES, VIRTIO_BLK_QUEUES, IOTHREADS
|
Нет
|
|
INPUT
|
TYPE, BUS
|
Нет
|
|
GRAPHICS
|
TYPE, LISTEN, PASSWD, KEYMAP, COMMAND
|
Нет
|
|
VIDEO
|
TYPE, IOMMU, ATS, VRAM, RESOLUTION
|
Нет
|
|
RAW
|
DATA, DATA_VMX, TYPE, VALIDATE
|
Да
|
|
CPU_MODEL
|
MODEL, FEATURES
|
Да
|
|
CONTEXT
|
Любые переменные (кроме ETH*)
|
Немедленно
|
Примечание
$cat new_conf.txtGRAPHICS = [ TYPE = "vnc", LISTEN = "0.0.0.0" ] CONTEXT = [ BLOG_TITLE = "Updated Blog" ] $onevm updateconf <ID_ВМ> new_conf.txt
--persistent;
onevm save.
--persistent:
$onetemplate instantiate web_vm --persistent --name my_vmVM ID: 30 $onetemplate list# Появление нового шаблона ID USER GROUP NAME REGTIME 7 oneadmin oneadmin web_vm 05/12 14:53:11 8 oneadmin oneadmin my_vm 05/12 14:53:38 $onevm list# Созданные постоянные образы дисков ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS 7 oneadmin oneadmin web-img default 200M OS Yes used 1 8 oneadmin oneadmin my_vm-disk-0 default 200M OS Yes used 1

Примечание
onevm save сохраняет текущее состояние работающей или выключенной ВМ в новый шаблон.
$onevm poweroff web_vm# сначала выключите ВМ $onevm save web_vm saved_web_vm --persistentTemplate ID: 26
onevm save:
onevm поддерживают опцию --schedule, позволяющую отложить выполнение действия до указанной даты и времени.
$ onevm suspend 11 --schedule "2026-09-20"
VM 11: suspend scheduled at 2026-09-20 00:00:00 +0200
$ onevm resume 11 --schedule "2026-09-23 14:15"
VM 11: resume scheduled at 2026-09-23 14:15:00 +0200
$ onevm show 11
VIRTUAL MACHINE 11 INFORMATION
ID : 11
NAME : my-vm
[...]
SCHEDULED ACTIONS
ID ACTION ARGS SCHEDULED REPEAT END STATUS
0 suspend - 09/20 00:00 Next in 247.2 days
1 resume - 09/23 14:15 Next in 250.8 days
$ onevm sched-delete <ID_ВМ> <ACTION_ID>
$ onevm sched-update <ID_ВМ> <ACTION_ID>
$ onevm sched-update 11 1
ID="1"
PARENT_ID="11"
TYPE="VM"
ACTION="resume"
TIME="1790165700"
REPEAT="-1"
END_TYPE="-1"
END_VALUE="-1"
DONE="-1"
WARNING="0"
Примечание
Таблица 32.8. Периодические действия
|
Опция
|
Описание
|
Пример
|
|---|---|---|
--hourly <N>
|
Каждые N часов
|
--hourly 6
|
--weekly <дни>
|
Дни недели (0=вс, 6=сб)
|
--weekly "1,3,5"
|
--monthly <дни>
|
Дни месяца (1-31)
|
--monthly "1,15"
|
--yearly <дни>
|
Дни года (0-365)
|
--yearly "1,200"
|
--end <N|дата>
|
Завершить после N повторов или к дате
|
--end "2026-03-31"
|
$ onevm snapshot-create 0 weekly_backup \
--schedule "2025-09-22" \
--weekly "1,5" \
--end "2025-12-31"
SCHED_ACTION:
$ onetemplate update 0
SCHED_ACTION=[
ACTION="terminate",
ID="0",
TIME="+3600" ]
В этом случае ВМ будет автоматически завершена через 1 час после запуска.
Таблица 32.9. Поддерживаемые запланированные действия
|
Действие
|
Аргументы
|
Пример
|
|---|---|---|
terminate
|
[--hard]
|
terminate --hard
|
undeploy
|
[--hard]
|
undeploy
|
hold / release
|
-
|
hold
|
stop / suspend / resume
|
-
|
suspend
|
reboot / poweroff
|
[--hard]
|
reboot --hard
|
snapshot-create
|
<имя>
|
snapshot-create backup
|
snapshot-revert
|
<ID_снимка>
|
snapshot-revert 0
|
disk-snapshot-create
|
<ID_диска>,<имя>
|
disk-snapshot-create 0,daily
|
backup
|
<ID_хранилища>,[reset]
|
backup 100 reset
|
Важно
snapshot-create).

USER TEMPLATE. Это удобно для хранения служебной информации, например: паролей, тегов, идентификаторов интеграций и других параметров, используемых внешними системами.
$ onevm update 11
# В открывшемся редакторе добавьте:
ROOT_PASSWORD="s3cr3t"
Просмотр добавленных данных:
$ onevm show 0
...
USER TEMPLATE
BLOG_TITLE="April"
ROOT_PASSWORD="s3cr3t"
Примечание
onevm show, а также в веб-интерфейсе Sunstone.

Таблица 32.10. Метрики мониторинга
|
Ключ
|
Описание
|
Единицы
|
|---|---|---|
|
CPU
|
Загрузка CPU
|
% (1 ядро = 1.0)
|
|
MEMORY
|
Используемая память
|
КБ
|
|
DISKRDBYTES
|
Байты, прочитанные с диска
|
байты
|
|
DISKRDIOPS
|
Количество операций чтения ввода-вывода
|
IOPS
|
|
DISKWRBYTES
|
Байты, записанные на диск
|
байты
|
|
DISKWRIOPS
|
Количество операций записи ввода-вывода
|
IOPS
|
|
NETRX
|
Полученные сетевые байты
|
байты
|
|
NETTX
|
Отправленные сетевые байты
|
байты
|
Таблица 32.11. Права доступа
|
Право
|
Обозначение
|
Действие
|
|---|---|---|
|
u
|
USE
|
Просмотр информации, подключение к консоли
|
|
m
|
MANAGE
|
Изменение состояния (остановка, перезагрузка)
|
|
a
|
ADMIN
|
Удаление ВМ, изменение владельца
|
$onevm show 0... PERMISSIONS OWNER : um- GROUP : --- OTHER : --- $onevm chmod 0 640$onevm show 0... PERMISSIONS OWNER : um- GROUP : u-- OTHER : ---
$onevm chown <ID_ВМ> <пользователь>$onevm chgrp <ID_ВМ> <группа>
Таблица 32.12. Перепланирование и миграция
|
Команда
|
Описание
|
|---|---|
onevm resched <ВМ>
|
Перенос ВМ на оптимальный узел (в соответствии с политиками планировщика)
|
onevm migrate <ВМ> <Узел>
|
Холодная миграция (с остановкой ВМ)
|
onevm migrate --live <ВМ> <Узел>
|
Горячая миграция (без простоя)
|
onevm recover):
--success — имитирует успешное выполнение действия при отсутствии драйвера;
--failure — имитирует сбой действия при отсутствии драйвера;
--retry — повторяет попытку выполнения текущего действия с драйвером (при необходимости можно использовать --interactive, если проблема связана с Transfer Manager);
--delete — удаляет ВМ, немедленно переводя её в состояние DONE;
--recreate — удаляет ВМ и переводит её в состояние PENDING.
$ onevm recover <ID_ВМ> --delete
$ onevm recover <ID_ВМ> --retry
$ onevm recover <ID_ВМ> --recreate
Важно
--delete только в том случае, если ВМ фактически отсутствует на узле.
GRAPHICS в шаблон ВМ:
GRAPHICS=[ LISTEN="0.0.0.0", # Разрешить внешние подключения TYPE="vnc" ]
PASSWD = "strong_password");



.vv.
GRAPHICS в шаблон ВМ:
GRAPHICS=[ LISTEN="0.0.0.0", # Разрешить внешние подключения TYPE="spice" ]
PASSWD = "strong_password");


spice://192.168.0.180:5905где:
Важно
NIC = [ NETWORK = "VirtNetwork", RDP = "YES" ]

Примечание
Примечание
# apt-get install libnbd
INCREMENT_MODE:
Примечание
--reset для создания новой цепочки резервных копий;
#useradd -m -u 9869 oneadmin#passwd oneadmin
~oneadmin/.ssh/id_rsa.pub) с узла управления OpenNebula и узлов виртуализации в файл ~oneadmin/.ssh/authorized_keys на сервере резервного копирования:
$ ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <сервер_резервного_копирования>
$ ssh <сервер_резервного_копирования>
#mkdir -p /var/lib/one/datastores#chown oneadmin:oneadmin /var/lib/one/datastores
/var/lib/one/datastores, например:
# mount /dev/vgBackup/lvBackup /var/lib/one/datastores
Примечание
/var/lib/one/datastores.
# apt-get install rsync qemu-img
Примечание
#apt-get install restic#cp /usr/bin/restic /var/lib/one/remotes/datastore/restic/restic
$ onehost sync -f
На узлах виртуализации должен появиться файл /var/tmp/one/datastore/restic/restic.
ds_restic.conf:
NAME = "RBackups" TYPE = "BACKUP_DS" DS_MAD = "restic" TM_MAD = "-" RESTIC_SFTP_USER = "oneadmin" RESTIC_PASSWORD = "opennebula" RESTIC_SFTP_SERVER = "192.168.0.197"
$ onedatastore create ds_restic.conf
ID: 100
NAME — название хранилища;
TYPE — BACKUP_DS;
DS_MAD — restic;
RESTIC_SFTP_USER — пользователь на сервере резервного копирования;
RESTIC_PASSWORD — пароль для шифрования репозитория Restic;
RESTIC_SFTP_SERVER — IP-адрес или имя сервера резервного копирования.
Важно
RESTIC_SFTP_SERVER, должен быть доступен как с узла управления, так и со всех узлов гипервизора.

$ onedatastore list
ID NAME SIZE AVA CLUSTERS IMAGES TYPE DS TM STAT
100 RBackups 134.7G 76% 0 0 bck restic - on
Теперь можно создавать резервные копии ВМ.
restic prune, которая запускается OpenNebula автоматически.
unable to create lock in backend: repository is already locked...
$ restic -r sftp:oneadmin@192.168.0.197:/var/lib/one/datastores/<ID_хранилища>/<ID_ВМ> \
--password-file <(echo "opennebula") unlock --remove-all
# /etc/systemd/system/user@9869.service.d/delegate.conf [Service] Delegate=cpu cpuset io
$ cat /sys/fs/cgroup/user.slice/user-9869.slice/cgroup.controllers
cpuset cpu io memory pids
/var/lib/one/datastores/<ID_хранилища>/<ID_ВМ>/backup.
BACKUP_BASE_PATH в файле /var/lib/one/remotes/etc/datastore/datastore.conf.
#useradd -m -u 9869 oneadmin#passwd oneadmin
~oneadmin/.ssh/id_rsa.pub) с узла управления OpenNebula и узлов виртуализации в файл ~oneadmin/.ssh/authorized_keys на сервере резервного копирования:
$ ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <сервер_резервного_копирования>
$ ssh <сервер_резервного_копирования>
#mkdir -p /var/lib/one/datastores#chown oneadmin:oneadmin /var/lib/one/datastores
/var/lib/one/datastores, например:
# mount /dev/vgBackup/lvBackup /var/lib/one/datastores
Примечание
/var/lib/one/datastores.
# apt-get install rsync qemu-img
Примечание
ds_rsync.conf:
NAME = "Rsync Backups" TYPE = "BACKUP_DS" DS_MAD = "rsync" TM_MAD = "-" RSYNC_USER = "oneadmin" RSYNC_HOST = "192.168.0.197"
$ onedatastore create ds_rsync.conf
ID: 103
NAME — название хранилища;
TYPE — BACKUP_DS;
DS_MAD — rsync;
RSYNC_USER — пользователь на сервере резервного копирования;
RSYNC_HOST — IP-адрес или имя сервера резервного копирования.
Важно
RSYNC_HOST должен быть доступен как с узла управления, так и со всех узлов гипервизора.

$ onedatastore list
ID NAME SIZE AVA CLUSTERS IMAGES TYPE DS TM STAT
103 Rsync Backups 134.7G 76% 0 0 bck rsync - on
Теперь можно создавать резервные копии ВМ.
# /etc/systemd/system/user@9869.service.d/delegate.conf [Service] Delegate=cpu cpuset io
$ cat /sys/fs/cgroup/user.slice/user-9869.slice/cgroup.controllers
cpuset cpu io memory pids
/var/lib/one/datastores/<ID_хранилища>/<ID_ВМ>/backup.
BACKUP_BASE_PATH в файле /var/lib/one/remotes/etc/datastore/datastore.conf.
BACKUP_CONFIG:
NAME = "Template - Backup" CPU = "1" MEMORY = "2048" DISK = [ IMAGE_ID = "1" ] BACKUP_CONFIG = [ FS_FREEZE = "NONE", KEEP_LAST = "4", MODE = "INCREMENT" ]

updateconf или через командную строку.
$ onevm updateconf 13
Добавьте в редакторе:
BACKUP_CONFIG = [ FS_FREEZE = "AGENT", KEEP_LAST = "5", MODE = "FULL" ]Проверка конфигурации:
$ onevm show 13
VIRTUAL MACHINE 13 INFORMATION
ID : 13
NAME : SL_11
…
BACKUP CONFIGURATION
BACKUP_VOLATILE="NO"
FS_FREEZE="SUSPEND"
INCREMENTAL_BACKUP_ID="-1"
KEEP_LAST="5"
LAST_INCREMENT_ID="-1"
MODE="FULL"

Таблица 33.1. Атрибуты конфигурации резервного копирования
|
Атрибут
|
Описание
|
Значение по умолчанию
|
|---|---|---|
BACKUP_VOLATILE
|
Резервное копирование volatile-дисков
|
NO
|
FS_FREEZE
|
Метод заморозки ФС: NONE, AGENT, SUSPEND
|
NONE
|
KEEP_LAST
|
Сохранять последние N копий
|
не задано
|
MODE
|
Тип копии: FULL, INCREMENT
|
FULL
|
INCREMENT_MODE
|
Режим инкремента: CBT, SNAPSHOT
|
CBT
|
INCREMENTAL_BACKUP_ID
|
ID образа с цепочкой инкрементов (только для чтения)
|
-1
|
LAST_INCREMENT_ID
|
ID последнего инкремента (только для чтения)
|
-1
|
MODE), а также дополнительные аргументы команды:
ID_хранилища — идентификатор хранилища резервных копий, в котором будет сохранена резервная копия;
-d (опционально) — при инкрементальном резервном копировании закрывает текущую активную цепочку инкрементов и начинает новую.
$ onevm backup -d 100 13


$ onevm show 13
VIRTUAL MACHINE 13 INFORMATION
ID : 13
NAME : SL_11
BACKUP CONFIGURATION
BACKUP_VOLATILE="NO"
FS_FREEZE="SUSPEND"
INCREMENTAL_BACKUP_ID="-1"
KEEP_LAST="2"
LAST_INCREMENT_ID="-1"
MODE="FULL"
VM BACKUPS
IMAGE IDS: 16
Информация об образе резервной копии:
$ oneimage show 16
IMAGE 16 INFORMATION
ID : 16
NAME : 13 16-Jan 13.42.11
USER : oneadmin
GROUP : oneadmin
LOCK : None
DATASTORE : RBackups
TYPE : BACKUP
REGISTER TIME : 01/16 13:42:11
PERSISTENT : Yes
SOURCE : 5ed6faf4
FORMAT : raw
SIZE : 12.2G
STATE : rdy
RUNNING_VMS : 1
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
IMAGE TEMPLATE
BACKUP INFORMATION
VM : 13
TYPE : FULL
--schedule в командной строке:
$ onevm backup --schedule "0 2 * * *" -d 100 13 --weekly "1,3,5"

Примечание
/etc/one/oned.conf:
MAX_BACKUPS — максимальное количество активных операций резервного копирования во всей инфраструктуре. После достижения лимита новые задания запускаться не будут;
MAX_BACKUPS_HOST — максимальное количество одновременно выполняемых операций резервного копирования на одном узле гипервизора.
$ onevm backup-cancel 13
$ onevm recover 13 --success
$ oneimage list --backup
ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS
30 oneadmin oneadmin 18 20-Jan 12.18.34 rsync_loca 12.5G BK Yes rdy 1
26 oneadmin oneadmin 15 17-Jan 20.44.03 Rbackups 12.4G BK Yes rdy 1
17 oneadmin oneadmin 13 16-Jan 22.35.52 Rsync Back 12.2G BK Yes rdy 1
16 oneadmin oneadmin 13 16-Jan 13.42.11 Rbackups 12.2G BK Yes rdy 1
$ oneimage list --backup | grep " 13 "
$ oneimage show <ID_образа>
$ oneimage show 17
…
TYPE : BACKUP
REGISTER TIME : 01/16 22:35:52
PERSISTENT : Yes
SOURCE : e4e9a8
FORMAT : raw
SIZE : 12.2G
--
BACKUP INFORMATION
VM : 13
TYPE : FULL
$ oneimage show 30 | grep -A5 BACKUP
YPE : BACKUP
REGISTER TIME : 01/20 12:18:34
PERSISTENT : Yes
SOURCE : 408fa3
FORMAT : raw
SIZE : 12.5G
--
BACKUP INFORMATION
VM : 18
TYPE : INCREMENTAL
BACKUP INCREMENTS
ID PID T SIZE DATE SOURCE
0 -1 F 12.2G 01/20 12:18:34 408fa3
1 0 I 217M 01/20 12:55:21 f2acce
2 1 I 18M 01/20 13:18:17 f1c67d
BACKUP INCREMENTS:
ID — идентификатор инкремента;
PID — идентификатор родительского инкремента;
T — тип резервной копии: F (полная), I (инкрементальная);
SIZE — размер инкремента;
DATE — дата и время создания;
SOURCE — хеш снимка диска, на основе которого создан инкремент.
SOURCE в образах резервных копий (и их инкрементах) представляет собой непрозрачный идентификатор, ссылающийся на объект резервной копии во внешней системе хранения (Restic, Rsync и т. п.), используемой данным хранилищем резервных копий.
Примечание
$export RESTIC_PASSWORD="opennebula"$restic -r sftp:oneadmin@192.168.0.197:/var/lib/one/datastores/100/13 snapshots --tag one-13repository a8e6b00c opened (version 2, compression level auto) created new cache in /var/lib/one/.cache/restic ID Time Host Tags Paths Size --------------------------------------------------------------------------------------------------------------- 5ed6faf4 2026-01-16 13:33:04 host-01 one-13 /var/lib/one/datastores/0/13/backup/disk.0.0 12.239 GiB /var/lib/one/datastores/0/13/backup/vm.xml ---------------------------------------------------------------------------------------------------------------


oneimage restore. При наличии общей файловой системы (например, NFS), доступной узлу управления и узлам виртуализации, доступен полный функционал восстановления, включая onevm restore.
Примечание
$ onevm restore <ID_ВМ> <ID_образа>
Допустимые параметры:
--disk-id ID_диска — восстановить только указанный диск;
--increment ID_инкремента — использовать указанный идентификатор инкремента (если параметр не задан, используется последний).
$ oneimage show 26
IMAGE 26 INFORMATION
...
BACKUP INFORMATION
VM : 15
TYPE : INCREMENTAL
BACKUP INCREMENTS
ID PID T SIZE DATE SOURCE
0 -1 F 12.2G 01/17 20:44:03 bb3b65eb
1 0 I 35M 01/17 21:29:51 f5c79cfc
2 1 I 139M 01/17 21:38:34 abb971bb
$ onevm restore --increment 1 15 26
Важно
$ oneimage restore <ID_образа>
Допустимые параметры:
-d хранилище — целевое хранилище;
--disk-id ID_диска — восстановить только указанный диск;
--increment ID_инкремента — использовать указанный идентификатор инкремента (если параметр не задан, используется последний);
--name имя — имя нового образа;
--no_ip — не сохранять адреса етевых адаптеров (MAC, IPv4 и IPv6);
--no_nic — не сохранять определения сетевых интерфейсов.
$ oneimage restore -d default --no_ip 16
VM Template: 5
Images: 18
Результат:


Примечание
Примечание
oneimage chmod;
# Еженедельно по пятницам $onevm backup --schedule "0 2 * * 5" -d 100 23# Ежемесячно 1-го числа $onevm backup --schedule "0 3 1 * *" -d 200 23
BACKUP_VMS = "13,15,3"
Примечание
DATASTORE_ID = 101 FS_FREEZE = "NONE" KEEP_LAST = "4" MODE = "INCREMENT" INCREMENT_MODE = "SNAPSHOT"
PRIORITY = 7 EXECUTION = "SEQUENTIAL"
Примечание
MAX_BACKUPS в файле /etc/one/oned.conf.
SCHED_ACTION (аналогично расписанию действий ВМ):
SCHED_ACTION = [ REPEAT = "0", DAYS = "1", # Понедельник END_TYPE = "0", TIME = "1768776420" ]
Примечание
ACTION и ARGS задаются автоматически и указывать их вручную не требуется.
my_backupjob.conf):
NAME = "My backup job" BACKUP_VMS = "12,13" DATASTORE_ID = 100 FS_FREEZE = "NONE" KEEP_LAST = "5" MODE = "INCREMENT" PRIORITY = 50 EXECUTION = "SEQUENTIAL" SCHED_ACTION = [ REPEAT="0", DAYS="1", END_TYPE="0", TIME="1768776420" ]Регистрация задания:
$ onebackupjob create my_backupjob.conf
ID: 1


Таблица 34.1. Атрибуты задания резервного копирования
|
Атрибут
|
Описание
|
|---|---|
BACKUP_VMS
|
Список идентификаторов ВМ, разделённых запятыми
|
DATASTORE_ID
|
Идентификатор хранилища резервных копий
|
RESET
|
Создать новую цепочку инкрементов (только для INCREMENT)
|
BACKUP_VOLATILE
|
Резервное копирование volatile-дисков (по умолчанию NO)
|
FS_FREEZE
|
Метод заморозки ФС: NONE (по умолчанию), AGENT, SUSPEND
|
KEEP_LAST
|
Сохранять последние N копий (по умолчанию не ограничено)
|
MODE
|
Тип копии: FULL (по умолчанию), INCREMENT
|
INCREMENT_MODE
|
Режим инкремента: CBT (по умолчанию), SNAPSHOT
|
INCREMENTAL_BACKUP_ID
|
ID образа с цепочкой инкрементов (только для чтения)
|
LAST_INCREMENT_ID
|
ID последнего инкремента (только для чтения)
|
PRIORITY
|
Приоритет задания от 0 (низкий) до 99 (высокий)
|
EXECUTION
|
Режим выполнения: SEQUENTIAL или PARALLEL
|
SCHED_ACTION
|
Расписание выполнения задания
|
$ onebackupjob list
ID USER GROUP PRIO NAME LAST VMS
0 oneadmin oneadmin 50 My backup job 01/17/26 12:34 12,13
$ onebackupjob show 0
BACKUP JOB 0 INFORMATION
ID : 0
NAME : My backup job
USER : oneadmin
GROUP : oneadmin
LOCK : None
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
LAST BACKUP JOB EXECUTION INFORMATION
TIME : 01/17 12:34:10
DURATION : 0d 00h00m27s
VIRTUAL MACHINE BACKUP STATUS
UPDATED :
OUTDATED :
ONGOING :
ERROR : 12,13
SCHEDULED ACTIONS
ID ACTION ARGS SCHEDULED REPEAT END STATUS
3 backup - 01/19 00:47 Weekly 1 None Next in 1.51 days
TEMPLATE CONTENTS
BACKUP_VMS="12,13"
BACKUP_VOLATILE="NO"
DATASTORE_ID="100"
EXECUTION="SEQUENTIAL"
FS_FREEZE="NONE"
INCREMENT_MODE="CBT"
KEEP_LAST="5"
MODE="INCREMENT"
$ onebackupjob backup 1
$ onebackupjob update 0
(в открывшемся редакторе измените нужные атрибуты)
$ onebackupjob backup --schedule "0 2 * * *" 0
$ onebackupjob sched-update 0 <ID_расписания>
$ onebackupjob sched-delete 0 <ID_расписания>
$ onebackupjob priority 0 10
<ID_ВМ> <ДЕНЬ>-<МЕСЯЦ> <ВРЕМЯ>Например: 13 17-Jan 14.05.25.
oneuser предназначена для управления пользователями через командную строку.
$ oneuser list
ID NAME ENAB GROUP AUTH VMS MEMORY CPU
1 serveradmin yes oneadmin server_c 0 / - 0M / 0.0 / -
0 oneadmin yes oneadmin core - - -
$ oneuser create <имя_пользователя> <пароль>
Примечание
Примечание
$ oneuser create --driver ldap <имя_пользователя>
$ oneuser chgrp <имя_пользователя> oneadmin
Удаление из группы выполняется путём перевода пользователя обратно в группу users.
$oneuser disable <имя_пользователя># временно отключить $oneuser enable <имя_пользователя># включить $oneuser delete <имя_пользователя># удалить
Примечание
$HOME/.one/one_auth. Формат файла — одна строка вида:
<имя_пользователя>:<пароль>
$ oneuser show
USER 8 INFORMATION
ID : 8
NAME : user
GROUP : users
PASSWORD : a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
Примечание
$HOME/.one/one_auth защищён только механизмами прав файловой системы. Для повышения безопасности рекомендуется использовать токены аутентификации вместо хранения паролей в открытом виде.
$ oneuser token-create
* Do you want to overwrite the file /home/user/.one/one_auth? (Y|N):
Y
overwriting /home/user/.one/one_auth ...
Authentication Token is:
user:4b426939a0f030cc5edca60088c54fe38325e41fdd2fba8e51fc655978167e04
При создании токена он автоматически записывается в файл ~/.one/one_auth и начинает использоваться CLI.
--time <секунды> — задать время жизни токена (значение -1 — бессрочный токен);
--group <ID|имя> — привязать токен к указанной группе.
oneuser show:
TOKENS
ID EGID EGROUP EXPIRATION
4b42693 *1 users 2025-12-25 20:14:18
985a500 1 users 2025-12-25 20:30:40
Примечание
$ oneuser token-set --token 985a500
export ONE_AUTH=/home/user/.one/aac6aa2e9bf92fc95d8ec0068c16b980.token; export ONE_EGID=1
Команда выводит переменные окружения, которые можно экспортировать для текущей сессии.
$ oneuser token-delete 985a500
Token removed.
Removing /home/user/.one/aac6aa2e9bf92fc95d8ec0068c16b980.token
После удаления токен становится недействительным и больше не может использоваться для аутентификации.
USER TEMPLATE можно хранить произвольные атрибуты, например:
DEPARTMENT=IT EMAIL=user@test.altЭти данные могут использоваться в контекстуализации виртуальных машин, например:
ssh_key = "$USER[SSH_KEY]"
VM_USE_OPERATIONS VM_MANAGE_OPERATIONS VM_ADMIN_OPERATIONS
$oneuser listID NAME ENAB GROUP AUTH VMS MEMORY CPU 8 user yes users core 0 / - 0M / - 0.0 / - $oneuser passwd 8 <новый_пароль>


Примечание
$После изменения пароля следует перезапустить службу OpenNebula.oneuser passwd 0 <пароль>$echo 'oneadmin:<пароль>' > /var/lib/one/.one/one_auth
Примечание
$После изменения пароля следует перезапустить службу Sunstone.oneuser passwd 1 --sha256 0 <пароль>$echo 'serveradmin:<пароль>' > /var/lib/one/.one/oneflow_auth$echo 'serveradmin:<пароль>' > /var/lib/one/.one/onegate_auth$echo 'serveradmin:<пароль>' > /var/lib/one/.one/sunstone_auth
onegroup.
$ onegroup list
ID NAME USERS VMS MEMORY CPU
1 users 1 0 / - 0M / - 0.0 / -
0 oneadmin 3 - - -
$ onegroup create <имя_группы>
Например:
$ onegroup create ALT
ID: 100
Созданной группе был присвоен идентификатор 100, что позволяет отличать пользовательские группы от предопределённых (служебных) групп OpenNebula.
oneuser chgrp:
$ oneuser chgrp -v oneuser ALT
Удаление из группы выполняется переводом пользователя обратно в группу users.
onegroup create:
-n, --name — имя группы;
-u, --admin_user — создать администратора группы;
-p, --admin_password — пароль администратора;
-d, --admin_driver — драйвер аутентификации (например, ldap);
-r, --resources — типы ресурсов, которые могут создавать пользователи группы (по умолчанию VM+IMAGE+TEMPLATE).
$ onegroup create --name testgroup \
--admin_user testgroup-admin --admin_password somestr \
--resources TEMPLATE+VM
Эта команда создаст группу testgroup и пользователя testgroup-admin с правами администратора этой группы.
$ onegroup addadmin <ID_группы> <ID_пользователя>

Примечание
$ onevm show 8
VIRTUAL MACHINE 8 INFORMATION
ID : 8
NAME : test
USER : oneadmin
GROUP : oneadmin
STATE : POWEROFF
LCM_STATE : LCM_INIT
LOCK : None
RESCHED : No
HOST : host-01
CLUSTER ID : 0
CLUSTER : default
START TIME : 04/08 16:12:53
END TIME : -
DEPLOY ID : 69ab21c2-22ad-4afb-bfc1-7b4e4ff2364f
VIRTUAL MACHINE MONITORING
ID : 8
TIMESTAMP : 1712756284
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
…
В данном примере:
chmod в восьмеричной нотации:
$ onevm chmod 8 607
Где:
$ onevm show 8
…
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : uma
/etc/one/oned.conf через DEFAULT_UMASK;
oneuser umask.
ENABLE_OTHER_PERMISSIONS = "YES" # или "NO"
YES — новые ресурсы получают права 666 (все могут использовать);
NO — права 660 (только владелец и группа).
Примечание

$oneimage lock 2$oneimage delete 2[one.image.delete] User [4] : Not authorized to perform MANAGE IMAGE [2]. $oneimage unlock 2
Примечание
<пользователь> <ресурс> <операции> [<зона>]Синтаксис:
#5 IMAGE+TEMPLATE/@103 USE+MANAGEПользователь #5 может использовать и управлять всеми образами и шаблонами, принадлежащими группе @103.
Примечание
$oneacl list# просмотр списка правил $oneacl create "#3 IMAGE/#30 USE"# создание правила $oneacl delete <ID># удаление правила
$ oneacl list
ID USER RES_VHNIUTGDCOZSvRMAPt RID OPE_UMAC ZONE
0 @1 V--I-T---O-S----P- * ---c *
1 * ----------Z------- * u--- *
2 * --------------MA-- * u--- *
3 @1 -H---------------- * -m-- #0
4 @1 --N--------------- * u--- #0
5 @1 -------D---------- * u--- #0
6 #3 ---I-------------- #30 u--- #0
Эти правила соответствуют следующим описаниям:
@1 VM+IMAGE+TEMPLATE+DOCUMENT+SECGROUP/* CREATE * * ZONE/* USE * * MARKETPLACE+MARKETPLACEAPP/* USE * @1 HOST/* MANAGE #0 @1 NET/* USE #0 @1 DATASTORE/* USE #0 #3 IMAGE/#30 USE *Первые шесть правил создаются автоматически при инициализации OpenNebula. Последнее правило было добавлено вручную командой:
$ oneacl create "#3 IMAGE/#30 USE"
ID: 6
oneacl list:


Таблица 35.1. Интерфейсы и методы аутентификации
|
Метод аутентификации
|
Поддерживаемые интерфейсы
|
|---|---|
|
API, CLI, Sunstone
|
|
|
API, CLI, Sunstone
|
|
|
API, CLI
|
|
|
X.509
|
CLI, Sunstone
|
|
Аутентификация через Sunstone (remote)
|
Только Sunstone
|
Примечание
Важно
Примечание
/etc/one/oned.conf):
…
AUTH_MAD = [
EXECUTABLE = "one_auth_mad",
AUTHN = "ssh,x509,ldap,server_cipher,server_x509"
]
$ ssh-keygen -t rsa
$HOME/.ssh/id_rsa), так как OpenNebula ищет ключ именно там;
$ oneuser key
Enter old passphrase:
MIIBCAKCAQEApUO+JISjSf02rFVtDr1yar/34EoUoVETx0n+RqWNav+5wi+gHiPp3e03AfEkXzjDYi8F
...
Полученную строку необходимо передать администратору облака.
/tmp/pub_key);
$ oneuser create newuser --ssh --read-file /tmp/pub_key
альтернативный вариант (не рекомендуется с точки зрения безопасности) — если у администратора есть доступ к закрытому ключу пользователя:
$ oneuser create newuser --ssh --key /home/newuser/.ssh/id_rsa
$oneuser chauth newuser ssh$oneuser passwd newuser --ssh --read-file /tmp/pub_key
$ oneuser login newuser --ssh
Enter old passphrase:
* Do you want to overwrite the file /home/newuser/.one/one_auth? (Y|N):
y
overwriting /home/user/.one/one_auth ...
Authentication Token is:
newuser:062ca55c97e0e327a50d1027f59cdedc68495cb836ddeebc68d1ffd4eb293cab
oneuser login:
$HOME/.ssh/id_rsa (если не указан иной путь);
$HOME/.one/one_auth);
$ oneuser login newuser --ssh --key /path/to/id_rsa --time 3600
Примечание
/etc/one/oned.conf):
…
AUTH_MAD = [
EXECUTABLE = "one_auth_mad",
AUTHN = "ssh,x509,ldap,server_cipher,server_x509"
]
default в атрибут AUTHN:
AUTH_MAD = [
EXECUTABLE = "one_auth_mad",
AUTHN = "default,ssh,x509,ldap,server_cipher,server_x509"
]
# ln -s /var/lib/one/remotes/auth/ldap /var/lib/one/remotes/auth/default
Важно
/etc/one/sunstone-server.conf должно быть указано:
:auth: opennebula
/etc/one/auth/ldap_auth.conf. Формат: YAML-хеш, где:
:order) описывает один LDAP-сервер;
:order — массив с порядком опроса серверов.
Примечание
:order обрабатываются по порядку, пока пользователь не будет успешно аутентифицирован или не будет достигнут конец списка. Серверы, не указанные в :order, использоваться не будут.
Таблица 35.2. Параметры файла /etc/one/auth/ldap_auth.conf
|
Параметр
|
Описание
|
|---|---|
:user
|
Имя пользователя, имеющего право выполнять запросы к LDAP. Не требуется при анонимном доступе
|
:password
|
Пароль для пользователя, определенного в
:user. Не требуется при анонимном доступе
|
:auth_method
|
Поддерживается только
:simple
|
:encryption
|
Можно установить значение
:simple_tls, если требуется SSL-соединение
|
:host
|
LDAP-сервер
|
:port
|
Порт LDAP-сервера (обычно 389 или 636)
|
:timeout
|
Тайм-аут подключения и аутентификации (в секундах)
|
:base
|
Базовый DN для поиска пользователей
|
:group_base
|
Альтернативный DN для поиска групп
|
:group
|
Если задано, только пользователи из этой группы могут входить
|
:user_field
|
Атрибут LDAP, содержащий логин (например, uid, sAMAccountName)
|
:group_field
|
Атрибут членства в группе (по умолчанию member). Для вложенных групп в AD можно использовать: member:1.2.840.113556.1.4.1941
|
:mapping_generate
|
Автоматическая генерация файла сопоставления групп
|
:mapping_timeout
|
Интервал обновления файла сопоставления (в секундах)
|
:mapping_filename
|
Имя файла сопоставления (должно быть уникальным для каждого сервера)
|
:mapping_key
|
Ключ в шаблоне группы, содержащий DN LDAP-группы
|
:mapping_default
|
Группа OpenNebula по умолчанию для пользователей без сопоставления. Установите false, чтобы запретить вход таким пользователям
|
:rfc2307bis:
|
true для Active Directory, false для OpenLDAP
|
:group_admin_group_dn:
|
DN группы, члены которой становятся администраторами всех сопоставленных групп в OpenNebula
|
Примечание
DRIVER_MANAGED_GROUP_ADMIN = "NO" в разделе ldap файла oned.conf.
$HOME/.one/one_auth), в формате:
<user_dn>:ldap_passwordгде:
oneuser encode <user> [<password>]. Например:
$ oneuser encode 'cn=First Name,dc=institution,dc=country' 'pass word'
cn=First%20Name,dc=institution,dc=country:pass%20word
Результат этой команды следует поместить в файл $ONE_AUTH.
$ oneuser chauth <id|name> ldap
/etc/one/auth/ldap_auth.conf необходимо указать:
:user — пользователь AD с правами на чтение в дереве пользователей (пользователь указывается в формате opennebula@test.alt);
:password — пароль пользователя;
:host — IP-адрес или имя сервера AD (имя должно разрешаться через DNS или /etc/hosts);
:base — базовый DN для поиска пользователя;
:user_field — для этого параметра следует установить значение sAMAccountName;
:rfc2307bis — для этого параметра следует установить значение true.
/etc/one/auth/ldap_auth.conf для настройки аутентификации в домене AD (домен test.alt):
server 1:
:user: 'opennebula@test.alt'
:password: 'Pa$$word'
:auth_method: :simple
:host: dc1.test.alt
:port: 389
:base: 'dc=test,dc=alt'
:user_field: 'sAMAccountName'
:mapping_generate: false
:mapping_timeout: 300
:mapping_filename: server1.yaml
:mapping_key: GROUP_DN
:mapping_default: 100
:rfc2307bis: true
:order:
- server 1
Примечание
/etc/samba/smb.conf в секции [global]:
ldap server require strong auth = noи перезапустить samba:
# systemctl restart samba
Примечание
:mapping_default должна существовать в OpenNebula.
Примечание
/etc/one/auth/ldap_auth.conf для настройки аутентификации в домене FreeIPA (домен example.test):
server 1:
:user: 'uid=admin,cn=users,cn=accounts,dc=example,dc=test'
:password: '12345678'
:auth_method: :simple
:host: ipa.example.test
:port: 389
:base: 'dc=example,dc=test'
:user_field: 'uid'
:mapping_generate: false
:mapping_timeout: 300
:mapping_filename: server1.yaml
:mapping_key: GROUP_DN
:mapping_default: 100
:rfc2307bis: true
:order:
- server 1

GROUP_DN="CN=office,CN=Users,DC=test,DC=alt"

/etc/one/auth/ldap_auth.conf указать:
:mapping_generate: true :mapping_key: GROUP_DNПоиск DN сопоставляемой группы будет осуществляться в этом параметре шаблона.
/var/lib/one/server1.yaml:
--- CN=office,CN=Users,DC=test,DC=alt: '100'Пользователи группы AD office будут сопоставлены с группой ALT (ID=100).
:mapping_generate: false и создав файл /var/lib/one/server1.yaml:
CN=office,CN=Users,DC=test,DC=alt: '100' CN=Domain Admins,CN=Users,DC=test,DC=alt: '101'Пользователи из office попадут в группу с ID 100, из Domain Admins — в ID 101.

Примечание
:mapping_key и :mapping_file.
oned.conf.
oned.conf:
AUTH_MAD_CONF = [
ldap = [
DRIVER_MANAGED_GROUPS = "NO"
]
]
:auth: в файле /etc/one/sunstone-server.conf и может работать в двух режимах:
opennebula — локальная или делегированная аутентификация через ядро OpenNebula;
remote — внешняя аутентификация, выполняемая веб-сервером (Apache, Nginx и др.).
:auth: opennebulaи используется по умолчанию.
Примечание
$ oneuser chauth <логин> public "<логин>"
В качестве идентификатора, как правило, используется имя пользователя.
$ oneuser create <логин> "<логин>" --driver public
:auth: в файле конфигурации (/etc/one/sunstone-server.conf):
:auth: remoteПосле изменения конфигурации требуется перезапустить сервис Sunstone:
# systemctl restart opennebula-sunstone

Примечание
:auth: должен оставаться равным opennebula:
:auth: opennebula




Примечание
:

Примечание
Примечание
SERVER_ID в /etc/one/oned.conf);
$onezone listC ID NAME ENDPOINT FED_INDEX * 0 OpenNebula http://localhost:2633/RPC2 -1 $onezone server-add 0 \--name opennebula \ --rpc http://192.168.0.185:2633/RPC2 $onezone show 0ZONE 0 INFORMATION ID : 0 NAME : OpenNebula STATE : ENABLED ZONE SERVERS ID NAME ENDPOINT 0 opennebula http://192.168.0.185:2633/RPC2 HA & FEDERATION SYNC STATUS ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX 0 opennebula solo 0 -1 0 -1 -1 ZONE TEMPLATE ENDPOINT="http://localhost:2633/RPC2"
SERVER_ID в файле /etc/one/oned.conf:
FEDERATION = [
MODE = "STANDALONE",
ZONE_ID = 0,
SERVER_ID = 0, # измените с -1 на 0 (0 — это ID сервера)
MASTER_ONED = ""
]
/etc/one/oned.conf):
RAFT_LEADER_HOOK = [
COMMAND = "raft/vip.sh",
ARGUMENTS = "leader enp0s3 192.168.0.200/24"
]
# Executed when a server transits from leader->follower
RAFT_FOLLOWER_HOOK = [
COMMAND = "raft/vip.sh",
ARGUMENTS = "follower enp0s3 192.168.0.200/24"
]
Примечание
$ onezone show 0
ZONE 0 INFORMATION
ID : 0
NAME : OpenNebula
STATE : ENABLED
ZONE SERVERS
ID NAME ENDPOINT
0 opennebula http://192.168.0.185:2633/RPC2
HA & FEDERATION SYNC STATUS
ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX
0 opennebula leader 1 5 5 0 -1
ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
Сервер opennebula стал Leader-сервером.
$ ip -o a sh enp0s3
2: enp0s3 inet 192.168.0.185/24 brd 192.168.0.255 scope global enp0s3\ valid_lft forever preferred_lft forever
2: enp0s3 inet 192.168.0.200/24 scope global secondary enp0s3\ valid_lft forever preferred_lft forever
2: enp0s3 inet6 fe80::a00:27ff:fe6f:f3cb/64 scope link \ valid_lft forever preferred_lft forever
Примечание
MONITOR_ADDRESS в /etc/one/monitord.conf.
Предупреждение
Примечание
$ mysqldump -u oneadmin -p'oneadmin' \
-h localhost --add-drop-database --databases --add-drop-table opennebula \
> /var/lib/one/mysql_localhost_opennebula.sql
/var/lib/one/.one/ на новый узел:
$scp /var/lib/one/mysql_localhost_opennebula.sql 192.168.0.184:/tmp$ssh 192.168.0.184 rm -rf /var/lib/one/.one$scp -r /var/lib/one/.one/ 192.168.0.184:/var/lib/one/
# systemctl stop opennebula
$ mysql -u oneadmin -p'oneadmin' -h localhost opennebula < /tmp/mysql_localhost_opennebula.sql
$ onezone server-add 0 \
--name one-02 \
--rpc http://192.168.0.184:2633/RPC2
$ onezone show 0
ZONE 0 INFORMATION
ID : 0
NAME : OpenNebula
STATE : ENABLED
ZONE SERVERS
ID NAME ENDPOINT
0 opennebula http://192.168.0.185:2633/RPC2
1 one-02 http://192.168.0.184:2633/RPC2
HA & FEDERATION SYNC STATUS
ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX
0 opennebula leader 1 59 59 0 -1
1 one-02 error - - - - -
ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
Новый сервер находится в состоянии ошибки, так как OpenNebula на новом сервере не запущена. Запомните идентификатор сервера, в этом случае он равен 1.
SERVER_ID в файле /etc/one/oned.conf:
FEDERATION = [
MODE = "STANDALONE",
ZONE_ID = 0,
SERVER_ID = 1, # ← ID из вывода onezone show
MASTER_ONED = ""
]
# Скрипты управления плавающим IP (как в настройке Leader)
RAFT_LEADER_HOOK = [ ... ]
RAFT_FOLLOWER_HOOK = [ ... ]
# systemctl start opennebula
$ onezone show 0
ZONE 0 INFORMATION
ID : 0
NAME : OpenNebula
STATE : ENABLED
ZONE SERVERS
ID NAME ENDPOINT
0 opennebula http://192.168.0.185:2633/RPC2
1 one-02 http://192.168.0.184:2633/RPC2
HA & FEDERATION SYNC STATUS
ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX
0 opennebula leader 1 59 59 0 -1
1 one-02 follower 1 39 39 0 -1
ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
Статус нового сервера изменился на follower.
Примечание
$ onezone show 0
ZONE 0 INFORMATION
ID : 0
NAME : OpenNebula
STATE : ENABLED
ZONE SERVERS
ID NAME ENDPOINT
0 opennebula http://192.168.0.185:2633/RPC2
1 one-02 http://192.168.0.184:2633/RPC2
2 one-03 http://192.168.0.183:2633/RPC2
HA & FEDERATION SYNC STATUS
ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX
0 opennebula leader 1 59 59 0 -1
1 one-02 follower 1 39 39 0 -1
2 one-03 follower 1 39 39 0 -1
ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
/var/log/one/oned.log), как в текущем Leader (если он есть), так и в узле, который находится в состоянии Error. Все сообщения Raft будут регистрироваться в этом файле.
$ onezone server-add <ID_зоны> --name name --rpc rpc
Возможные параметры:
-n, --name — имя сервера зоны;
-r, --rpc — адрес RPC-интерфейса (частный IP);
-v, --verbose — подробный режим;
--user name — имя пользователя, используемое для подключения к OpenNebula;
--password password — пароль для аутентификации в OpenNebula;
--endpoint endpoint — URL конечной точки интерфейса OpenNebula xmlrpc.
$ onezone server-del <ID_зоны> <ID_узла>
Возможные параметры:
-v, --verbose — подробный режим;
--user name — имя пользователя, используемое для подключения к OpenNebula;
--password password — пароль для аутентификации в OpenNebula;
--endpoint endpoint — URL конечной точки интерфейса OpenNebula xmlrpc.
$ onezone server-reset <ID_зоны> <ID_узла>
$ onezone disable <ID_зоны>
Примечание
$ onezone enable <ID_зоны>
/etc/one/oned.conf.
Таблица 36.1. Параметры Raft
|
Атрибут
|
Описание
|
|---|---|
LIMIT_PURGE
|
Количество записей журнала, удаляемых за одну операцию очистки
|
LOG_RETENTION
|
Минимальное количество записей в журнале; определяет окно синхронизации между узлами
|
LOG_PURGE_TIMEOUT
|
Интервал очистки журнала (в секундах)
|
ELECTION_TIMEOUT_MS
|
Тайм-аут запуска выборов при отсутствии heartbeats от Leader
|
BROADCAST_TIMEOUT_MS
|
Частота отправки heartbeats
|
XMLRPC_TIMEOUT_MS
|
Тайм-аут Raft-операций через API (0 = бесконечно)
|
Примечание
onezone serversync автоматизирует синхронизацию конфигурации в HA-кластере.
/etc/one/ между узлами;
/etc/one/oned.conf — сохраняется блок FEDERATION, остальное перезаписывается;
/etc/one/;
Важно
Примечание
Важно
#onezone serversync <IP_Leader># Синхронизация конфигурации #onezone serversync <IP_Leader> --db# Синхронизация + база данных
ft/host_error.rb, который позволяет:
Примечание
/usr/share/one/examples/host_hooks/error_hook:
ARGUMENTS = "$TEMPLATE -m -p 5" ARGUMENTS_STDIN = "yes" COMMAND = "ft/host_error.rb" NAME = "host_error" STATE = "ERROR" REMOTE = "no" RESOURCE = HOST TYPE = stateВ приведённом примере:
-m);
-p 5).
$ onehook create /usr/share/one/examples/host_hooks/error_hook
Таблица 37.1. Параметры скрипта ft/host_error.rb
|
Параметр
|
Описание
|
|---|---|
$TEMPLATE
|
Шаблон узла, перешедшего в состояние ERROR. Передаётся в формате XML, закодированном в base64
|
-m
|
Миграция ВМ на другой узел (доступно только при использовании shared-хранилищ: NFS, Ceph)
|
-r
|
Удаление и пересоздание ВМ (состояние ВМ теряется)
|
-d
|
Полное удаление ВМ
|
-f
|
Принудительный перезапуск ВМ, находящихся в состояниях SUSPEND или POWEROFF
|
-p <n>
|
Не выполнять переключение, если узел восстановится в течение <n> циклов мониторинга
|
--no-fencing
|
Отключить изоляцию (fencing) неисправного узла
|
Примечание
/etc/one/monitord.conf:
BEACON_HOST — интервал отправки beacon-сообщений для проверки доступности узла;
MONITORING_INTERVAL_HOST — интервал мониторинга состояния узла.
/var/lib/one/.ssh/config:
Host * ConnectTimeout 15 ServerAliveInterval 10 ControlMaster no ControlPersist 70s StrictHostKeyChecking no UserKnownHostsFile /dev/null
Примечание
/var/lib/one/remotes/hooks/ft/fence_host.sh удалите строку:
echo "Fence host not configured, please edit ft/fence_host.sh" && exit 1и укажите учётные данные устройства управления питанием:
USERNAME="admin" PASSWORD="secret"
FENCE_IP:
$ onehost update <ID_узла>
В открывшемся редакторе добавьте:
FENCE_IP="192.168.0.100"
while [ "$RETRIES" -gt 0 ]; do
fence_ilo5 -P \
--ip="$FENCE_IP" \
--password="$PASSWORD" \
--username="$USERNAME" \
--action="$ACTION" && exit 0
RETRIES=$((RETRIES-1))
sleep $SLEEP_TIME
done
Параметр $ACTION обычно принимает значения off, reboot или on.
Примечание
Содержание
Примечание
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 p10
# apt-repo set p10
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 Server-V 10.2 x86_64 build 2024-05-13]/ ALTLinux main
/etc/apt/sources.list.d/.
Примечание
alt.list может содержаться такая информация:
# ftp.altlinux.org (ALT Linux, Moscow) # ALT Platform 10 #rpm [p10] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64 classic #rpm [p10] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic #rpm [p10] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/noarch classic rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64 classic rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/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: 154119764
Maintainer: Alexey Shabalin (ALT Team) <shaba@altlinux.org>
Version: 1.24.2-alt1:p10+326352.200.3.1@1691242931
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.24.2-alt1:p10+326352.200.3.1)
Architecture: x86_64
Size: 29082799
MD5Sum: d9daf730a225fb47b2901735aa01ed17
Filename: telegraf-1.24.2-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 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 29,1MB архивов.
После распаковки потребуется дополнительно 154MB дискового пространства.
Получено: 1 http://ftp.altlinux.org p10/branch/x86_64/classic telegraf 1.24.2-alt1:p10+326352.200.3.1@1691242931 [29,1MB]
Получено 29,1MB за 2s (11,0MB/s).
Совершаем изменения...
Подготовка... ################################# [100%]
Обновление / установка...
1: telegraf-1.24.2-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=500(test) gid=500(test) группы=500(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=40) — максимально допустимая длина пароля. Эта опция может быть использована для того, чтобы запретить пользователям устанавливать пароли, которые могут быть слишком длинными для некоторых системных служб. Значение 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=42) — размер случайно сгенерированных парольных фраз в битах (от 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
Последний раз пароль был изменён : дек 27, 2023
Срок действия пароля истекает : янв 01, 2024
Пароль будет деактивирован через : янв 11, 2024
Срок действия учётной записи истекает : никогда
Минимальное количество дней между сменой пароля : -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.
Таблица 47.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.44 находится в /usr/share/doc/file-5.44. Для получения полного списка файлов документации, относящихся к пакету, воспользуйтесь командой rpm -qd имя_установленного_пакета.
README, FAQ, TODO, СhangeLog и другие. В файле README содержится основная информация о программе — имя и контактные данные авторов, назначение, полезные советы и пр. FAQ содержит ответы на часто задаваемые вопросы; этот файл стоит прочитать в первую очередь, если у вас возникли проблемы или вопросы по использованию программы, поскольку большинство проблем и сложностей типичны, вполне вероятно, что в FAQ вы тут же найдёте готовое решение. В файле TODO записаны планы разработчиков на реализацию той или иной функциональности. В файле СhangeLog записана история изменений в программе от версии к версии.
rpm -qi имя_установленного_пакета. В информационном заголовке соответствующего пакета, среди прочей информации, будет выведена искомая ссылка.