Менеджер логических томов (Linux)
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Оригинальный автор(ы) | Хайнц Мауэльсхаген [ 1 ] |
---|---|
Стабильная версия | 2.03.21 [ 2 ] ![]() |
Репозиторий | исходное программное обеспечение |
Написано в | С |
Операционная система | Линукс , НетБСД |
Лицензия | лицензия GPLv2 |
Веб-сайт | исходное программное обеспечение |
В Linux , диспетчер логических томов ( LVM ) представляет собой структуру сопоставления устройств которая обеспечивает управление логическими томами для ядра Linux . Большинство современных дистрибутивов Linux поддерживают LVM до такой степени, что могут располагать корневые файловые системы на логическом томе . [ 3 ] [ 4 ] [ 5 ]
Хайнц Мауэльсхаген написал оригинальный код LVM в 1998 году, когда он работал в Sistina Software , взяв основные рекомендации по проектированию у HP-UX . менеджера томов [ 1 ]
Использование
[ редактировать ]LVM используется для следующих целей:
- Создание отдельных логических томов из нескольких физических томов или целых жестких дисков (что-то похожее на RAID 0 , но больше похоже на JBOD ), позволяющее динамически изменять размер тома.
- Управление большими фермами жестких дисков путем добавления и замены дисков без простоев или перебоев в обслуживании в сочетании с горячей заменой .
- В небольших системах (например, настольных компьютерах) вместо того, чтобы во время установки оценивать размер раздела, LVM позволяет легко изменять размер файловых систем по мере необходимости.
- Выполнение согласованного резервного копирования путем создания снимков логических томов.
- Шифрование нескольких физических разделов одним паролем.
LVM можно рассматривать как тонкий программный слой поверх жестких дисков и разделов, который создает абстракцию непрерывности и простоты использования для управления заменой жесткого диска, переразметкой и резервным копированием.
Функции
[ редактировать ]
Базовый функционал
[ редактировать ]- Размер групп томов (VG) можно изменять в режиме онлайн, поглощая новые физические тома (PV) или удаляя существующие.
- Размер логических томов (LV) можно изменить в режиме онлайн путем объединения или усечения экстентов из них.
- LV можно перемещать между PV.
- Создание снимков логических томов, доступных только для чтения (LVM1), с использованием функции копирования при записи (CoW), [ 6 ] или чтение/запись снимков (LVM2)
- VG можно разделить или объединить на месте , если в это разделение не входят LV. Это может быть полезно при переносе целых логических томов в автономное хранилище или из него.
- Объекты LVM могут быть помечены для удобства администрирования. [ 7 ]
- VG и LV можно сделать активными, когда базовые устройства станут доступны с помощью
lvmetad
демон. [ 8 ]
Расширенная функциональность
[ редактировать ]- Гибридные тома можно создавать с использованием цели dm-cache , которая позволяет одному или нескольким быстрым устройствам хранения данных, таким как твердотельные накопители на базе флэш-памяти , выступать в качестве кэша для одного или нескольких более медленных жестких дисков . [ 9 ]
- LV с тонким выделением ресурсов можно выделить из пула. [ 10 ]
- В более новых версиях устройства отображения устройств LVM достаточно интегрирован с остальной частью устройства отображения устройств, чтобы игнорировать отдельные пути, которые поддерживают устройство dm-multipath, если
devices/multipath_component_detection=1
установлен вlvm.conf
. Это не позволяет LVM активировать тома по отдельному пути вместо многопутевого устройства. [ 11 ]
Рейд
[ редактировать ]- LV могут быть созданы с поддержкой функций RAID , включая RAID 1 , 5 и 6 . [ 12 ]
- Целые LV или их части могут быть распределены по нескольким PV, аналогично RAID 0 .
- Внутреннее устройство RAID 1 (PV) можно настроить как «с преимущественной записью», в результате чего чтение на такие устройства будет исключено, если в этом нет необходимости. [ 13 ]
- Скорость восстановления можно ограничить с помощью
lvchange --raidmaxrecoveryrate
иlvchange --raidminrecoveryrate
для поддержания приемлемой производительности ввода-вывода при восстановлении логического тома, включающего функции RAID.
Высокая доступность
[ редактировать ]LVM также работает в кластере общего хранилища , в котором диски, содержащие PV, используются несколькими хост-компьютерами, но может потребоваться дополнительный демон для обеспечения доступа к метаданным посредством блокировки.
- КЛВМ
- Диспетчер распределенных блокировок используется для обеспечения одновременного доступа к метаданным LVM. Всякий раз, когда узлу кластера необходимо изменить метаданные LVM, он должен получить разрешение от своего локального узла.
clvmd
который находится в постоянном контакте с другимиclvmd
демонам в кластере и может сообщить о желании получить блокировку определенного набора объектов. - HA-LVM
- Поддержка кластера остается на усмотрение приложения, обеспечивающего функцию высокой доступности. Что касается LVM, HA-LVM может использовать CLVM в качестве механизма блокировки или может продолжать использовать блокировку файлов по умолчанию и уменьшать «коллизии», ограничивая доступ только к тем объектам LVM, которые имеют соответствующие теги. Поскольку это более простое решение позволяет избежать конфликтов, а не смягчать их, одновременный доступ не допускается, поэтому HA-LVM считается полезным только в активно-пассивных конфигурациях.
- lvmlockd
- По состоянию на 2017 год [update], стабильный компонент LVM, предназначенный для замены
clvmd
делая блокировку объектов LVM прозрачной для остальной части LVM, не полагаясь на распределенный менеджер блокировок. [ 14 ] В 2016 году он получил масштабное развитие. [ 15 ]
Описанные выше механизмы решают только проблемы с доступом LVM к хранилищу. Файловая система, выбранная для размещения поверх таких логических томов, должна либо поддерживать кластеризацию сама по себе (например, GFS2 или VxFS ), либо она должна быть смонтирована только одним узлом кластера в любое время (например, в активно-пассивной конфигурации).
Политика распределения групп томов
[ редактировать ]LVM VG должны содержать политику распределения по умолчанию для новых томов, созданных на их основе. Позже это можно будет изменить для каждого LV с помощью lvconvert -A
командой, или на самом VG через vgchange --alloc
. Чтобы свести к минимуму фрагментацию, LVM сначала попытается применить самую строгую политику (непрерывную), а затем перейти к наиболее либеральной политике, определенной для объекта LVM, пока распределение, наконец, не будет успешным.
В конфигурациях RAID почти все политики применяются к каждой ветви изолированно. Например, даже если LV имеет политику cling , расширение файловой системы не приведет к тому, что LVM будет использовать PV, если он уже используется одной из других ветвей в настройке RAID. LV с функциональностью RAID будут размещать каждую ветвь на разных PV, делая другие PV недоступными для какой-либо другой ветви. Если бы это был единственный доступный вариант, расширение НН не удалось бы. В этом смысле логика цепляния применима только к расширению каждой отдельной ветви массива.
Доступные политики распределения:
- Непрерывный – заставляет все LE в данном LV быть смежными и упорядоченными. Это устраняет фрагментацию, но существенно снижает возможности расширения ЛЖ.
- Cling – заставляет новые LE распределяться только на PV, уже используемых LV. Это может помочь смягчить фрагментацию, а также снизить уязвимость отдельных логических томов в случае выхода устройства из строя, за счет снижения вероятности того, что другие логические тома также будут иметь экстенты на этом физическом томе.
- Нормальный – подразумевает практически неизбирательный выбор PE, но при этом будет предпринята попытка предотвратить совместное использование параллельных ветвей (например, в конфигурации RAID) с физическим устройством.
- Где угодно – никаких ограничений не накладывает. Очень рискованно при настройке RAID, поскольку игнорирует требования изоляции, что сводит на нет большинство преимуществ RAID. Для линейных объемов это может привести к повышенной фрагментации.
Выполнение
[ редактировать ]

