Download PDF
Download page Хранилища LVM.
Хранилища LVM
Общие сведения
Блочная технология хранения с использованием LVM обеспечивает возможность использования LVM-томов вместо обычных файлов образов в системном хранилище. При этом нет необходимости в организации файловой системы.В ПК СВ поддерживаются внешние хранилища, построенные базе технологии SAN (Storage Area Network – сеть хранения данных), которая обеспечивает доступ к данным на уровне блочных устройств.
При настройке внешнего хранилища необходимо руководствоваться инструкциями производителя оборудования.
В Astra Linux обеспечивается полнофункциональное управление томами LVM, дополнительная настройка не требуется.
Дополнительная информация
Создание и настройка хранилищ LVM для тестового стендаПример подключения внешнего хранилища SAN по протоколу iSCSI
В данном примере описан процесс настройки сервера, предоставляющего блочные данные по протоколу iSCSI (программная СХД). Сетевые блочные устройства (iSCSI-target), предоставляемые этим сервером, будут подключены в качестве локальных блочных устройств на другом сервере (iSCSI-initiator).
Особенности использования SAN в ПК СВ
SAN обеспечивает предоставление блочных устройств посредством сетевых протоколов, таких как Fibre Channel или iSCSI. Для доступа к определенному сетевому блочному устройству используется специализированный адрес этого устройства – LUN (Logical Unit Number – номер логического устройства).
Для организации хранения в ПК СВ требуется выделение как минимум 2 LUN (один – для хранилища образов, второй – для системного хранилища). Эти LUN должны быть презентованы каждому серверу – фронтальным машинам и узлам виртуализации.
Дополнительная информация
Пример использования сетевых блочных устройств при создании хранилищ для тестового стендаНастройки сервера, предоставляющего блочные устройства (iSCSI-target)
Вывести перечень блочных устройств:
lsblkПример вывода после выполнения команды:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3,9G 0 rom sda 252:0 0 12G 0 disk ├─sda1 252:1 0 11G 0 part / ├─sda2 252:2 0 1K 0 part └─sda5 252:5 0 975M 0 part [SWAP] sdb 252:16 0 24G 0 disk sdc 252:32 0 24G 0 disk
CODEгде:
sda
– диск для размещения файлов ОС;sdb
иsdc
– диски для эмуляции сетевых блочных устройств.
Установить консоль управления Linux-IO Target (пакет
targetcli-fb
):sudo apt install targetcli-fbВойти в консоль управления Linux-IO Target командой:
sudo targetcliВ консоли управления вывести текущую конфигурацию командой:
lsПример вывода после выполнения команды:/> ls o- / ..................................................................................................... [...] o- backstores ......................................................................................... [...] | o- block ............................................................................ [Storage Objects: 0] | o- fileio ........................................................................... [Storage Objects: 0] | o- pscsi ............................................................................ [Storage Objects: 0] | o- ramdisk .......................................................................... [Storage Objects: 0] o- iscsi ...................................................................................... [Targets: 0] o- lo.......................................................................................... [Targets: 0] o- vhost ...................................................................................... [Targets: 0]
CODEСоздать (зарегистрировать) блочное устройство в разделе
/backstores/block
командой:/backstores/block create <наименование_устройства> /dev/<блочное_устройство>В наименовании устройства могут использоваться любые печатные символы, за исключением символов кириллицы.
Пример
Регистрация блочного устройства
/dev/sdb
, при этом ему будет присвоено условное именованиеstorage01
:/backstores/block create storage01 /dev/sdbПример вывода после выполнения команды:
Created block storage object storage01 using /dev/sdb.
CODE- Аналогичным образом добавить необходимое количество блочных устройств.
Проверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ................................................................................................. [...] o- backstores ........................................................................................ [...] | o- block ............................................................................ [Storage Objects: 1] | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated] | o- fileio ........................................................................... [Storage Objects: 0] | o- pscsi ............................................................................ [Storage Objects: 0] | o- ramdisk .......................................................................... [Storage Objects: 0] o- iscsi ...................................................................................... [Targets: 0] o- loopback ................................................................................... [Targets: 0] o- vhost ...................................................................................... [Targets: 0]
CODEСоздать цель (iSCSI-target) в разделе
/iscsi
командой:/iscsi createПример вывода после выполнения команды:Created target iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
CODEДля каждого блочного устройства можно назначить несколько целей (iSCSI-target) – чтобы разграничить доступ для разных групп серверов-инициаторов (iSCSI-initiator).
Проверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ..................................................................................................... [...] o- backstores ......................................................................................... [...] | o- block ............................................................................ [Storage Objects: 1] | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated] | o- fileio ........................................................................... [Storage Objects: 0] | o- pscsi ............................................................................ [Storage Objects: 0] | o- ramdisk .......................................................................... [Storage Objects: 0] o- iscsi ...................................................................................... [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709 ................................... [TPGs: 1] | o- tpg1 ......................................................................... [no-gen-acls, no-auth] | o- acls .................................................................................... [ACLs: 0] | o- luns .................................................................................... [LUNs: 0] | o- portals .............................................................................. [Portals: 1] | o- 0.0.0.0:3260 ............................................................................... [OK] o- loopback ................................................................................... [Targets: 0] o- vhost ...................................................................................... [Targets: 0]
CODEСоздать LUN на основе блочного устройства, зарегистрированного в разделе
/backstores/block
(см. шаг 5) командой:/iscsi/<идентификатор_цели>/tpg1/luns/ create /backstores/block/<наименование_устройства>Пример
/iscsi/iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709/tpg1/luns/ create /backstores/block/storage01Пример вывода после выполнения команды:
Created LUN 0.
CODEПроверить результат командой
ls
. Пример вывода после выполнения команды:/> ls o- / ..................................................................................................... [...] o- backstores ......................................................................................... [...] | o- block ............................................................................ [Storage Objects: 1] | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated] | o- fileio ........................................................................... [Storage Objects: 0] | o- pscsi ............................................................................ [Storage Objects: 0] | o- ramdisk .......................................................................... [Storage Objects: 0] o- iscsi ...................................................................................... [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709 ................................... [TPGs: 1] | o- tpg1 ......................................................................... [no-gen-acls, no-auth] | o- acls .................................................................................... [ACLs: 0] | o- luns .................................................................................... [LUNs: 0] | | o- lun0 ............................................ [block/storage01 (/dev/sdb) (default_tg_pt_gp)] | o- portals .............................................................................. [Portals: 1] | o- 0.0.0.0:3260 ............................................................................... [OK] o- loopback ................................................................................... [Targets: 0] o- vhost ...................................................................................... [Targets: 0]
CODEВыполнить настройку контроля доступа к цели (iSCSI-target):
если контроль доступа не требуется, то его можно отключить командами:
cd /iscsi/<идентификатор_цели>/tpg1
set attribute generate_node_acls=1
set attribute demo_mode_write_protect=0
для предоставления доступа определенному серверу-инициатору (iSCSI-initiator) к цели (iSCSI-target) необходимо в список доступа (ACL) добавить идентификатор инициатора, который хранится в файле
/etc/iscsi/initiatorname.iscsi
на сервере-инициаторе (см. шаг 3 настройки iSCSI-initiator). Для этого следует выполнить команды:cd /iscsi/<идентификатор_цели>/tpgt1/acls
create <идентификатор_инициатора>
Пример
cd /iscsi/iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709/tpgt1/acls
create iqn.1993-08.org.debian:01:c1a92326f6b8Пример вывода после успешного выполнения команды
create
:Created Node ACL for iqn.1993-08.org.debian:01:c1a92326f6b8 Created mapped LUN 0.
CODE
- Повторить шаги 8 – 12 для добавления необходимого количества LUN.
Выполнить сохранение настроек:
/ saveconfigПример вывода после выполнения команды:Last 10 configs saved in /etc/rtslib-fb-target/backup. Configuration saved to /etc/rtslib-fb-target/saveconfig.json
CODEВыйти из консоли управления:
exit
В консоли управления Linux-IO Target версии 2.1.48-2 введена система бэкапов конфигурации. В связи с этим, после перезагрузки сервера сохраненная конфигурация не загружается автоматически. На текущий момент после перезагрузки сервера конфигурацию необходимо восстанавливать командой:
Пример вывода после выполнения команды:
Configuration restored from /etc/rtslib-fb-target/saveconfig.json
Для того чтобы автоматизировать восстановление конфигурации, необходимо выполнить следующие действия:
Создать службу
target
, сформировав unit-файл, например с помощью тестового редактора nano, для этого выполнить команду:sudo nano /lib/systemd/system/target.serviceВ открывшемся текстовом редакторе добавить следующие строки:[Unit] Description=Restore LIO kernel target configuration Requires=sys-kernel-config.mount After=sys-kernel-config.mount network.target local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/targetctl restore ExecStop=/usr/bin/targetctl clear SyslogIdentifier=target [Install] WantedBy=multi-user.target
CODEПосле этого сохранить unit-файл и закрыть текстовый редактор.
Перезагрузить список служб командой:
sudo systemctl daemon-reloadДобавить службу
target
в автозагрузку командой:sudo systemctl enable targetПример вывода после выполнения команды:Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /lib/systemd/system/target.service.
CODEДля проверки следует перезагрузить сервер и вывести информацию о состоянии службы
target
:sudo systemctl status targetПример вывода после выполнения команды:
● target.service - Restore LIO kernel target configuration Loaded: loaded (/lib/systemd/system/target.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2023-03-20 16:28:26 MSK; 9min ago Process: 577 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS) Main PID: 577 (code=exited, status=0/SUCCESS)
CODE
Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства
Установить пакет
open-iscsi
командой:sudo apt install open-iscsiНастроить автоматическое подключение
LUN
при перезагрузке сервера. Для этого в конфигурационном файле/etc/iscsi/iscsid.conf
для параметраnode.startup
установить значениеautomatic:
node.startup = automatic
CODEЗапустить службу клиента (
iSCSI-initiator
) командой:sudo systemctl start iscsiПосле первого запуска сервиса будет сгенерирован уникальный идентификатор инициатора, который можно просмотреть в файле
/etc/iscsi/initiatorname.iscsi
.Пример
InitiatorName=iqn.1993-08.org.debian:01:c1a92326f6b8
CODEЕсли для цели (iSCSI-target) настроен контроль доступа, то уникальный идентификатор инициатора необходимо добавить в список доступа (ACL) цели (
iSCSI-target
) – см. шаг 12 настройки iSCSI-target.Выполнить сканирование для поиска целей (
iSCSI-target
):sudo iscsiadm -m discovery -t st -p <IP-адрес_цели>где <IP-адрес_цели> – IP-адрес узла, предоставляющего доступ к блочному устройству.
Пример вывода после успешного выполнения команды:192.168.55.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 192.168.55.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098
CODEПодключить найденную цель (iSCSI-target):
sudo iscsiadm -m node -T <идентификатор_цели> -p <IP-адрес_цели> -lПример
sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 -p 192.168.55.41 -lКроме того, можно автоматически подключить все найденные цели (iSCSI-target):
sudo iscsiadm -m node -lПример вывода после успешного выполнения команды:Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 192.168.55.41,3260] (multiple) Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 192.168.55.41,3260] (multiple) Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 192.168.55.41,3260] successful. Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 192.168.55.41,3260] successful.
CODEВ случае, если при подключении целей возникли ошибки, необходимо выполнить одну из следующих команд:
- sudo iscsiadm -m session --rescan
- sudo iscsiadm -m session -P3
Если после выполнения команды, указанной выше, ошибка не была устранена, необходимо перезапустить службу
iscsi
командой:sudo systemctl restart iscsiили перезагрузить сервер командой:sudo rebootДля проверки выполнить команду:
lsblkПример вывода после выполнения команды:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 24G 0 disk sdb 8:16 0 24G 0 disk sr0 11:0 1 1024M 0 rom vda 252:0 0 64G 0 disk ├─vda1 252:1 0 63G 0 part / ├─vda2 252:2 0 1K 0 part └─vda5 252:5 0 975M 0 part [SWAP]
CODEгде в качестве локальных блочных устройств
sda
иsdb
выступают сетевые блочные устройства.
Настройка хранилищ c драйвером FS_LVM
Особенности использования драйвера FS_LVM
Исходные образы хранятся как обычные файлы, по умолчанию установлен следующий путь размещения в хранилище образов: /var/lib/one/datastores/<идентификатор_хранилища>
. При создании ВМ образы дисков выгружаются в логические тома (LV). Виртуальные машины запускаются из LV на узле виртуализации.
Для обеспечения совместного доступа всех узлов виртуализации к каталогу хранилища образов используется распределенная файловая система, такая как, например, NFS. При этом необходимо выполнить настройку каталога хранилища образов и точки монтирования так же, как и при использовании хранилища, построенном на базе файловой технологии хранения. Рекомендуется сначала выполнить развертывание хранилища образов, построенного на базе файловой технологии хранения. А затем, убедившись в его корректной работе, заменить его на хранилище LVM.
Сетевая файловая система NFS не поддерживает использование меток безопасности. Если планируется использование файловой системы NFS при построении облачного хранилища, функционирующего в мандатном контексте, то для ВМ следует установить уровень целостности, назначаемый по умолчанию, равным 0 (см. Ограничения, связанные с функционированием файловых систем NFS и OCFS2).
Параметры хранилищ
Для регистрации хранилищ необходимо указать значения следующих параметров:
для системного хранилища:
Параметр Значение NAME
<Имя хранилища>
TYPE
SYSTEM_DS
TM_MAD
fs_lvm
BRIDGE_LIST
Необязательный параметр – список разделенных пробелом имен узлов виртуализации, через которые осуществляется доступ к системному хранилищу.
Не используется, если фронтальная машина имеет прямой доступ к системе хранения данных.
для хранилища образов:
Параметр Значение NAME
<Имя хранилища>
TYPE
IMAGE_DS
DS_MAD
fs
TM_MAD
fs_lvm
DISK_TYPE
BLOCK
BRIDGE_LIST
Необязательный параметр – список разделенных пробелом имен узлов виртуализации, через которые осуществляется доступ к системному хранилищу.
Не используется, если фронтальная машина имеет прямой доступ к системе хранения данных.
SAFE_DIRS
Перечень каталогов, разделенных символом пробела, в которых разрешается размещать образы.
По умолчанию имеет значение "
/var/tmp
"
Регистрация хранилищ в интерфейсе командной строки
Пример
Регистрация системного хранилища с использованием конфигурационного файла:
Создать файл
systemds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "fs_lvm" BRIDGE_LIST = "<узел_виртуализации-1> <узел_виртуализации-2> ... <узел_виртуализации-N>"
CODEВыполнить команду:
onedatastore create systemds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 100
CODE
Пример
Регистрация хранилища образов с использованием конфигурационного файла:
Создать файл
imageds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "fs_lvm" DS_MAD = "fs" DISK_TYPE = "BLOCK" BRIDGE_LIST = "<узел_виртуализации-1> <узел_виртуализации-2> ... <узел_виртуализации-N>"
CODEВыполнить команду:
onedatastore create imageds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 101
CODE
Регистрация хранилищ в веб-интерфейсе
Пример
Регистрация системного хранилища.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "fs_lvm" BRIDGE_LIST = "<узел_виртуализации-1> <узел_виртуализации-2> ... <узел_виртуализации-N>"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере системному хранилищуfs_lvm-system
присвоен идентификатор100
.
Пример
Регистрация хранилища образов.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "fs_lvm" DS_MAD = "fs" DISK_TYPE = "BLOCK" BRIDGE_LIST = "<узел_виртуализации-1> <узел_виртуализации-2> ... <узел_виртуализации-N>"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере хранилищу образовfs_lvm-images
присвоен идентификатор101
.
Настройка ПК СВ для использования системного хранилища LVM
Все узлы виртуализации должны иметь доступ к одним и тем же сетевым блочным устройствам.
К фронтальной машине сетевые блочные устройства можно не подключать. Фронтальная машина может получить доступ к системному хранилищу через узлы виртуализации (параметр BRIDGE_LIST
).
На основе совместно используемых сетевых блочных устройств для каждого хранилища должна быть создана группа томов с именем вида:vg-one-<идентификатор_системного_хранилища>
.
Формирование групп томов достаточно выполнить только на одном из узлов виртуализации.
Пример
Инициализировать блочное устройство для работы с LVM командой:
sudo pvcreate /dev/sdaгде/dev/sda
– сетевое блочное устройство (см. подраздел Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства).
Пример вывода после успешного выполнения команды:Physical volume "/dev/sda" successfully created.
CODEСоздать группу томов (в представленном примере группа состоит из одного тома):
sudo vgcreate vg-one-100 /dev/sdaгде 100 – идентификатор системного хранилищаfs_lvm-system
.
Пример вывода после успешного выполнения команды:Volume group "vg-one-100" successfully created
CODE
Настройка ПК СВ для использования хранилища образов
Необходимо обеспечить совместный доступ всех узлов виртуализации к каталогу хранилища образов. Для этого используется распределенная файловая система, такая как, например, NFS.
Дополнительная информация
Ограничения, связанные с функционированием файловой системы NFS
Сетевая файловая система NFS не поддерживает использование меток безопасности.
Если в ПК СВ, функционирующем в дискреционном режиме, планируется использовать файловую систему NFS, то на каждом узле виртуализации следует установить уровень целостности, назначаемый по умолчанию для ВМ, равным 0. Для этого необходимо выполнить действия, описанные ниже.
Остановить службу
libvirtd
командой:sudo systemctl stop libvirtd.serviceВ конфигурационном файле
/etc/libvirt/libvirtd.conf
, установить значение параметраilev_vm
равное 0.ilev_vm = 0
CODEЗапустить службу
libvirtd
командой:sudo systemctl start libvirtd.service
Пример использования файловой системы NFS
В представленном примере описан процесс настройки сервера NAS, предоставляющего общий доступ к каталогам, в которые смонтированы блочные устройства. Чтобы обеспечить общий доступ к каталогам, на сервере NAS будет настроена служба сервера NFS, а на фронтальной машине и узлах виртуализации – служба клиента NFS.
Дополнительная информация
Сетевая файловая система NFSДля того чтобы блочные устройства автоматически монтировались в заданные каталоги, на сервере NAS необходимо выполнить действия, описанные ниже.
Вывести перечень блочных устройств:
lsblkПример вывода после выполнения команды:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3,9G 0 rom sda 252:0 0 12G 0 disk ├─sda1 252:1 0 11G 0 part / ├─sda2 252:2 0 1K 0 part └─sda5 252:5 0 975M 0 part [SWAP] sdb 252:16 0 24G 0 disk sdc 252:32 0 24G 0 disk
CODEгде:
sda
– диск для размещения файлов ОС;sdb
иsdc
– диски для монтирования в каталоги с общим доступом.
Для подключения к каталогу хранилища образов в данном примере будет использовано блочное устройство
sdb.
Создать файловую систему
ext4
на блочном устройствеsdb
:sudo mkfs.ext4 /dev/sdbПример вывода после успешного выполнения команды:Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
CODEСоздать каталог, например
/mnt/nfs-images
, который будет выступать в качестве сетевого ресурса и в который будет смонтировано блочное устройство. Для этого выполнить команду:sudo mkdir /mnt/nfs-imagesНа каталог назначить владельцем пользователя с UID равным 9869 (
oneadmin
). А в качестве группы-владельца – группу с GID равным 9869 (oneadmin
). Для этого выполнить команду:sudo chown 9869:9869 /mnt/nfs-imagesОпределить идентификаторы (UUID) блочных устройств командой:
sudo blkidПример вывода после выполнения команды:/dev/sda1: UUID="b5fd411a-4c96-491b-bfc0-b4e9e2670e9c" TYPE="ext4" PARTUUID="50741579-01" /dev/sda5: UUID="31daa40d-8e07-44cc-b851-d985f2121bb7" TYPE="swap" PARTUUID="50741579-05" /dev/sdb: UUID="0bb98072-95ad-4042-bd33-7adf62102445" TYPE="ext4" /dev/sdc: UUID="093051cb-e9c2-4932-99a1-16cab2da8e1c" TYPE="ext4"
CODEНастроить автоматическое монтирование блочного устройства в созданный ранее каталог. Для этого в файл
/etc/fstab
добавить следующую строку:UUID=0bb98072-95ad-4042-bd33-7adf62102445 /mnt/nfs-images ext4 _netdev,errors=remount-ro 0 0
CODEВыполнить монтирование командой:
sudo mount -aРезультатом выполнения команды должен быть пустой вывод без ошибок.
Для того чтобы установить и настроить службу сервера NFS, на сервере NAS необходимо выполнить действия, описанные ниже.
Установить службу сервера NFS:
sudo apt install nfs-kernel-serverВ конфигурационном файле
/etc/exports
указать порядок доступа к каталогу. Для этого добавить строку вида:<полный_путь_каталога> <IP-адрес_клиента>(rw,async,no_subtree_check,no_root_squash)
CODEгде
<IP-адрес_клиента>
– IP-адрес фронтальной машины или узла виртуализации. Кроме того, может быть использовано сетевое имя сервера, или, для указания группы серверов, можно использовать адрес сети или подстановочные знаки (подробнее см. справкуman exports
).Пример
Настройка доступа для фронтальной машины с сетевым именем
front
и узлов виртуализации, сетевое имя которых начинается с последовательности символов "node
" (далее следует один любой символ):/mnt/nfs-images front(rw,async,no_subtree_check,no_root_squash) /mnt/nfs-images node?(rw,async,no_subtree_check,no_root_squash)
CODEОбновить правила доступа к каталогам командой:
sudo exportfs -ra
Для того чтобы установить и настроить службу клиента NFS, на фронтальной машине и каждом узле виртуализации необходимо выполнить действия, описанные ниже.
Установить службу клиента NFS:
sudo apt install nfs-commonПросмотреть перечень доступных сетевых ресурсов:
sudo showmount -e <IP-адрес_сервера_NAS>Пример вывода после успешного выполнения команды:Export list for 192.168.1.10: /mnt/nfs-images node?,front
CODEНа каждом узле виртуализации необходимо создать каталог для зарегистрированного ранее хранилища образов. Для этого выполнить команду:
sudo mkdir /var/lib/one/datastores/<идентификатор_хранилища_образов>Пример
sudo mkdir /var/lib/one/datastores/101Настроить автоматическое монтирование сетевого ресурса в каталог хранилища образов. Для этого в файл
/etc/fstab
добавить строку вида:<IP-адрес_сервера_NFS>:<сетевой_ресурс> <каталог_хранилища> nfs _netdev,timeo=14,intr 0 0
CODEПример
192.168.1.10:/mnt/nfs-images /var/lib/one/datastores/101 nfs _netdev,timeo=14,intr 0 0
CODEВыполнить монтирование командой:
sudo mount -aРезультатом выполнения команды должен быть пустой вывод без ошибок.
Настройка хранилищ c драйвером LVM_LVM
Особенности использования драйвера LVM_LVM
Драйвер LVM_LVM позволяет организовать и хранилище образов, и системное хранилище в LVM. При этом, в отличие от использования драйвера FS_LVM, нет необходимости создавать общую сетевую файловую систему для хранилища образов.
При использовании драйвера хранилища LVM_LVM необходимо наличие на всех узлах виртуализации общих блочных устройств хранения данных.
Особенности функционирования драйвера хранилища LVM_LVM:
- предварительно необходимо создать отдельные группы LVM-томов для хранилища образов и системного хранилища;
- при загрузке образа диска ВМ в хранилище образов автоматически создается LVM-том, в который записывается загружаемый образ в формате
RAW
; - при развертывании ВМ в системном хранилище автоматически создается копия LVM-тома из хранилища образов;
- при копирование образа в системное хранилище происходит посекторное клонирование образа, что может занять длительное время. Рекомендуется создавать эталонный образ минимально необходимого объёма с последующим расширением его до необходимого размера при создании ВМ.
Драйвером хранилища LVM_LVM не поддерживается создание снапшотов диска и создание "тонких" дисков (подробнее о "тонких" дисках – см. Особенности использования драйвера LVM_THIN).
Параметры хранилищ
Для регистрации хранилищ необходимо указать значения следующих параметров:
для системного хранилища:
Параметр Значение NAME
<Имя хранилища>
TYPE
SYSTEM_DS
TM_MAD
lvm_lvm
DRIVER
raw
для хранилища образов:
Параметр Значение NAME
<Имя хранилища>
TYPE
IMAGE_DS
DS_MAD
lvm
TM_MAD
lvm_lvm DISK_TYPE
BLOCK
DRIVER
raw
Регистрация хранилищ в интерфейсе командной строки
Пример
Регистрация системного хранилища с использованием конфигурационного файла:
Создать файл
systemds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "lvm_lvm" DRIVER = "raw"
CODEВыполнить команду:
onedatastore create systemds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 100
CODE
Пример
Регистрация хранилища образов с использованием конфигурационного файла:
Создать файл
imageds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "lvm_lvm" DS_MAD = "lvm" DRIVER = "raw" DISK_TYPE = "BLOCK"
CODEВыполнить команду:
onedatastore create imageds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 101
CODE
Регистрация хранилищ в веб-интерфейсе
Пример
Регистрация системного хранилища.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "lvm_lvm" DRIVER = "raw"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере системному хранилищуlvm_lvm-system
присвоен идентификатор100
.
Пример
Регистрация хранилища образов.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "lvm_lvm" DS_MAD = "lvm" DRIVER = "raw" DISK_TYPE = "BLOCK"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере хранилищу образовlvm-lvm-images
присвоен идентификатор101
.
Настройка ПК СВ для использования хранилищ LVM
Все сервера (фронтальные машины и узлы виртуализации) должны иметь доступ к одним и тем же сетевым блочным устройствам.
На одном из серверов для хранилища образов и системного хранилища необходимо создать отдельные группы томов с именем вида:vg-one-<идентификатор_хранилища>
.
Пример
Создание группы томов для системного хранилища.
Инициализировать блочное устройство для работы с LVM командой:
sudo pvcreate /dev/sdaгде/dev/sda
– сетевое блочное устройство (см. подраздел Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства).
Пример вывода после успешного выполнения команды:Physical volume "/dev/sda" successfully created.
CODEСоздать группу томов (в представленном примере группа состоит из одного тома):
sudo vgcreate vg-one-100 /dev/sdaгде 100 – идентификатор системного хранилища lvm-lvm-system
.
Пример вывода после успешного выполнения команды:Volume group "vg-one-100" successfully created
CODE
Пример
Создание группы томов для хранилища образов.
Инициализировать блочное устройство для работы с LVM командой:
sudo pvcreate /dev/sdbгде/dev/sdb
– сетевое блочное устройство (см. подраздел Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства).
Пример вывода после успешного выполнения команды:Physical volume "/dev/sdb" successfully created.
CODEСоздать группу томов (в представленном примере группа состоит из одного тома):
sudo vgcreate vg-one-101 /dev/sdbгде 101 – идентификатор системного хранилища lvm-lvm-images
.
Пример вывода после успешного выполнения команды:Volume group "vg-one-101" successfully created
CODE
Настройка хранилищ c драйвером LVM_THIN
Особенности использования драйвера LVM_THIN
Драйвер LVM_LVM позволяет организовать и хранилище образов, и системное хранилище в LVM. В отличие от драйвера LVM_LVM, при создании в системном хранилище нового логического тома LVM, его фактический размер соответствует объему имеющихся данных на исходном LVM-томе, и увеличивается по мере записи данных в этот том. Такой логический том LVM называют "тонким" LVM-томом. При этом для каждого узла виртуализации в общем системном хранилище организуется индивидуальный ресурс – пул "тонких" LVM-томов.
Тонкие LVM-тома не могут совместно использоваться несколькими узлами. В связи с этим, при использовании драйвера хранилища LVM_THIN не поддерживается миграция ВМ.
Особенности функционирования драйвера хранилища LVM_THIN:
- предварительно необходимо создать отдельную группу LVM-томов для хранилища образов;
- на каждом узле виртуализации предварительно необходимо создать отдельную группу LVM-томов с привязкой к общему системному хранилищу;
- на каждом узле виртуализации предварительно необходимо создать отдельный пул "тонких" LVM-томов;
- при загрузке образа диска ВМ в хранилище образов автоматически создается LVM-том, в который пишется загружаемый образ в формате
RAW
; при развертывании ВМ в системном хранилище из исходного LVM-тома автоматически создается "тонкий" LVM-том в формате
QCow2
.Пример
Для просмотра перечня имеющихся LVM-томов на узле виртуализации необходимо выполнить команду:
sudo lvsПример вывода после выполнения команды:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert onethinpool vg-one-100-node1 twi-a-tz-- 34,00g 0,00 10,46 lv-one-vm-5-0 vg-one-100-node2 Vwi---tz-- 12,00g onethinpool onethinpool vg-one-100-node2 twi-aotz-- 20,00g 30,09 18,40 lv-one-image-2 vg-one-101 -wi-a----- 12,00g lv-one-image-3 vg-one-101 -wi-a----- 4,34g
CODEВ представленном примере для диска с идентификатором 0 виртуальной машины с идентификатором 5 был создан "тонкий" LVM-том с наименованием
lv-one-vm-5-0
.
Параметры хранилищ
Для регистрации хранилищ необходимо указать значения следующих параметров:
для системного хранилища:
Параметр Значение NAME
<Имя хранилища>
TYPE
SYSTEM_DS
TM_MAD
lvm_thin
для хранилища образов:
Параметр Значение NAME
<Имя хранилища>
TYPE
IMAGE_DS
DS_MAD
lvm_thin
TM_MAD
lvm_thin
DISK_TYPE
BLOCK
DRIVER
qcow2
Регистрация хранилищ в интерфейсе командной строки
Пример
Регистрация системного хранилища с использованием конфигурационного файла:
Создать файл
systemds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "lvm_thin"
CODEВыполнить команду:
onedatastore create systemds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 100
CODE
Пример
Регистрация хранилища образов с использованием конфигурационного файла:
Создать файл
imageds.txt
следующего содержания:NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "lvm_thin" DS_MAD = "lvm_thin" DRIVER = "qcow2" DISK_TYPE = "BLOCK"
CODEВыполнить команду:
onedatastore create imageds.txtПосле выполнения команды будет выведен идентификатор созданного хранилища, например:ID: 101
CODE
Регистрация хранилищ в веб-интерфейсе
Пример
Регистрация системного хранилища.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "SYSTEM_DS" TM_MAD = "lvm_thin"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере системному хранилищуlvm-thin-system
присвоен идентификатор 100.
Пример
Регистрация хранилища образов.
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- перейти во вкладку Расширенный;
во вкладке Расширенный в поле Сохранить шаблон Хранилища здесь ввести следующие строки:
NAME = "<наименование_хранилища>" TYPE = "IMAGE_DS" TM_MAD = "lvm_thin" DS_MAD = "lvm_thin" DRIVER = "qcow2" DISK_TYPE = "BLOCK"
CODE- нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON.
В представленном примере хранилищу образовlvm-thin-images
присвоен идентификатор101
.
Настройка ПК СВ для использования хранилища образов LVM
Все сервера (фронтальные машины и узлы виртуализации) должны иметь доступ к одним и тем же сетевым блочным устройствам.
На одном из серверов необходимо создать отдельную группу томов для хранилища образов:vg-one-<идентификатор_хранилища_образов>
.
Пример
Инициализировать блочное устройство для работы с LVM командой:
sudo pvcreate /dev/sdbгде/dev/sdb
– сетевое блочное устройство (см. подраздел Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства).
Пример вывода после успешного выполнения команды:Physical volume "/dev/sdb" successfully created.
CODEСоздать группу томов (в представленном примере группа состоит из одного тома):
sudo vgcreate vg-one-101 /dev/sdbгде 101 – идентификатор системного хранилища lvm-thin-images
.
Пример вывода после успешного выполнения команды:Volume group "vg-one-101" successfully created
CODE
Настройка ПК СВ для использования системного хранилища LVM
- На каждом из узлов виртуализации необходимо создать отдельную группу томов с именем вида:
vg-one-<идентификатор_системного_хранилища>-<имя_узла_виртуализации>
. - На каждом из узлов виртуализации в созданной группе томов необходимо создать пул логических томов с именем вида:
vg-one-<идентификатор_системного_хранилища>-<имя_узла_виртуализации>/onethinpool.
Пример
Инициализировать блочное устройство для работы с LVM командой:
sudo pvcreate /dev/sdaгде/dev/sda
– сетевое блочное устройство (см. подраздел Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства).
Пример вывода после успешного выполнения команды:Physical volume "/dev/sda" successfully created.
CODEСоздать группу томов (в представленном примере группа состоит из одного тома):
sudo vgcreate vg-one-100-node1 /dev/sdaгде:- 100 – идентификатор системного хранилища
lvm-thin-system
; node1
– сетевое имя узла виртуализации.
Пример вывода после успешного выполнения команды:
Volume group "vg-one-100-node1" successfully created
CODE- 100 – идентификатор системного хранилища
Создать пул логических томов:
sudo lvcreate -T -L <размер>G vg-one-100-node1/onethinpoolгде<размер>
– размер "тонкого" LVM-тома в ГБ, должен быть не больше размера локального блочного устройства (в представленном примере —/dev/sda
).Пример вывода после успешного выполнения команды:
Thin pool volume with chunk size 64,00 KiB can address at most 15,81 TiB of data. Logical volume "onethinpool" created.
CODE
При создании "тонкого" LVM-тома дополнительно к исходному LVM-тому создаются два скрытых тома под метаданные (информация о выделенных блоках). При исчерпании свободного места в пуле логических томов возникает потеря метаданных на скрытых томах. Это приводит к повреждению файловых систем на "тонких" LVM-томах, что проявляется как ошибка записи.
Поврежденные метаданные возможно восстановить с помощью команды:
Драйвер LVM_THIN поддерживает автоматическое увеличение размера пула "тонких" логических томов при его заполнении. Для этого необходимо всегда оставлять свободное место в группе LVM-томов. Автоматическое увеличение размера томов по умолчанию выключено. Для того чтобы его включить, необходимо в конфигурационном файле /etc/lvm/lvm.conf
скорректировать значения следующих параметров:
- "
thin_pool_autoextend_threshold
" — пороговое значение (в процентах от заданного размера "тонкого" LVM-тома) при котором автоматически будет увеличен размер этого тома. По умолчанию имеет значение "100", в этом случае автоматическое расширение тома не производится; - "
thin_pool_autoextend_percent
" — объем дискового пространства (в процентах от заданного размера "тонкого" LVM-тома) на которое автоматически будет увеличен размер этого тома. По умолчанию имеет значение "20".
Пример
Автоматическое увеличение размера томов на 20%, когда объем дискового пространства, выделенный для "тонкого" LVM-тома заполнится на 70%.
thin_pool_autoextend_threshold = 70
thin_pool_autoextend_percent = 20
Например, был создан "тонкий" LVM-том размером 1 ГБ. Когда объем данных, размещенных на этом томе, достигнет размера 700 МБ, "тонкий" LVM-том будет автоматически расширен до 1,2 ГБ. После того как объем данных, размещенных на этом томе, достигнет размера 840 МБ, "тонкий" LVM-том будет автоматически расширен до 1,44 ГБ.