stringtranslate.com

Менеджер логических томов (Linux)

В Linux Logical Volume Manager ( LVM ) — это фреймворк сопоставления устройств , который обеспечивает управление логическими томами для ядра Linux . Большинство современных дистрибутивов Linux поддерживают LVM до такой степени, что могут иметь свои корневые файловые системы на логическом томе . [3] [4] [5]

Хайнц Мауэльсхаген написал оригинальный код LVM в 1998 году, когда он работал в Sistina Software , взяв за основу основные принципы проектирования менеджера томов HP-UX . [1]

Использует

LVM используется в следующих целях:

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

Функции

Различные элементы LVM

Базовая функциональность

Расширенная функциональность

РЕЙД

Высокая доступность

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

КЛВМ
Распределенный менеджер блокировок используется для посредничества в одновременных доступах к метаданным LVM. Всякий раз, когда узлу кластера необходимо изменить метаданные LVM, он должен получить разрешение от своего локального clvmd, который находится в постоянном контакте с другими clvmdдемонами в кластере и может сообщать о желании получить блокировку на определенный набор объектов.
HA-LVM
Осведомленность о кластере остается за приложением, обеспечивающим функцию высокой доступности. Что касается LVM, HA-LVM может использовать CLVM в качестве механизма блокировки или продолжать использовать блокировку файлов по умолчанию и уменьшать «коллизии», ограничивая доступ только теми объектами LVM, которые имеют соответствующие теги. Поскольку это более простое решение позволяет избежать конкуренции, а не смягчить ее, одновременный доступ не допускается, поэтому HA-LVM считается полезным только в активно-пассивных конфигурациях.
lvmlockd
По состоянию на 2017 год — стабильный компонент LVM, который предназначен для замены, clvmdделая блокировку объектов LVM прозрачной для остальной части LVM, не полагаясь на распределенный менеджер блокировок. [14] Он получил широкое развитие в 2016 году. [15]

Описанные выше механизмы решают только проблемы с доступом LVM к хранилищу. Файловая система, выбранная для размещения поверх таких LV, должна либо сама поддерживать кластеризацию (например, GFS2 или VxFS ), либо она должна монтироваться только одним узлом кластера в любой момент времени (например, в конфигурации «активный-пассивный»).

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

Группы LVM VG должны содержать политику распределения по умолчанию для новых томов, созданных из них. Позже ее можно изменить для каждого LV с помощью lvconvert -Aкоманды или на самой группе VG с помощью vgchange --alloc. Чтобы минимизировать фрагментацию, LVM сначала попытается применить самую строгую политику (непрерывную), а затем перейдет к наиболее либеральной политике, определенной для объекта LVM, пока распределение не будет успешно выполнено.

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

Доступные политики распределения:

Выполнение

Базовый пример головки LVM
Внутреннее устройство версии 1 LVM. На этой схеме PE обозначает Физический Экстент.

Обычно первый мегабайт каждого физического тома содержит в основном закодированную в ASCII структуру, называемую «заголовком LVM» или «головой LVM». Первоначально голова LVM записывалась в первый и последний мегабайт каждого PV для избыточности (в случае частичного отказа оборудования); однако позже это было изменено на только первый мегабайт. Заголовок каждого PV представляет собой полную копию макета всей группы томов, включая UUID всех других PV и LV, а также карту распределения PE в LE . Это упрощает восстановление данных в случае потери PV.

В серии 2.6 ядра Linux LVM реализован в терминах device mapper , простой схемы на уровне блоков для создания виртуальных блочных устройств и отображения их содержимого на другие блочные устройства. Это минимизирует объем относительно сложного для отладки кода ядра, необходимого для реализации LVM. Это также позволяет использовать его службы перенаправления ввода-вывода совместно с другими менеджерами томов (такими как EVMS ). Любой код, специфичный для LVM, выводится в его инструменты пользовательского пространства, которые просто манипулируют этими отображениями и восстанавливают их состояние из метаданных на диске при каждом вызове.

