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:
sudo pvscan
Также можно посмотреть физические LVM разделы с более подробными атрибутами, такими как размер, общий размер, физический размер, свободное место и т д:
sudo pvdisplay
Здесь PE Size - это размер одного блока LVM, по умолчанию он равен четырем мегабайтам, но это значение можно изменить.
Создание группы разделов LVM
Группа томов - это не что иное, как пул памяти, который будет распределен между логическими томами и может состоять из нескольких физических разделов. После того как физические разделы инициализированы, вы можете создать из них группу томов (Volume Group, VG):
sudo vgcreate vol_grp1 /dev/sda6 /dev/sda7
С помощью 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
Также вы можете увеличить размер LVM, использовав знак +:
sudo lvextend -L+100M /dev/vol_grp1/logical_vol1
Точно так же можно выполнить уменьшение LVM раздела с помощью знака -.
Выводы
В этой статье мы рассмотрели создание LVM разделов в linux, а также настройку, увеличение, уменьшение и монтирование LVM Linux. Теперь вы знаете насколько это мощная технология и сколько преимуществ она может дать не только на сервере, но и на домашнем ПК. Вы раньше использовали LVM? Будете использовать?
интересная тема. Все подробно описано. Спасибо. успехов вашему блогу. Помогу в развитии
$ sudo apt-get intall lvm2 (!?) 🙁
Спасибо, сейчас подправлю)
Да-а, помню в самом начале тсячелетия работал на ВЦ и похожим увлекался, НО! Когда показал ЭТО 3аму и Саму, получил практическое подтверждение ста-а-арой русской крестьянской пословицЫ:" не мечите бисер перед НАЧАЛЬНИКАМИ" .
F-Shabus
А какая нагрузка на процессор и озу? Ибо слышал что до 20% откусывает.
у меня не удаляет LVM том почему?
/dev/sda5 1001472 312580095 311578624 148,6G 8e Linux LVM
Нужно больше информации. Какая ошибка?
Как мне кажется такие виртуальные блок устройства будут серьезно снижать производительность. Обращение к проге. потом к самому устройству это кхе. А на сервере дело проще. пользователя на папочку и все.
Много читаю про LVM и думаю по пробовать, но прежде чем пробовать интересует вопрос.
У меня много данных, вот в случае если один из HDD выходит из строя. Все остальные данные как на 0 raid`е исчезнут?
Или я совсем не понял принцип работы?
Заранее благодарю.
Борис, очень хороший вопрос. Но я думаю автор не в теме. Так же остается еще вопрос как архивировать LVM разделы с помощью допустим Acronis или других подобных инструментов.
Для уменьшения lvm раздела используют sudo lvreduce -L-500G /dev/vol_grp1/logical_vol1
Здравствуйте, подскажите. Если я собираюсь использовать lvm внутри ВМ, то у меня один виртуальный диск будет иметь четкое предназначение, например, там будет лежать БД. В этом случае, есть ли смысл разбивать сам диск на sdb1 и т.д. или же я могу просто пометить sdb как физический раздел и уже прямо внутри него уже создать группу разделов и собственно логические диски. Просто не совсем понимаю есть ли разница, что я помечу sdb как физический раздел LVM, что я помечу раздел созданный на этом диске.
Ещё интересно, можно ли добавлять в лвм диск с уже существующими данными или только чистый?
Есть система, хочется перевести всё на лвм, но диски с данными тоже уже есть, придётся всё сначала куда то копировать?
Спасибо автору, хорошая статья. Поправьте пожалуйста ошибку: созданы как их одного
Вы забыли указать, что после расширения через команду lvextend необходимо еще выполнить команду resize2fs (В данном примере полная команда будет "resize2fs /dev/vol_grp1/logical_vol1") иначе lvdisplay будет показывать новый, увеличенный размер, а по-факту через df -h мы будем видеть старый размер, до расширения, и новое добавленное место не будет доступно.
Собственно вот какая проблема. RAID 0 на 1 диск, разделы
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 50001919 49999872 23,9G 83 Linux
/dev/sda2 50001920 879091711 829089792 395,3G 83 Linux
маленький - /
большой - /var
Можно ли из этих разделов на рэйде сделать LVM на работающем сервере без потерь?
И 2 вопрос - если я захочу вернуть lvm разделы в sda (назад как было), то при удалении lvm (команда lvremove) - не потеряю ли я все данные?
и да опечатка pvscan в тексте - уже отправил.
Спасибо
Спасибо за сайт
опция -r и никакого pvresize
Нет, не нужно будет копировать никуда. Можете просто примонтировать диск в /mnt/, а затем добавляете физический раздел в группу lvm где у вас будет крутиться система.