Linux LVM или «резиновые диски»
Всех категорически приветствую!
Ну, что же, теперь перейдем ближе к делу.
Прежде чем начать обзор процесса установки, хотелось бы отдельно остановиться на дисках и разделах. Правильное планирование дискового пространства – это не только правило хорошего тона, но и решение множества проблем, особенно связанных с нехваткой заветных «метров» «на самом или в самом интересном месте».
Планировать использование дискового пространства надо уметь, и уметь делать это с умом. И, как часто наблюдаю, с последними двумя пунктами справляются далеко не все (когда тороплюсь сам тоже делаю что попало). Например, ситуация:
- выделить под раздел «/boot» метров 100 и потом заиметь неприятности с обновлением системы, когда эта сотня забьётся старыми ядрами. Конечно, autoremove частично решает проблему, но сразу же захочется добавить к разделу еще гиг, чтобы про проблему забыть. И тут начинаются танцы с бубном. А поскольку «/boot» нельзя поместить в LVM (да, запомните это!) из-за того, что последний не дружит с GRUBом, то задача для многих становится нерешаемой, и некоторые админы, выкурив пару пачек сигарет, ставят систему заново.
В остальном же, проблемы с динамическим изменением объема разделов (и количества разделов) в полной мере и с наименьшими затратами нервов и времени решает LVM – logic volume manager (менеджер логических томов).
LVM – это некая абстракция жесткого диска (виртуальный диск). Что подразумевается под абстракцией? Ну, например, в железяке стоит 4 диска: 1ТБ, 2ТБ, 3ТБ и 4ТБ, а в системе это дело отображается как один диск на 10 ТБ. Вот этот условный один диск на 10Тб и называется абстракцией.
В пределах суммарного объема этих четырех физических дисков можно создать любое количество логических разделов с нужным объемом и примонтировать, их, например, к папке с кинчиками, тем самым добавив еще места для коллекции в 4K. При необходимости, можно у кого-нибудь «забрать» место и «отдать другому». Причем все это LVM позволяет делать «на лету», (т.е. без перезагрузок и прочих тормозящих факторов).
Вот и получаются этакие «резиновые диски» — захотел – растянул, захотел – скукожил.
Ниже картинка, отражающая в целом суть LVM.
Конечно, LVM умеет делать еще множество всяких плюшек, которые могут пригодится в каком-либо конкретном случае (снапшоты разделов, например). Нафиг нужны эти снапшоты?
- начали вы писать прогу какую-нибудь. Написали начальный обработчик для кнопки, отладили его, и… УРА – заработало! Нажатие на кнопку чего-то там показывает. Теперь надо пилить дальше и сделать так, чтобы это «чего-то там» показывалось уже в каком-то поле. Что надо сначала сделать? Правильно – лепить дальше сделать копию папочки с рабочим проектом чтобы было куда откатываться, если вдруг случится «ой…». Так вот, функция снапшота тоже делает своебразную копию, но только не папочки, а указанного раздела диска.
Для дальнейшего понимания вопроса настоятельно советую ознакомиться со следующим материалом:
Дополнительная статья о LVM по заметке комментатора starper — на losst.ru
Коротко о настройке разделов под установку Ubuntu (не только Server).
Я использую GPT и LVM. Почему? Потому что ограничительные рамки по использованию количества разделов и их объемов значительно расширяются. Ну, хотя бы, взять MBR – максимум 4 раздела и по 2Тб места на них; GPT – 64, 128 и, если не ограничено системой, то и больше разделов практически любого объема. Ну, а LVM, в свою очередь, позволяет всем этим делом великолепно управлять.
Имея вышеописанные инструменты и умея ими пользоваться, появляются очень широкие возможности по планированию и управлению дисковым пространством. Но только лишь возможности. Теперь нужно понять, как такое обилие вариантов по «раздаче места» формализовать.
(надеюсь, что с указанным выше ссылочным материалом про разделы и файловые системы вы ознакомились)
Прошу учитывать, что ниже я приведу лишь пример настройки разделов для экспериментального сервера на виртуалке, а не для «боевого» железа. Вы, потренировавшись «на кошках» и поняв, «что это и с чем его едят», уже планируйте место и разметку под свои конкретные задачи.
Итак, в процессе установки Ubuntu мы дойдем до такого пункта, как разметка диска. Вот он, собственно:
В новой версии установщика окошко несколько другое. В нем для ручной разметки надо выбрать пункт «Custom storage layout», а в следующем окне сбросить все параметры, выбрав пункт «Сброс». Дальше различий в настройке нет.
У неопытных, а как следствие, не осознающих, что с этим пунктом делать, установщиков возникает желание согласиться с вариантом, который предложила система, и накатывать ось дальше. Да, у кого-то прокатывает и проблем в процессе использования оси нет. Но иногда и НЕ прокатывает (а это бывает, как обычно, очень не вовремя и очень больно). Поэтому с разметкой лучше раз разобраться, чем потом дергать волосы на пятой точке.
- Неразмеченный физический диск объемом 20 Гб.
Что хотим получить:
- Раздел «/boot» на 2Гб (основной раздел);
- Корневой раздел «/» на 10 ГБ (LVM);
- Раздел «/home» на 7 ГБ (LVM);
- Раздел SWAP на 1 ГБ (LVM).
С дрожью в коленках выбираем пункт «Вручную» и видим один-единственный доступный девайс на 20G. Давим на нем Enter-ом и выбираем пункт «Add Partition» ( добавить раздел, либо добавить GPT раздел):
В окошке параметров создаваемого раздела нам предложат задать его объем, тип файловой системы и точку монтирования. Задаем параметры и давим Create:
Все созданные нами разделы с заданными точками монтирования будут отображаться сверху, под надписью «FILE SYSTEM SUMMARY»:
Почему 2 гига для boot? Потому что многолетняя практика показала, что такой объем бутовского раздела не создает ненужных проблем.
Итак, мы создали классический boot-раздел вне LVM (помним, ага?).
Если вы читали ссылочный материал выше, то уже в курсе, что сначала в LVM нужно создать группу физических томов, затем в этих группах создать логические тома, ну, и в конце куда-то их таки примонтировать.
После создания основного раздела для «/boot», на этом физическом диске требуется в оставшемся пространстве создать неразмеченный раздел, чтобы дальше определить его в LVM. Операция разметки аналогична предыдущей, только раздел оставляем без файловой системы:
И вот теперь этот раздел мы сможем запихать в LVM.
Создаем группу томов (с понятным для себя названием и, желательно, уникальным. Почему? – читайте ссылочный материал выше):
Создание и настройка 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-get install lvm2
Соответственно структуре LVM, нам нужно будет инициализировать физические разделы для LVM, объединить их в группу, а затем создать из этой группы нужные нам логические тома.
Инициализация физических LVM разделов
Сначала определимся с томами, которые будем использовать, допустим это будут /dev/sda6 и /dev/sda7. Инициализировать их для работы LVM можно с помощью команды pvcreate:
sudo pvcreate /dev/sda6 /dev/sda7
Physical volume «/dev/sda6» successfully created
Physical volume «/dev/sda7» successfully created
Чтобы посмотреть действительно ли были созданы физические тома LVM вы можете использовать команду pvcsan:
PV /dev/sda6 lvm2 [1.86 GB]
PV /dev/sda7 lvm2 [1.86 GB]
Total: 2 [3.72 GB] / in use: 0 [0 ] / in no VG: 2 [3.72 GB]
Также можно посмотреть физические LVM разделы с более подробными атрибутами, такими как размер, общий размер, физический размер, свободное место и т д:
— Physical volume —
PV Name /dev/sda6
VG Name
PV Size 1.86 GB / not usable 2.12 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 476
Free PE 456
Allocated PE 20
PV UUID m67TXf-EY6w-6LuX-NNB6-kU4L-wnk8-NjjZfv
— Physical volume —
PV Name /dev/sda7
VG Name
PV Size 1.86 GB / not usable 2.12 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 476
Free PE 476
Allocated PE 0
PV UUID b031x0-6rej-BcBu-bE2C-eCXG-jObu-0Boo0x
PE Size — это размер одного блока LVM, по умолчанию он равен четырем мегабайтам, но это значение можно изменить.
Создание группы разделов LVM
Группа томов — это не что иное, как пул памяти, который будет распределен между логическими томами и может состоять из нескольких физических разделов. После того как физические разделы инициализированы, вы можете создать из них группу томов (Volume Group, VG):
sudo vgcreate vol_grp1 /dev/sda6 /dev/sda7
Volume group «vol_grp1» successfully created
С помощью lvm команды vgdisplay вы можете посмотреть созданные группы томов:
— Volume group —
VG Name vol_grp1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 3.72 GB
PE Size 4.00 MB
Total PE 952
Alloc PE / Size 0 / 0
Free PE / Size 952 / 3.72 GB
VG UUID Kk1ufB-rT15-bSWe-5270-KDfZ-shUX-FUYBvR
Создание логических томов LVM
Теперь все готово, чтобы создать логические LVM разделы. Для этого будем использовать команду lvcreate и создадим логический раздел размером 80 Мегабайт, или 20 блоков LVM:
sudo lvcreate -l 20 -n logical_vol1 vol_grp1
Logical volume «logical_vol1» created
Посмотреть список доступных логических разделов LVM можно по аналогии с предыдущими разделами с помощью команды lvdisplay:
— Logical volume —
LV Name /dev/vol_grp1/logical_vol1
VG Name vol_grp1
LV UUID ap8sZ2-WqE1-6401-Kupm-DbnO-2P7g-x1HwtQ
LV Write Access read/write
LV Status available
# open 0
LV Size 80.00 MB
Current LE 20
Segments 1
Allocation inherit
Read ahead sectors auto
— currently set to 256
Block device 252:0
Теперь, когда раздел создан, мы можем работать с ним как с обычным разделом. Например, отформатируем его в файловую систему 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. Количество полос не должно превышать количества физических дисков. Например:
lvcreate -L 1G -i2 -I64 -n lv_stripe vol_grp1
Logical volume «lv_stripe» created
Зеркалированный том позволяет записывать данные одновременно на два устройства. Когда данные пишутся на один диск, они сразу же копируются на другой. Это позволяет защититься от сбоев одного из дисков. Если один из дисков испортится, то разделы LVM просто станут линейными и все данные по-прежнему будут доступны. Для создания такого раздела LVM Linux можно использовать команду:
sudo lvcreate -L 200M -m1 -n lv_mirror vol_grp1
Logical volume «lv_mirror» created
Удалить 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+100 /dev/vol_grp1/logical_vol1
Extending logical volume logical_vol1 to 200.00 MB
Logical volume logical_vol1 successfully resized
Точно так же можно выполнить уменьшение lvm раздела с помощью знака -.
Выводы
В этой статье мы рассмотрели создание lvm разделов в linux, а также настройку, увеличение, уменьшение и монтирование lvm linux. Теперь вы знаете насколько это мощная технология и сколько преимуществ она может дать не только на сервере, но и на домашнем ПК. Вы раньше использовали LVM? Будете использовать?