Обычно первый мегабайт каждого физического тома содержит структуру, закодированную в основном в ASCII, называемую «заголовком LVM» или «головой LVM». Первоначально голова LVM записывалась в первый и последний мегабайт каждого PV для резервирования (на случай частичного аппаратного сбоя); однако позже это было изменено на только первый мегабайт. Заголовок каждого PV представляет собой полную копию макета всей группы томов, включая UUID всех других PV и LV, а также карту распределения PE по LE . Это упрощает восстановление данных в случае потери PV.
В версии ядра Linux 2.6 LVM реализован в виде устройства отображения устройств — простой схемы уровня блока для создания виртуальных блочных устройств и отображения их содержимого на другие блочные устройства. Это сводит к минимуму объем относительно сложного для отладки кода ядра, необходимого для реализации LVM. Он также позволяет использовать свои службы перенаправления ввода-вывода совместно с другими менеджерами томов (такими как EVMS ). Любой код, специфичный для LVM, выбрасывается в инструменты пользовательского пространства, которые просто манипулируют этими сопоставлениями и восстанавливают их состояние из метаданных на диске при каждом вызове.
Чтобы перевести группу томов в режим онлайн, используйте инструмент «vgchange»:
- Ищет PV во всех доступных блочных устройствах.
- Анализирует заголовок метаданных в каждом найденном PV.
- Вычисляет макеты всех видимых групп томов.
- Просматривает каждый логический том в группе томов, который необходимо перевести в онлайн-режим, и:
- Проверяет, видны ли все физические тома логического тома, который необходимо подключить к сети.
- Создает новое пустое сопоставление устройств.
- Сопоставляет его (с «линейной» целью) с областями данных физических томов, которым принадлежит логический том.
Чтобы переместить онлайн-логический том между физическими томами в одной группе томов, используйте инструмент «pvmove»:
- Создает новое пустое сопоставление устройств для пункта назначения.
- Применяет «зеркальную» цель к исходной карте и карте назначения. Ядро запустит зеркало в «ухудшенном» режиме и начнет копировать данные из оригинала в место назначения, чтобы синхронизировать их.
- Заменяет исходное сопоставление местом назначения, когда зеркало синхронизируется, а затем уничтожает оригинал.
Эти операции сопоставителя устройств происходят прозрачно, без того, чтобы приложения или файловые системы знали, что их базовое хранилище перемещается.
Предостережения
[ редактировать ]- До ядра Linux 2.6.31, [ 16 ] барьеры записи не поддерживались (полностью поддерживаются в версии 2.6.33). Это означает, что гарантия против повреждения файловой системы, обеспечиваемая журналируемыми файловыми системами, такими как ext3 и XFS, при некоторых обстоятельствах была аннулирована. [ 17 ]
- По состоянию на 2015 год [update], для LVM не существует ни онлайн-, ни офлайн-программы дефрагментации. Это несколько смягчается тем, что фрагментация происходит только при расширении тома, а также применением вышеупомянутых политик распределения. Однако фрагментация по-прежнему имеет место, и если ее необходимо уменьшить, необходимо идентифицировать несмежные экстенты и вручную переупорядочить их с помощью
pvmove
команда. [ 18 ] - В большинстве конфигураций LVM на каждом физическом диске сохраняется только одна копия головы LVM, что может сделать тома более уязвимыми к повреждению секторов диска. Это поведение можно переопределить с помощью
vgconvert --pvmetadatacopies
. Если LVM не может прочитать правильный заголовок, используя первую копию, он проверит конец тома на наличие резервного заголовка. Большинство дистрибутивов Linux хранят действующую резервную копию./etc/lvm/backup
, который позволяет вручную перезаписать поврежденную головку LVM с помощьюvgcfgrestore
команда.
См. также
[ редактировать ]- Btrfs (имеет свои «снимки», которые отличаются, но использование LVM- снимков btrfs приводит к потере обеих копий) [ 19 ]
- Сопоставитель устройств
- Диспетчер логических дисков (LDM)
- Управление логическими томами
- Снимок (компьютерное хранилище)
- Виртуализация хранилища
- ZFS
Ссылки
[ редактировать ]- ^ Jump up to: а б «README LVM» . 17 ноября 2003 г. Проверено 25 июня 2014 г.
- ^ «Был создан аннотированный тег [lvm-devel] v2_03_21» . 21 апреля 2023 г. Проверено 22 апреля 2023 г.
- ^ «7.1.2 Конфигурация LVM с помощью YaST» . СУЗЕ. 12 июля 2011 года. Архивировано из оригинала 25 июля 2015 года . Проверено 22 мая 2015 г.
- ^ «Как: настроить рабочий стол Ubuntu с разделами LVM» . Убунту. 1 июня 2014 года. Архивировано из оригинала 4 марта 2016 года . Проверено 22 мая 2015 г.
- ^ «9.15.4 Создание логического тома LVM» . Красная шляпа. 8 октября 2014 года . Проверено 22 мая 2015 г.
- ^ «Производительность BTRFS по сравнению с LVM+EXT4 в отношении рабочих нагрузок базы данных» . 29 мая 2018 г.
- ^ «Тегирование объектов хранилища LVM2» . Микро Фокус Интернэшнл . Проверено 21 мая 2015 г.
- ^ «Демон метаданных» . Компания Red Hat Inc. Проверено 22 мая 2015 г.
- ^ «Использование новой функции кэширования LVM» . 22 мая 2014 года . Проверено 11 июля 2014 г.
- ^ «2.3.5. Логические тома с тонким предоставлением (тонкие тома)» . Access.redhat.com . Проверено 20 июня 2014 г.
- ^ «4.101.3. RHBA-2012:0161 — исправление ошибок lvm2 и улучшенное обновление» . Проверено 8 июня 2014 г.
- ^ «5.4.16. Логические тома RAID» . Access.redhat.com . Проверено 7 февраля 2017 г.
- ^ «Управление операциями ввода-вывода на логическом томе RAID1» . redhat.com . Проверено 16 июня 2014 г.
- ^ «Re: Снимок LVM с кластерным VG [РЕШЕНО]» . 15 марта 2013 г. Проверено 8 июня 2015 г.
- ^ " "vmlockd.c история git" " . Архивировано из оригинала 4 января 2024 года.
- ^ «Ошибка 9554 — барьеры записи в сопоставителе устройств не поддерживаются» . 01 июля 2009 г. Проверено 24 января 2010 г.
- ^ «Барьеры и журналируемые файловые системы» . ЛВН . 22 мая 2008 г. Проверено 28 мая 2008 г.
- ^ "будет ли pvmove'ing (LV за раз) дефрагментироваться?" . 29 апреля 2010 г. Проверено 22 мая 2015 г.
- ^ "Попался" . btrfs вики. Архивировано из оригинала 4 января 2024 года . Проверено 24 апреля 2017 г.
Дальнейшее чтение
[ редактировать ]- Льюис, Эй Джей (27 ноября 2006 г.). «LVM-HOWTO» . Проект документации Linux . Проверено 4 марта 2008 г. .
- Патент США 5129088 , Ауслендер и др., «Метод обработки данных для создания виртуальных дисков из несмежных групп логически смежных адресуемых блоков устройства хранения данных с прямым доступом», выданный 7 июля 1992 г. (фундаментальный патент).
- «RedHat Linux: что такое диспетчер логических томов или LVM?» . techmagazinez.com . 6 августа 2013 года. Архивировано из оригинала 10 августа 2013 года . Проверено 4 сентября 2013 г.
- «Страница ресурсов LVM2» . исходное программное обеспечение.org . 8 июня 2012 года . Проверено 4 сентября 2013 г.
- «Как: установить Ubuntu на разделы LVM» . Дебунту.орг . 28 июля 2007 года . Проверено 4 сентября 2013 г.
- «Диспетчер логических томов» . markus-gattol.name . 13 июля 2013 г.