Создание и настройка LVM Linux
LVM или Logical Volume Manager — это еще один программный уровень абстракции над физическими разделами жесткого диска, который позволяет создавать логические тома для хранения данных без непосредственной переразметки жесткого диска на одном или нескольких жестких дисках. LVM увеличивает удобство работы с жестким диском, аппаратные особенности работы скрываются программным обеспечением, поэтому вы можете изменять размеры дисков, перемещать их на лету, без остановки приложений или размонтирования файловых систем. Это очень удобно на серверах, вы можете добавить еще один диск или расширить существующие lvm тома на лету.
LVM работает на уровне ядра, поэтому гарантируется максимальная прозрачность настройки и использования дисков. Программы смогут работать с логическими, виртуальными LVM разделами, точно так же, как и с обычными.
Давайте рассмотрим преимущества использования LVM перед обычными разделами жесткого диска.
- Легкое изменение размера — вы можете расширить или уменьшить lvm раздел без переформатирования диска
- Легкая расширяемость пространства — вы можете увеличить доступное пространство просто добавляя новые физические диски в общий пул памяти LVM, таким образом, вы получаете большую гибкость.
- Резервное копирование и зеркалирование данных — возможность записи на несколько дисков одновременно позволяет увеличить производительность работы системы, а также есть возможность настроить зеркалирование данных и резервное копирование разделов для увеличения безопасности.
- Читаемые имена — вы можете давать любые имена вашим логическим разделам, так чтобы они соответствовали назначению раздела и легко запоминались.
Теперь перейдем от теории ближе к практике. Рассмотрим создание LVM, настройку и работу с дисками. Как основную операционную систему мы будем использовать Ubuntu, но данная инструкция подойдет и для любого другого дистрибутива Linux.
Создание LVM Linux
Структура LVM состоит из трех слоев:
- Физический том (один или несколько), Physical Volume (PV)
- Группа физических томов, Volume Group (VG)
- Логический том, который и будет доступен программам, Logical Volume (LV)
Перед тем как начинать создание lvm linux необходимо установить нужные для этого инструменты:
sudo apt install lvm2
Соответственно структуре LVM, нам нужно будет инициализировать физические разделы для LVM, объединить их в группу, а затем создать из этой группы нужные нам логические тома.
Инициализация физических LVM разделов
Сначала определимся с томами, которые будем использовать, допустим это будут /dev/sda6 и /dev/sda7. Инициализировать их для работы LVM можно с помощью команды pvcreate:
sudo pvcreate /dev/sda6 /dev/sda7

Чтобы посмотреть действительно ли были созданы физические тома LVM вы можете использовать команду pvscan:

Также можно посмотреть физические LVM разделы с более подробными атрибутами, такими как размер, общий размер, физический размер, свободное место и т д:

Здесь PE Size — это размер одного блока LVM, по умолчанию он равен четырем мегабайтам, но это значение можно изменить.
Создание группы разделов LVM
Группа томов — это не что иное, как пул памяти, который будет распределен между логическими томами и может состоять из нескольких физических разделов. После того как физические разделы инициализированы, вы можете создать из них группу томов (Volume Group, VG):
sudo vgcreate vol_grp1 /dev/sda6 /dev/sda7

С помощью LVM команды vgdisplay вы можете посмотреть созданные группы томов:

Создание логических томов LVM
Теперь все готово, чтобы создать логические LVM разделы. Для этого будем использовать команду lvcreate и создадим логический раздел размером 80 мегабайт, или 20 блоков LVM:
sudo lvcreate -l 20 -n logical_vol1 vol_grp1
Если вы хотите задать размер в обычных единицах измерения, то необходимо использовать опцию -L. Например, для тех же 80-ти мегабайт:
sudo lvcreate -L 80M -n logical_vol1 vol_grp1

В качестве приставки для указания размера можно использовать такие буквы:
Посмотреть список доступных логических разделов LVM можно по аналогии с предыдущими разделами с помощью команды lvdisplay:

