LVM, часть 1 из 3. Теория

10.09.2023

Теги: CLILinuxБлочноеУстройствоКомандаТеорияФайловаяСистема

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

LVM. Теория

Что такое LVM

Давайте начнем с самого начала и посмотрим, как устроена классическая дисковая система. В ее основе лежат физические устройства хранения — HDD, SSD, RAID-массивы и т.д. Каждое физическое устройство содержит логическую разметку — разделы. Каждый раздел может содержать либо файловую систему, либо вложенные разделы. В любом случае общая емкость разделов ограничена емкостью физического устройства.

Проблема возникает, когда дискового пространства физического диска начинает не хватать. Самым простым решением будет добавить еще один физический диск и перенести на него /home. Но при этом на первом физическом диске останется свободная область, которая больше не используется под файлы домашней директории.

Можно смонтировать этот раздел в какую-нибудь вложенную директорию, например /home/video, но это не решает проблемы, а только добавляет неудобства. Вместо единого дискового пространства получаем набор разрозненных сегментов.

Также возможна ситуация, когда каждого диска в отдельности не хватает для размещения раздела, хотя их суммарной емкости будет достаточно. Можно, конечно, попробовать объединить их в RAID массив, но это резко снизит гибкость модернизации такой системы.

Во всех этих случаях нам на помощь приходит LVM, которая вводит новые уровни абстракции и позволяет работать с логическими томами, не оглядываясь на реальную конфигурацию физических устройств. В LVM существует три уровня абстракции:

  • PV, Physical volume, физический том — это физический диск, либо раздел на диске, если по каким-то причинам нельзя использовать его целиком.
  • VG, Volume group, группа томов — группа томов объединяет в себя физические тома и является следующим уровнем абстракции, представляя собой единое пространство хранения, которое может быть размечено на логические разделы — эквивалентно обычному диску в классической системе.
  • LV, Logical volume, логический том — логический раздел в группе томов, аналогичен обычном разделу, представляет из себя блочное устройство и может содержать файловую систему.

Если говорить упрощенно, то между физическими носителями и логическими разделами появилась дополнительная прослойка в виде группы томов, которая объединяет пространства физических дисков в одно логическое, эквивалентное одному большому диску.

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

LVM и RAID

Как следует из названия, LVM — это менеджер логических томов, т.е. разметки верхнего уровня, максимально абстрагированной от физических устройств. RAID — это избыточный массив независимых дисков, задача которого — обеспечить защиту от отказа физического диска. О логической разметке RAID не имеет никакого представления, работая исключительно с физическими устройствами или разделами на них.

Можно ли с помощью LVM реализовать некоторые функции RAID? Можно, но при этом достаточно сильно пострадает простота и прозрачность управления массивами, что может поставить в затруднительное положение в нештатных ситуациях, особенно если нет достаточного опыта работы с LVM.

Поэтому, в строгом соответствии с философией UNIX — каждый должен выполнять свою задачу и делать это хорошо. Поэтому для создания избыточных дисковых массивов лучше использовать программный RAID, а предоставляемые им md-устройства использовать в качестве физических томов LVM.

Экстетны

Единицей организации дискового пространства в LVM является экстент — минимальная область данных внутри логического тома. Выделить объем менее одного экстента LVM не может. Размер экстента определяется группой томов и зависит от ее объема, минимальный размер экстента 4 МБ. Это значение остается постоянным для группы томов на всем протяжении ее существования.

Все входящие в группу томов физические тома разделяются на физические экстенты, логические тома в свою очередь содержат логические экстенты, размеры физических и логических экстентов равны.

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

Если упростить ситуацию, то LVM можно рассматривать как некую таблицу соответствия, в которой записано какой логический экстент относится к какому физическому. Таким образом можно иметь логический том, фактически располагающийся на нескольких физических томах, при этом система будет видеть его как одно непрерывное пространство.

Размещение логических экстентов на физических томах называют отображением и существуют разные алгоритмы для этого. Наиболее простым является линейное отображение, при котором логические экстенты последовательно отображаются на свободные физические. Если физических экстентов одного физического тома не хватает для отображения всех логических экстентов, то начинают использоваться экстенты следующего физического тома.

Казалось бы, все понятно, но есть одна особенность. Итак, имеется условный логический том содержащий 8 экстентов и два физических, по четыре экстента в каждом. При линейном отображении экстенты распределены между физическими томами последовательно и при заполнении логического тома на 75% мы получим полностью заполненный первый физический том и наполовину заполненный второй.

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

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

Но есть одна серьезная проблема и связана она с SSD. Во-первых, твердотельные диски не следует заполнять на 100%, так как это приводит к ухудшению работы и снижению производительности. Во-вторых, при использовании в составе группы томов нескольких SSD получается неравномернуя нагрузка на диски и повышенный износ некоторых из них.

Решить эту проблему можно при чередующемся способе отображения (stripe, полосатое). В этом случае логические экстенты отображаются между физическими томами в порядке чередования, количество полос чередования определяет количество физических томов, которые будут для этого использоваться. По понятным причинам количество полос не может превышать количество физических томов.

Чередующееся отображение обеспечивает равномерную нагрузку и заполнение физических дисков, поэтому для твердотельных накопителей следует использовать именно его. Также нетрудно заметить, что такая схема чем-то похожа на RAID 0. Это действительно так и операции чтения-записи можно производить параллельно, достигая более высоких скоростей дисковых операций. По этой причине чередующееся отображение может быть использовано и вместе с HDD в целях повышения производительности тома. Чем больше число полос, тем выше производительность.

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

Существующий логический том был расширен с 8 до 16 экстентов. При этом первые 8 экстентов как чередовались между первыми двумя физическими томами, так и продолжили чередоваться. А следующие 8 экстентов стали чередоваться между двумя добавленными физическими томами. Таким образом, при заполнении логического тома, сначала будут заполнены первые два физических диска, а только затем начнет заполняться вторая пара. Если речь идет о твердотельниках, первая пара дополнительно будет испытывать повышенную нагрузку.

Фактически получилось линейное отображение на две пары физических дисков. Поэтому расширять чередующиеся массивы на твердотельных накопителях не следует. Правильным решением будет создание нового тома с большим числом полос.

Несомненным достоинством LVM является то, что при должном опыте и знаниях том можно расширить и с изменением числа полос полностью в онлайн-режиме, т.е. не останавливая работы хранилища.

Управление томами

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

Начнем с наиболее распространенного сценария — расширения. Количество данных обычно только растет и свободного места начинает не хватать. В классической дисковой системе нам потребуется либо заменить текущий диск диском большего объема, либо перенести часть данных на другой раздел.

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

Другой распространенный сценарий — замена дисков. Точно также добавляем новые физические тома в группу томов и запускаем специальную операцию по переносу физических экстентов с одного физического тома на другие. Единственное условие — группа томов должна содержать нужное количество свободных экстентов, количество и размер новых дисков роли не играют.

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

Обратите внимание, что в отличие от дисковых утилит, которые работают на уровне разделов, LVM перемещает именно физические экстенты и изменяет сопоставление отображения для логических томов. Таким образом, если на диске /dev/sda находился корневой раздел и часть /home, то именно эти части и будут перенесены на новый диск, перемещать раздел полностью нет никакой необходимости, даже если перемещаемые экстенты отображены куда-нибудь в середину логического тома.

Источник https://interface31.ru/tech_it/2020/07/lvm-dlya-nachinayushhih-chast-1-obshhie-voprosy.html

Поиск: CLI • Linux • Команда • LVM • Volume • Теория • Файловая система • Блочное устройство

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.