Чтобы перевести группу томов в режим онлайн, используйте инструмент «vgchange»:

  1. Поиск фотоэлектрических модулей во всех доступных блочных устройствах.
  2. Анализирует заголовок метаданных в каждом найденном PV.
  3. Вычисляет макеты всех видимых групп томов.
  4. Выполняет цикл по каждому логическому тому в группе томов, который необходимо перевести в режим онлайн, и:
    1. Проверяет, видны ли все физические тома логического тома, который необходимо подключить.
    2. Создает новое пустое сопоставление устройств.
    3. Отображает его (с «линейной» целью) на области данных физических томов, к которым принадлежит логический том.

Чтобы переместить подключенный логический том между физическими томами в одной группе томов, используйте инструмент «pvmove»:

  1. Создает новое пустое сопоставление устройств для места назначения.
  2. Применяет цель "зеркала" к исходной и целевой картам. Ядро запустит зеркало в "деградированном" режиме и начнет копировать данные из оригинала в цель, чтобы синхронизировать их.
  3. Заменяет исходное сопоставление на место назначения, когда зеркало синхронизируется, а затем уничтожает оригинал.

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

Предостережения

Смотрите также

Ссылки

  1. ^ ab "LVM README". 2003-11-17 . Получено 2014-06-25 .
  2. ^ "[lvm-devel] v2_03_21 аннотированный тег был создан". 21 апреля 2023 г. Получено 22 апреля 2023 г.
  3. ^ "7.1.2 LVM Configuration with YaST". SUSE. 12 июля 2011 г. Архивировано из оригинала 25 июля 2015 г. Получено 22 мая 2015 г.
  4. ^ "HowTo: Set up Ubuntu Desktop with LVM Partitions". Ubuntu. 1 июня 2014 г. Архивировано из оригинала 4 марта 2016 г. Получено 22 мая 2015 г.
  5. ^ "9.15.4 Создание логического тома LVM". Red Hat. 8 октября 2014 г. Получено 22 мая 2015 г.
  6. ^ «Производительность BTRFS по сравнению с LVM+EXT4 в отношении рабочих нагрузок базы данных». 29 мая 2018 г.
  7. ^ "Tagging LVM2 Storage Objects". Micro Focus International . Получено 21 мая 2015 г.
  8. ^ "The Metadata Daemon". Red Hat Inc. Получено 22 мая 2015 г.
  9. ^ "Использование новой функции кэширования LVM". 22 мая 2014 г. Получено 11 июля 2014 г.
  10. ^ "2.3.5. Тонко-выделенные логические тома (тонкие тома)". Access.redhat.com . Получено 2014-06-20 .
  11. ^ "4.101.3. RHBA-2012:0161 — lvm2 исправление ошибки и улучшение обновления" . Получено 2014-06-08 .
  12. ^ "5.4.16. Логические тома RAID". Access.redhat.com . Получено 2017-02-07 .
  13. ^ "Управление операциями ввода-вывода на логическом томе RAID1". redhat.com . Получено 16 июня 2014 г. .
  14. ^ "Re: Снимок LVM с кластеризованной группой томов [РЕШЕНО]". 15 марта 2013 г. Получено 08.06.2015 г.
  15. ^ ""vmlockd.c git history"". Архивировано из оригинала 4 января 2024 г.
  16. ^ "Ошибка 9554 – барьеры записи через устройство сопоставления не поддерживаются". 2009-07-01 . Получено 2010-01-24 .
  17. ^ "Барьеры и журналируемые файловые системы". LWN . 2008-05-22 . Получено 2008-05-28 .
  18. ^ "будет ли pvmove'ing (по одному LV за раз) дефрагментировать?". 2010-04-29 . Получено 2015-05-22 .
  19. ^ "Gotchas". btrfs Wiki. Архивировано из оригинала 4 января 2024 г. Получено 24.04.2017 .

Дальнейшее чтение