Теперь, когда раздел создан, мы можем работать с ним как с обычным разделом. Например, отформатируем его в файловую систему ext4, а затем примонтируем в /mnt:
sudo mkfs.ext4 /dev/vol_grp1/logical_vol1
sudo mount /dev/vol_grp1/logical_vol1 /mnt/

Как видите, монтирование LVM в Linux ничем не отличается от монтирования обычных разделов.
Вообще говоря, LVM разделы могут быть трех типов:
- Линейные разделы (Linear Volume)
- Полосные разделы (Striped Volume)
- Зеркалированные разделы (Mirrored Volume)
Линейные разделы — это обычные LVM тома, они могут быть созданы как из одного, так и из нескольких физических дисков. Например, если у вас есть два диска по 2 гигабайта, то вы можете их объединить и в результате получите один раздел LVM Linux, размером 4 гигабайта. По умолчанию используются именно линейные LVM разделы.
Полосные разделы очень полезны при больших нагрузках на жесткий диск. Здесь вы можете настроить одновременную запись на разные физические устройства, для одновременных операций, это может очень сильно увеличить производительность работы системы.
Для этого нужно задать количество полос записи с помощью опции -i, а также размер полосы опцией -l. Количество полос не должно превышать количества физических дисков. Например:
sudo lvcreate -L 1G -i 2 -n logical_vol2 vol_grp1

Зеркалированный том позволяет записывать данные одновременно на два устройства. Когда данные пишутся на один диск, они сразу же копируются на другой. Это позволяет защититься от сбоев одного из дисков. Если один из дисков испортится, то разделы LVM просто станут линейными и все данные по-прежнему будут доступны. Для создания такого раздела LVM Linux можно использовать команду:
sudo lvcreate -L 200M -m1 -n lv_mirror vol_grp1

Удалить LVM раздел
Вы можете не только настроить LVM тома изменяя их размер и атрибуты, но и удалить LVM раздел, если он вам больше не нужен. Это делается с помощью LVM команды lvremove:
sudo lvremove /dev/vol-grp1/lv_mirror
Теперь лишний раздел удален.
Изменение размера LVM тома
Вы можете изменять уже созданные разделы LVM увеличивая или уменьшая их размер. Причем неважно есть ли место на физическом диске после этого раздела, если в пуле есть память, вы можете ее использовать для любого раздела. Чтобы изменить размер LVM используйте команду lvextend. Например, LVM увеличим размер диска из 80 до 100 мегабайт:
sudo lvextend -L100 /dev/vol_grp1/logical_vol1
Extending logical volume logical_vol1 to 100.00 MB
Logical volume logical_vol1 successfully resize
Также вы можете увеличить размер LVM, использовав знак +:
sudo lvextend -L+100M /dev/vol_grp1/logical_vol1

