baltun

Администратор
Сообщения
10.890
Реакции
2.594
Баллы
2.003
LVM или Logical Volume Manager - это еще один программный уровень абстракции над физическими разделами жесткого диска, который позволяет создавать логические тома для хранения данных без непосредственной переразметки жесткого диска на одном или нескольких жестких дисках. LVM увеличивает удобство работы с жестким диском, аппаратные особенности работы скрываются программным обеспечением, поэтому вы можете изменять размеры дисков, перемещать их на лету, без остановки приложений или размонтирования файловых систем. Это очень удобно на серверах, вы можете добавить еще один диск или расширить существующие lvm тома на лету.

Самый простой вариант проводить все работы, создание, монтирование, сжатие, уделение LVM через Cockpit.

LVM работает на уровне ядра, поэтому гарантируется максимальная прозрачность настройки и использования дисков. Программы смогут работать с логическими, виртуальными LVM разделами, точно так же, как и с обычными.

Давайте рассмотрим преимущества использования LVM перед обычными разделами жесткого диска.

  • Легкое изменение размера - вы можете расширить или уменьшить lvm раздел без переформатирования диска
  • Легкая расширяемость пространства - вы можете увеличить доступное пространство просто добавляя новые физические диски в общий пул памяти LVM, таким образом, вы получаете большую гибкость.
  • Резервное копирование и зеркалирование данных - возможность записи на несколько дисков одновременно позволяет увеличить производительность работы системы, а также есть возможность настроить зеркалирование данных и резервное копирование разделов для увеличения безопасности.
  • Читаемые имена - вы можете давать любые имена вашим логическим разделам, так чтобы они соответствовали назначению раздела и легко запоминались.
Создание и инициализация физических LVM разделов.
Структура LVM состоит из трех слоев:
  • Физический том (один или несколько), Physical Volume (PV)
  • Группа физических томов, Volume Group (VG)
  • Логический том, который и будет доступен программам, Logical Volume (LV)
Сначала определимся с томами, которые будем использовать, допустим это будут /dev/sdb и /dev/sdc. Инициализировать их для работы LVM можно с помощью команды pvcreate:
Код:
sudo pvcreate /dev/sdb /dev/sdc

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

Также можно посмотреть физические LVM разделы с более подробными атрибутами, такими как размер, общий размер, физический размер, свободное место и т д:
Код:
sudo pvdisplay
Здесь PE Size - это размер одного блока LVM, по умолчанию он равен четырем мегабайтам, но это значение можно изменить.

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

С помощью LVM команды vgdisplay вы можете посмотреть созданные группы томов:
Код:
sudo 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

В качестве приставки для указания размера можно использовать такие буквы:
  • B - байты;
  • K - килобайты;
  • M - мегабайты;
  • G - гигабайты;
  • T - терабайты.
Посмотреть список доступных логических разделов LVM можно по аналогии с предыдущими разделами с помощью команды lvdisplay:
Код:
sudo 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

Добавить весь объем диска:
Код:
lvextend -l +100%FREE /dev/vol_grp1/logical_vol1

Также вы можете увеличить размер LVM, использовав знак +:
Код:
sudo lvextend -L+100M /dev/vol_grp1/logical_vol1
Точно так же можно выполнить уменьшение LVM раздела с помощью знака -.

Увеличение размера файловой системы.​

Чтобы сама система увидела больший объем дискового пространства, необходимо увеличить размер файловой системы.
Посмотреть используемую файловую систему:
Код:
df -T

Для каждой файловой системы существуют свои инструменты.
ext2/ext3/ext4:
Код:
resize2fs /dev/vg01/lv01

XFS:
Код:
xfs_growfs /dev/vg01/lv01

Reiserfs:
Код:
resize_reiserfs /dev/vg01/lv01

Работа со снапшотами​

Снимки диска позволят нам откатить состояние на определенный момент. Это может послужить быстрым вариантом резервного копирования. Однако нужно понимать, что данные хранятся на одном и том же физическом носителе, а значит, данный способ не является полноценным резервным копированием.
Создание снапшотов для тома, где уже используется файловая система XFS, имеет некоторые нюансы, поэтому разберем разные примеры.
Создание для не XFS:
Код:
lvcreate -L500 -s -n sn01 /dev/vg01/lv01
* данная команда помечает, что 500 Мб дискового пространства устройства /dev/vg01/lv01 (тома lv01 группы vg01) будет использоваться для snapshot (опция -s).

Создание для XFS:
Код:
xfs_freeze -f /mnt; lvcreate -L500 -s -n sn01 /dev/vg01/lv01; xfs_freeze -u /mnt
* команда xfs_freeze замораживает операции в файловой системе XFS.

Посмотрим список логических томов:
Код:
lvs

Получим что-то на подобие:
Код:
LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv01 vg01 owi-aos---   1,00g
sn01 vg01 swi-a-s--- 500,00m      lv01   2,07
* поле Origin показывает, к какому оригинальному логическому тому относится LV, например, в данной ситуации наш раздел для снапшотов относится к lv01.

Также можно посмотреть изменения в томах командой:
Код:
lsblk

Мы должны увидеть что-то подобное:
Код:
sdc                8:32   0    1G  0 disk
  vg01-lv01-real 253:3    0    1G  0 lvm
    vg01-lv01    253:2    0    1G  0 lvm  /mnt
    vg01-sn01    253:5    0    1G  0 lvm
  vg01-sn01-cow  253:4    0  500M  0 lvm
    vg01-sn01    253:5    0    1G  0 lvm

С этого момента все изменения пишутся в vg01-sn01-cow, а vg01-lv01-real фиксируется только для чтения и мы может откатиться к данному состоянию диска в любой момент.

Содержимое снапшота можно смонтировать и посмотреть, как обычный раздел:
Код:
mkdir /tmp/snp

Монтирование не XFS:
Код:
mount /dev/vg01/sn01 /tmp/snp

Монтирование XFS:
Код:
mount -o nouuid,ro /dev/vg01/sn01 /tmp/snp

Для выполнения отката до снапшота, выполняем команду:
Код:
lvconvert --merge /dev/vg01/sn01

Создание зеркала LVM.
С помощью LVM мы может создать зеркальный том — данные, которые мы будем на нем сохранять, будут отправляться на 2 диска. Таким образом, если один из дисков выходит из строя, мы не потеряем свои данные.
Зеркалирование томов выполняется из группы, где есть, минимум, 2 диска.
Сначала инициализируем диски:
Код:
pvcreate /dev/sd{d,e}
* в данном примере sdd и sde.

Создаем группу:
Код:
vgcreate vg02 /dev/sd{d,e}

Создаем зеркальный том:
Код:
lvcreate -L200 -m1 -n lv-mir vg02
* мы создали том lv-mir на 200 Мб из группы vg02.
 
Последнее редактирование:
Назад
Верх Низ