LVM для начинающих

Современные системы хранения предъявляют повышенные требования к гибкости управления дисковым пространством и классических дисковых устройств с размещенными на них разделами становится недостаточно. Это привело к созданию многих высокоуровневых инструментов, одним из которых является Менеджер логических томов (Logical volume management) — LVM в Linux. Это простой и мощный инструмент, позволяющий управлять пространством хранения абстрагировавшись от физических устройств и в данной статье мы начнем знакомство с ним.

Что такое LVM и для чего он нужен

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

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

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

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

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

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

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

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

LVM и RAID

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

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

При этом достаточно сильно пострадает простота и прозрачность управления массивами, что может поставить вас в затруднительное (если не хуже) положение в нештатных ситуациях, особенно если вы не обладаете достаточным опытом работы с 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 снова придет на помощь. Точно также добавляем новые физические тома в группу томов и запускаем специальную операцию по переносу физических экстентов с одного физического тома на другие. Единственное условие — группа томов должна содержать нужное количество свободных экстентов, количество и размер новых дисков роли не играют.

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

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

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

Настраиваем LVM при установке системы

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

Дальнейшие действия при автоматической разметке ничем не отличаются от обычной установки, и мы не будем заострять на них внимания.

При ручном разбиении диска следует учесть следующий момент: загрузочный раздел /boot или EFI-раздел должны располагаться за пределами LVM-разметки.

Поэтому сразу создадим в самом начале диска первичный раздел размером 250 МБ с файловой системой ext2 и точкой монтирования /boot, не забываем отметить раздел как загрузочный.

Для EFI разметки следует создать первичный радел размером 499 МБ с типом системный раздел EFI, метка загрузочный будет установлена автоматически:

Создав загрузочный раздел можно приступать к настройке LVM, для этого выберите Настройка менеджера логических томов (LVM):

В котором сразу создаем группу томов (VG), рекомендуем давать группам томов и логическим томам понятные имена с использованием сокращений VG и LV, чтобы в дальнейшем было понятно, с чем именно вы имеете дело.

В качестве устройства для группы томов указываем доступное свободное место:

Затем создаем нужное количество логических томов, в нашем случае мы сделали тома для корневого раздела и домашней директории:

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

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

Ниже мы будем рассматривать разметку, созданную автоматически с выделением /home в отдельный раздел.

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

lsblk

В выводе мы видим загрузочный раздел sda1 размером в 243 МБ, расширенный раздел sda2 в котором располагается логический раздел sda5 используемый под LVM. Также видим три логических тома: rootswap_1 и home.

Обратите внимание, что при использовании MBR-разметки система всегда использует расширенный раздел, размещая в нем все остальные разделы, кроме первого. Это связано с ограничением MBR на 4 первичных раздела. При использовании EFI-разметки расширенный раздел не создается и для LVM был бы использован сразу sda2.

Теперь посмотрим информацию об элементах LVM, начнем с физических томов (PV):

pvdisplay

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

Вас может удивить необычный размер физического тома <19,76 ГБ, с припиской о неиспользуемых 2 МБ. Но в этом нет ничего необычного, если вспомнить, что физический том в LVM — это набор физических экстентов указанного размера и использовать пространство меньше размера экстента не представляется возможным.

Для получения информации о группах томов выполните:

vgdisplay

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

И, наконец, для получения информации о логических томах выполните:

lvdisplay

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

Для получения краткой информации о томах LVM можно использовать команды:

pvs | vgs | lvs

Обращаться к LVM томам можно двумя способами, самый простой по имени устройства группы томов — логического тома, например:

/dev/debian-lvm-vg/home

Либо через виртуальные устройства:

/dev/mapper/debian--lvm--vg-home

Обратите внимание, что все одиночные тире в именах устройств заменяются на двойные, а одиночные служат разделителями.

Настраиваем LVM в установленной системе

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

lsblk

Не ленитесь делать это всегда, как бы вы не были «уверены» в том, что точно знаете какие диски вам нужны. Цена ошибки слишком высока. В нашем случае в системе присутствуют два неразмеченных диска sdb и sdd, которые мы будем использовать для LVM.

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

pvcreate /dev/sdb /dev/sdd

Затем создадим группу томов:

vgcreate andrey-lvm-vg /dev/sdb /dev/sdd

Синтаксис команды очень прост: указываем имя группы томов и входящие в нее диски.

Теперь можно создавать логические тома. Начнем с самых простых — томов с линейным отображением. Это можно сделать разными методами, например, указав желаемый размер тома:

lvcreate -n myvolume1 -L 10G andrey-lvm-vg

Данная команда создаст логический том с именем myvolume1 (имя указывается в опции -n) и размером в 10 ГБ из экстентов группы томов andrey-lvm-vg.

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

lvcreate -n myvolume1 -l 60%VG andrey-lvm-vg

В нашем случае будет создан логический том размером в 60% от общего размера группы томов. Также можно указывать относительное значение свободного пространства в процентах:

lvcreate -n myvolume2 -l 100%FREE andrey-lvm-vg

Приведенная выше команда создала новый логический том myvolume2 на оставшемся свободном пространстве в группе томов andrey-lvm-vg.

Поставим более сложную задачу — создадим том с чередующимся отображением:

lvcreate -n myvolume3 -l 100%FREE -i 2 andrey-lvm-vg

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

Посмотрим информацию о логическом томе, в частности нас будут интересовать сведения о сегментах. Для получения этой информации запустите команду lvdisplay с ключом -m.

Данный том состоит из единственного сегмента занимающего логические экстенты от 0 до 10237, которые отображаются в две полосы чередования с размером блока чередования в 64 КБ, этот сегмент отображается на физические экстенты 0 — 5118 каждого из физических томов.

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

Теперь у нас имеется два сегмента с набором логических экстентов 0 — 10237 и 10238 — 20475, каждый из которых чередуется в две полосы на дисках sdb, sdd и sde, sdf. Так как логический том выглядит для системы единым пространством, то экстенты будут заполняться преимущественно последовательно и ни о каком выравнивании нагрузки и равномерном заполнении дисков речи не идет, поэтому для SSD таким образом расширять тома не следует.

Созданные разделы следует отформатировать и смонтировать в нужное место файловой системы. Для форматирования в ext4 воспользуемся командой:

mkfs.ext4 /dev/andrey-lvm-vg/myvolume1

После чего раздел можно монтировать, если точка монтирования не существует, то ее нужно создать. Допустим мы хотим смонтировать наш раздел в /mydata, поэтому предварительно создаем каталог:

mkdir /mydata

Для постоянного монтирования раздела внесем соответствующую запись в /etc/fstab, это можно сделать по имени устройства:

/dev/mapper/andrey--lvm--vg-myvolume1    /mydata    ext4     defaults    0    2

или

/dev/andrey-lvm-vg/myvolume1    /mydata    ext4     defaults    0    2

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

blkid /dev/andrey-lvm-vg/myvolume1 

Затем внесем в /etc/fstab строку:

UUID=cc0b7e49-3381-4dfb-9772-3184c7026bd8     /mydata    ext4     defaults    0    2

Чтобы смонтировать разделы без перезагрузки выполним:

mount -a

При отключении или удалении раздела не забудьте убрать соответствующую запись из fstab.

Изменение размеров логических томов LVM

Вернемся к конфигурации, созданной при автоматической разметке диска, которую мы рассматривали в начале статьи. Система создала три логических тома: для корневой ФС, подкачки и /home. И вот свободного места в домашней директории стало недостаточно, после чего мы купили и добавили в систему еще один жесткий диск — sdb.

Создадим на базе нового диска физический том:

pvcreate /dev/sdb

И расширим на него существующую группу томов:

vgextend debian-lvm-vg /dev/sdb

Теперь можно расширять логический том:

lvextend -l +50%FREE /dev/debian-lvm-vg/home

В нашем примере мы расширили его на 50% свободного пространства в группе томов. Если посмотреть информацию о логическом томе, то мы увидим, что он теперь состоит из двух сегментов, располагающихся на разных физических дисках.

После чего следует расширить файловую систему, чтобы она занимала все пространство тома, для семейства ext воспользуйтесь командой:

resize2fs /dev/debian-lvm-vg/home

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

В данном случае лучше всего оперировать абсолютными значениями в байтах, нежели относительными в процентах, так как при малейшей ошибке вы рискуете потерять все свои данные. Прежде всего уменьшим размер файловой системы раздела /home, в нашем случае до 10 ГБ:

resize2fs /dev/debian-lvm-vg/home 10G

Затем уменьшим до такого же размера логический том:

lvreduce -L 10G /dev/debian-lvm-vg/home

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

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

lvextend -l +5118 /dev/debian-lvm-vg/home /dev/sdb

Указанная команда расширит логический том home на 5118 экстентов с физического тома /dev/sdb, перед выполнением команды следует убедиться, что выбранный том содержит нужное количество свободного пространства, поэтому наиболее удобно использовать свободные экстенты, точное количество которых мы всегда можем узнать получив информацию об указанном физическом томе.

Перемещение логических томов LVM

Еще одна распространенная задача — перемещение томов между физическими дисками. В предыдущем разделе мы расширили логический том home на добавленный нами в LVM диск sdb, при этом его часть так и осталась на sda5. Поставим себе теперь иную задачу: полностью переместить домашнюю директорию на новый диск sdc, а освободившееся пространство на sda5 отдать корневому разделу системы.

Прежде всего создадим на новом диске физический том и добавим его в нужную группу томов:

pvcreate /dev/sdc
vgextend debian-lvm-vg /dev/sdc

Затем переместим экстенты логического тома home на новый диск. Так как sdb не содержит никаких иных логических томов, кроме home, то команда будет проста:

pvmove /dev/sdb /dev/sdc

Она переместит все физические экстенты диска sdb на диск sdc. Для sda5, который содержит три логических тома такой фокус не пройдет, поэтому добавим конкретики:

pvmove -n home /dev/sda5 /dev/sdc

Эта команда переместит все физические экстенты тома с именем home с диска sda5 на диск sdc.

Посмотрим информацию о логическом томе home:

lvdisplay -m /dev/debian-lvm-vg/home

Как можно видеть из вывода он теперь содержит единственный сегмент, который расположен на диске sdc.

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

pvdisplay /dev/sda5

В выводе нас интересует единственный параметр — количество свободных экстентов:

Это число, в отличии от размера в байтах, либо процентов, является абсолютным, и мы можем смело его использовать:

lvextend -l +2874 /dev/debian-lvm-vg/root /dev/sda5

Данная команда расширит логический том root на 2874 физических экстента принадлежащих разделу sda5. Затем не забудем расширить файловую систему:

resize2fs /dev/debian-lvm-vg/root

А теперь посмотрим информацию о логическом томе:

Теперь корневой раздел состоит из двух сегментов, расположенных в начале и конце физического тома. Почему так? Вернемся в самое начало статьи и вспомним, что автоматически группа томов была размечена на следующие разделы: rootswap_1 и home. Домашний раздел мы переместили, но swap остался на своем месте и теперь root находится по обе стороны от него, если смотреть на физическом уровне, то мы получим схему root — swap_1 — root.

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

Удаление дисков из LVM

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

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

lvremove /dev/andrey-lvm-vg/myvolume1

Которая удалит логический том myvolume1 из группы томов andrey-lvm-vg.

В приведенном выше примере у нас освободился диск sdb в группе томов debian-lvm-vg. Удалим его из группы томов:

vgreduce  debian-lvm-vg /dev/sdb

Ну и наконец удалим LVM-разметку с указанного диска:

pvremove /dev/sdb

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

Как перенести группу томов LVM в другую систему

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

Как мы помним из теории, LVM состоит из трех уровней абстракции:

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

Система и пользователь работают с самым верхним — логическим томом, ниже лежит группа томов, которая объединяет в себя физические носители. Если у нас возникает необходимость переместить структуру LVM в другую систему, то сделать это мы можем только с группой томов (VG, Volume group). Это логично, так как физический том не является самостоятельной единицей хранения данных в LVM, а логический том может располагаться на разных физических дисках.

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

pvscan

Данная команда покажет все физические тома — PV и группы томов — VG, в которые они входят.

В нашем случае есть две группы томов: ubuntu-vg в который входит раздел sda3 и test-vg включающий в себя диски sdb и sdc. Обратите внимание, если группа томов включает в себя разделы, то перенести ее на другую систему мы не сможем, либо придется переместить туда с физическим диском и остальные разделы. Но такая структура — явление достаточно редкое и обычно используется при установке системы для корневого раздела, который обычно никуда переносить не нужно.

В данном примере мы будем переносить группу томов test-vg и здесь сразу встает вопрос — как правильно отключить ее от системы? Для этого, прежде всего нужно выяснить какие службы используют логические тома, расположенные на этой группе томов. Это можно узнать при помощи команды:

lsof +D /точка_монирования_LV

В показанном ниже примере из реально работающей системы логический том смонтирован в /video и его используют службы сервера видеонаблюдения Xeoma и Яндекс.Диск.

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

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

systemctl stop my_service
systemctl disable my_service

где my_service — имя интересующей службы.

Остановив службы можно попробовать отмонтировать логические тома, для этого выполните:

umount /точка_монирования_LV

Если операция не удалась, то повторно запускаем lsof и смотрим кто еще использует данный логический том. Не забудьте также удалить или закомментировать записи для монтирования томов в /etc/fstab, в противном случае система не сможет загрузиться после переноса группы томов.

После того как вы отмонтировали все логические тома деактивируем группу томов:

vgchange -a n test-vg

где vg-test — имя переносимой группы томов. После чего группу томов можно экспортировать:

vgexport test-vg

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

В новой системе убедимся, что все подключенные физические тома определились системой:

pvscan

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

Импортируем группу томов:

vgimport test-vg

И активируем ее:

vgchange -a y test-vg

Затем попробуем смонтировать в нужное расположение (указанная директория должна существовать):

mount /dev/test-vg/testvolume /test

где test-vg — имя группы томов (VG), testvolume — имя логического тома (LV), а /test — точка монтирования. Если все прошло успешно, то можно вносить запись для постоянного монтирования раздела в /etc/fstab и настраивать нужные службы. Перенос группы томов можно считать успешной.

Как видим, LVM — это просто и удобно. Вы можете не только гибко управлять своими устройствами хранения в рамках локальной системы, но и быстро переносить их между системами с сохранением данных и их структуры.

Источник: https://interface31.ru/tech_it

Was this helpful?

1 / 0