Точно так же можно выполнить уменьшение LVM раздела с помощью знака -.
Выводы
В этой статье мы рассмотрели создание LVM разделов в linux, а также настройку, увеличение, уменьшение и монтирование LVM Linux. Теперь вы знаете насколько это мощная технология и сколько преимуществ она может дать не только на сервере, но и на домашнем ПК. Вы раньше использовали LVM? Будете использовать?
Lvm astra linux что это
В инструкции описано создание хранилища типа LVM в облаке ПК СВ «Брест».
В хранилище данного типа менеджер томов LVM используется только для хранилища system. Обеспечивающие работу облака сервисы, при создании ВМ выделяют в этом хранилище новые логические тома и копируют в них содержимое нужных образов из хранилище images. Хранилище images необходимо будет отформатировать кластерной ФС.
При использовании драйвера хранилища LVM_THIN клонирование образа диска ВМ допускается, только если ВМ выключена.
Требования
- Развернута фронтальная машина облака
- LUN-ы примапплены к узлам кластера
Создание хранилищ из командной строки
Прежде всего необходимо создать сущности хранилищ в интерфейсе управления облаком ПК СВ «Брест». Откройте командную строку Front-end и сформируйте два файла:
NAME = images-ds-lvm DS_MAD = fs TM_MAD = fs_lvm DISK_TYPE = "BLOCK" TYPE = IMAGE_DS SAFE_DIRS = "/var/tmp /tmp" BRIDGE_LIST = " . "
NAME = system-ds-lvm TYPE = SYSTEM_DS TM_MAD = fs_lvm
NAME — имя хранилища
BRIDGE_LIST = узлы, которые будут иметь доступ к логическим томам.
После этого выполнить команды:
sudo onedatastore create images.txt sudo onedatastore create system.txt
Хранилища будут созданы. Отобразить их можно командой:
sudo onedatastore list ID NAME SIZE AVAIL CLUSTERS IMAGES TYPE DS TM STAT 0 system - - 0 0 sys - ssh on 1 default 18.6G 49% 0 0 img fs ssh on 2 files 18.6G 49% 0 0 fil fs ssh on 100 images-ds-lvm 100G 55% 0 8 img fs fs_lvm on 101 system-ds-lvm 100G 42% 0 0 sys - fs_lvm on
Необходимо запомнить идентификаторы хранилищ (в данном примере — 100 и 101).
Разметка хранилища images
Хранилище images должно быть отформатировано кластерной файловой системой. Как это сделать, можно посмотреть в разделе Создание файловых систем.
Отформатировать нужно только 1 LUN, предназначенный для хранилища images
Разметка хранилища system
LUN для хранилища system будет обслуживаться менеджером томов LVM.
На каждом узле кластера (фронтальных машинах и узлах виртуализации) в конфигурационном файле найдите и установите следующий параметр в соответствии с:
use_lvmetad = 0
Создайте следующий путь командой:
sudo mkdir /var/lib/one/datastores/
— идентификатор хранилища system (в примере выше — 101)
Далее на фронтальной машине выполните:
sudo pvcreate /dev/
— имя блочного устройства LUN , которое можно определить командой lsblk
Затем создайте группу томов:
sudo vgcreate vg-one- /dev/
— идентификатор хранилища system (в примере выше — 101)
Проверка
После создания хранилища, через несколько минут, в веб-интерфейсе облака ПК СВ «Брест» в разделе Storage — Datastores, будут отображаться созданные хранилища images и system:

Если индикация объема хранилища соответствует выделенному на СХД для каждого LUN (в примере — 100 Гб) — настройка проведена правильно.
Установка Astra Linux на LVM и применение LVM для отката обновлений
LVM — Менеджер логических томов (англ. logical volume manager ) — подсистема, позволяющая использовать разные области одного жёсткого диска и/или области с разных жёстких дисков как один логический том.
Термины
- Физический том ( physical volume , pv) — устройство, представляющееся системе как один диск (жёсткий диск или его раздел, RAID-массив);
- Группа томов ( volume group , vg) — несколько физических томов pv (группа, набор);
- Логический том ( logical volume , lv) — логический раздел; аналог разделов hda1, sdb3 и др.; виртуальное блочное устройство.
Установка ОС Astra Linux на логических дисках LVM
Для установки ОС Astra Linux на логические диски под управлением LVM следует:
-
Начать установку в обычном режиме и продолжить её до этапа выбора разметки дисков:

- Выбрать диск для разметки:

- Выбрать способ разметки диска (для примера — автоматическая разметка с размещением всех файлов в одном дисковом разделе):
Дисковый раздел для размещения каталога /boot по умолчанию создаётся с размером 254МБ, что может в дальнейшем оказаться недостаточным для установки дополнительных ядер. Для предотвращения возможных проблем с установкой обновлений рекомендуется сразу увеличить размер этого раздела по крайней мере до 512МБ.

Проверка успешности установки LVM
Проверить наличие LVM можно командой просмотра списков групп томов:
sudo vgs
VG #PV #LV #SN Attr VSize VFree
astra-vg 2 4 2 wz—n- 37,75g 12,00g
В примере выше сообщается о наличии группы томов astra-vg с общим размером 37.75GB, в том числе 12ГБ свободного пространства (Имя astra-vg выбирается по умолчанию при стандартной установке ОС).
Так же проверить наличие LVM можно командой просмотра списков логических томов, например:
sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvsnap astra-vg swi-a-s— 4,00g root 79,20
lvsnap2 astra-vg swi-a-s— 4,00g root 75,78
root astra-vg owi-aos— 15,76g
swap_1 astra-vg -wi-ao—- 2,00g
В примере выше сообщается о наличии томов root и swap_1 (создаются автоматически при установке «по умолчанию»), и о наличии двух моментальных снимков логического тома root (см. параметр Origin) с именами lvsnap и lvsnap2, заполненных на 79.20% и 75.78%.
Применение LVM для отката изменений
Моментальные снимки делаются в ту же группу томов, в которой находится сохраняемый том, соответственно в этой группе томов должно быть достаточно свободного места.
Добавление свободного пространства
Если при установке системы при разметки дисковых разделов не было зарезервировано свободное место, можно подключить и добавить в группу новый накопитель или дисковый раздел. Например, добавим накопитель /dev/sdb:
sudo pvcreate /dev/sdb
Проверить список используемых физических томов можно командой:
pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 astra-vg lvm2 a— 17,76g 0
/dev/sdb astra-vg lvm2 a— 20,00g 12,00g
В примере выше представлены два физических тома (том /dev/sda5, являющийся дисковым разделом (создан автоматически при установке системы), и том /dev/sdb, являющийся устройством, и добавленный после установки системы. При этом оба тома входят в группу томов astra-vg).
После создания физического тома его нужно добавить в какую-либо группу томов (фактически — расширить группу томов на новый физический том), например, добавим созданный физический том в созданную при установке группу томов vg-astra:
sudo vgextend astra-vg /dev/sdb
Создание моментального снимка
Моментальный снимок можно создать командой:
sudo lvcreate -L 4GB -s -n lvsnap /dev/astra-vg/root
- -L 4GB — размер пространства, отводимого под снимок.
Моментальный снимок не является копией диска, а содержит только изменения после момента создания диска. Поэтому:
- Снимок создаётся быстро, практически моментально;
- Размер места, назначаемого для размещения снимка, не зависит от размеров сохраняемого носителя, а зависит только от количества вносимых изменений;
- Место, отведённое под снимок, расходуется по мере внесения изменений;
При установке обновлений вносится значительное количество изменений. В качестве примера: при написании этой статьи при установке Update 3 на ранее не обновлявшуюся ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с минимальной конфигурацией ПО из отведённых под снимок 4ГБ было израсходовано 79%. Очевидно, при этом количество изменений зависит от набора установленного ПО (чем больше ПО — тем больше изменений), и от наличия ранее установленных обновлений (если были установлены предыдущие обновления — то изменений будет меньше).
- -s — команда выполнения снимка состояния;
- -n lvsnap — имя создаваемого логического тома со снимком (lvsnap);
- /dev/astra-vg/root — имя сохраняемого тома (см. выше примеры команд, выводящих списки томов).
Для предупреждения отказов записи из-за переполнения области снимка в настройках LVM предусмотрена возможность автоматического увеличения размеров логических томов по мере их заполнения, для чего в файле /etc/lvm/lvm.conf предусмотрены параметры:
- snapshot_autoextend_treshold = 100 — величина в процентах, указывающая, при каком заполнении тома производить его автоматическое увеличение. По умолчанию установлена величина 100%, т.е. автоматическое увеличение отключено;
- snapshot_autoextend_percent = 20 — величина, указывающая, на сколько процентов автоматически увеличивать том.
При переполнении пространства, отводимого под снимок, запись на диск будет запрещена. Логический том может увеличиваться автоматически, но для этого должно иметься свободное место в содержащей этот логический том группе томов. Группа томов автоматически увеличиваться не может.
Откат изменений
- Для отката изменений следует перезагрузить компьютер, например, с Live-образа Astra Linux Common Edition (или с отдельного дискового раздела, если такой раздел предусмотрен в системе).
-
При работе в открытой сети:
- Нет меток
-
Если в сети не настроено автоматическое назначение параметров сетевых подключений, то вручную настроить подключение к сети (в частности, указать в настройках сетевого подключения сервер DNS, например 8.8.8.8) и перезапустить службу сети, чтобы это изменение настройки вступило в силу;
sudo apt update
sudo apt install lvm2
sudo lvconvert —merge /dev/astra-vg/lvsnap
Внимание! Загрузочный дисковый раздел /boot НЕ ДОЛЖЕН находиться на диске LVM.
При установке ОС Astra Linux с параметрами «по умолчанию» это правило будет выполнено автоматически, при ручных настройках следует выделить для размещения загрузочных данных отдельный дисковый раздел.
Внимание! Если предполагается в дальнейшем сохранять снимки состояния системы, то при разметке дисковых разделов рекомендуется предусмотреть свободное место для размещения этих снимков (не обязательно, так как в дальнейшем можно подключить и использовать дополнительные накопители).
Можно также зарезервировать отдельный загрузочный раздел, чтобы загружаться с него для восстановления системы из сделанных снимков (на него понадобится установить отдельный экземпляр ОС).
LVM — это просто!
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
LVM — это дополнительный слой абстракции от железа, позволяющий собрать кучи разнородных дисков в один, и затем снова разбить этот один именно так как нам хочется.
есть 3 уровня абстракции:
1. PV (Physical Volume) — физические тома (это могут быть разделы или целые «неразбитые» диски)
2. VG (Volume Group) — группа томов (объединяем физические тома (PV) в группу, создаём единый диск, который будем дальше разбивать так, как нам хочется)
3. LV (Logical Volume) — логические разделы, собственно раздел нашего нового «единого диска» ака Группы Томов, который мы потом форматируем и используем как обычный раздел, обычного жёсткого диска.
это пожалуй вся теория. 🙂 теперь практика:
для работы нужны пакеты lvm2 и возможность работать с привелегиями root поэтому:
$ sudo bash
# apt-get install lvm2
допустим у нас в компе есть жёсткий диск на 40Гб и нам удалось наскрести немного денег и наконец-то купить себе ТЕРАБАЙТНИК! :))) Система уже стоит и работает, и первый диск разбит одним разделом (/dev/sda1 как / ), второй — самый большой, который мы только подключили — вообще не разбит /dev/sdb…
Предлагаю немножко разгрузить корневой диск, а заодно ускорить (новый диск работает быстрее старого) и «обезопасить» систему с помощью lvm.
Можно делать на втором диске разделы и добавлять их в группы томов (если нам нужно несколько групп томов),
а можно вообще не делать на диске разделы и всё устройство сделать физическим разделом (PV)
root@ws:~# pvcreate /dev/sdb
Physical volume «/dev/sdb» successfully created
Создаём группу томов с говорящим названием, например по имени машины «ws», чтобы когда мы перетащим данный диск на другую машину небыло конфликтов с именами групп томов:
root@ws:~# vgcreate ws /dev/sdb
Volume group «vg0» successfully created
желательно внести с корневого раздела такие папки как /usr /var /tmp /home, чтобы не дефрагментировать лишний раз корневой раздел и ни в коем случае его не переполнить, поэтому создаём разделы:
root@ws:~# lvcreate -n usr -L10G ws # здесь мы создаём раздел с именем «usr», размером 10Gb
Logical volume «usr» created
по аналогии делаем то же для /var, /tmp, /home:
root@ws:~# lvcreate -n var -L10G ws
root@ws:~# lvcreate -n tmp -L2G ws
root@ws:~# lvcreate -n home -L500G ws
у нас ещё осталось немного свободного места в группе томов (например для будущего раздела под бэкап)
посмотреть сколько именно можно командой:
root@ws:~# vgdisplay
информацию по созданным логическим томам
root@ws:~# lvdisplay
информацию по физическим томам
root@ws:~# pvdisplay
разделы что мы создали появятся в папке /dev/[имя_vg]/, точнее там будут ссылки на файлы,
lrwxrwxrwx 1 root root 22 2009-08-10 18:35 swap -> /dev/mapper/ws-swap
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 tmp -> /dev/mapper/ws-tmp
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 usr -> /dev/mapper/ws-usr
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 var -> /dev/mapper/ws-var
и т.д…
дальше lvm уже почти кончается… форматируем наши разделы в любимые файловые системы:
root@ws:~# mkfs.ext2 -L tmp /dev/ws/tmp
root@ws:~# mkfs.ext4 -L usr /dev/ws/usr
root@ws:~# mkfs.ext4 -L var /dev/ws/var
root@ws:~# mkfs.ext4 -L home /dev/ws/home
кстати, не плохо было бы сделать раздел подкачки:
root@ws:~# lvcreate -n swap -L2G ws
root@ws:~# mkswap -L swap /dev/ws/swap
root@ws:~# swapon /dev/ws/swap
создаём папку и подключая по очереди новообразовавшиеся тома, копируем в них нужное содержимое:
root@ws:~# mkdir /mnt/target
root@ws:~# mount /dev/ws/home /mnt/target
копируем туда всё из папки /home своим любимым файловым менеджером (с сохранением прав доступа), например так ;):
root@ws:~# cp -a /home/* /mnt/target/
root@ws:~# umount /mnt/target/
кстати, для папки temp необходимо только поправить права, копировать туда что-либо необязательно:
root@ws:~# mount /dev/ws/tmp /mnt/target && chmod -R a+rwx /mnt/target && umount /mnt/target/
добавляем нужные строчки в /etc/fstab, например такие:
/dev/mapper/ws-home /home ext4 relatime 0 2
/dev/mapper/ws-tmp /tmp ext2 noatime 0 2
/dev/mapper/ws-swap none swap sw 0 0
и перезагружаемся… (продвинутые господа могут обойтись без перезагрузки ;))
На вкусное, хочу предложить более продвинутую штуку:
допустим у нас есть система с разделом на LVM, а жёсткий диск начал сбоить, тогда мы можем без перезагрузки переместить всю систему на другой жёсткий диск/раздел:
# On-line добавление/удаление жёстких дисков с помощью LVM (пример)
root@ws:~# pvcreate /dev/sda1 # наш эмулятор сбойного диска
Physical volume «/dev/sda1» successfully created
root@ws:~# pvcreate /dev/sdb1 # наш эмулятор спасательного диска
Physical volume «/dev/sdb1» successfully created
root@ws:~# vgcreate vg0 /dev/sda1 # создаю группу томов vg0
Volume group «vg0» successfully created
root@ws:~# lvcreate -n test -L10G vg0 #создаю раздел для «важной» инфы
Logical volume «test» created
root@ws:~# mkfs.ext2 /dev/vg0/test # создаю файловую систему на разделе
root@ws:~# mount /dev/mapper/vg0-test /mnt/tmp/ #монтирую раздел
… # заполняю его информацией, открываю на нем несколько файлов и т.п.
root@ws:~# vgextend vg0 /dev/sdb1 # расширяю нашу групу томов на «спасательный» диск
Volume group «vg0» successfully extended
root@work:~# pvmove /dev/sda1 /dev/sdb1 #передвигаю содержимое с «умирающего» диска на «спасательный»
/dev/sda1: Moved: 0.9%
/dev/sda1: Moved: 1.8%
…
/dev/sda1: Moved: 99.7%
/dev/sda1: Moved: 100.0%
root@work:~# vgreduce vg0 /dev/sda1 # убираю «умирающий» диск из группы томов.
Removed «/dev/sda1» from volume group «vg0»
Итого:
Я создал логический раздел, отформатировал его, примонтировал и заполнил нужными данными, затем переместил его с одного устройства на другое, при этом раздел остался примонтирован и данные всё время оставались доступны!
Подобным образом мне удавалось без перезагрузки перенести всю систему с умирающего диска на рэид-массив. 🙂
А это моя любимая ссылка по LVM: xgu.ru/wiki/LVM
P.S. Прошу простить за опечатки, меня постоянно отвлекали =))
P.P.S. Ах, да. Самое главное и самый большой минус LVM — он не читается grub’ом
поэтому раздел /boot должен находиться вне LVM на отдельном разделе жёсткого диска,
иначе система не загрузится.