LVM (Logical Volume Manager)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:36, 7 ноября 2016.
Logical Volume Manager
Создатели: Heinz Mauelshagen[1]
Постоянный выпуск: 2.02.147 / 19 March 2016 года; 3 years ago (2016-03-19)[2]
Написана на: C
Операционная система: Linux
Лицензия: GNU GPL
Веб-сайт sources.redhat.com/lvm2/

Менеджер логических томов (англ. logical volume manager) — подсистема операционных систем Linux и OS/2, позволяющая использовать разные области одного жёсткого диска и/или области с разных жёстких дисков как один логический том. Реализована с помощью подсистемы device mapper.

LVM1.png

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

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

Основные понятия

LVM предусматривает три логических уровня работы с дисковым пространством:

  1. Самый нижний - физические тома или physical volumes. Это собственно физические диски. Это могут быть диски целиком (/dev/sda, /dev/sdb и т.д.) или отдельные разделы (/dev/sda1, /dev/sdb5 и т.п.).
  2. Группы томов - volume groups. В группы томов объединяются физические тома. Таким образом группы томов представляют собой пул дискового пространства, необходимый для следующего уровня. Группы томов могут иметь человеческие названия, говорящие администратору системы об их предназначении: system, sales, database и т.д.
  3. Логические тома - logical volumes - это аналог разделов физического диска и то, ради чего вообще существуют диски - именно на них хранятся данные. Пользователи (и процессы) системы работают только с логическими томами. Таким образом LVM создает для них всех слой абстракции, скрывая, с какими именно физическими дисками они в данный момент работают. Администратор системы может добавлять физические тома в LVM и удалять их из него (см. ниже), но процессы (и пользователи) об этом знать не будут.

Преимущества и недостатки LVM

Преимущества LVM:

  • Возможность изменения емкости

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

  • Возможность изменения размера пула хранилища

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

  • Живое перемещение данных

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

  • Удобство присвоения имен устройствам

Логические тома могут объединяться в группы для облегчения их управления. Группам, в свою очередь, могут присваиваться любые имена.

  • Чередование дисков

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

  • Зеркалирование томов

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

  • Снимки томов

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

Недостатки

  • Только Linux. Отсутствие официальной поддержки в большинстве других ОС(FreeBSD, Windows Virtual PC).
  • Дополнительные шаги в более сложной настройке системы.

Установка LVM

Следует запомнить - названия утилит для работы с разными уровнями LVM совпадают. Различие только в первых двух буквах этого названия. Это:

  • pv* - для работы с физическими томами;
  • vg* - для работы с группами томов;
  • lv* - для работы с логическими томами.

Для работы с LVM действовать стоит так:

  1. Определить, с каким уровнем LVM надо работать - физические тома, группы томов или логические тома.
  2. Выбирать в зависимости от этого первые буквы названия: pv, vg или lv, соответственно.
  3. Набрать их в консоли и нажать два раза TAB. В этот момент срабатывает автодополнение, которое показывает команды, начинающиеся с указанных букв.
  4. Выбирать команду по ее названию. (например, pvcreate для создания физических томов. Если ее запустите с ключом --help , она покажет все возможные ключи. За более подробной информацией стоит залезть в man конкретной команды).

Установка LVM проходит в несколько этапов:

  1. Первый этап - это создание правильных разделов. Это такие разделы, которые LVM признает за свои и сможет при загрузке их корректно инициализировать. «Родной» тип разделов для LVM - 8E Linux LVM.
  2. Второй этап - это инициализированние созданных разделов как физические тома.
  3. Третий этап - это создание группы томов. Для этого используют команду vgcreate. (аргументы vgcreate это название группы томов (fileserver) и те физические тома, которые включаются в эту группу).

Активировать неработающий LVM можно командой vgchange -ay.

Команды для LVM:

  • ключ -L указывает размер создаваемого тома. Поддерживаются суффиксы K (килобайты), M (мегабайты), G (гигабайты).
  • ключ -n указывает название для тома (samba в данном случае)
  • последний аргумент fileserver указывает группу томов, в которой мы создаем логический том (теоретически, групп может быть несколько).

Обзор архитектуры LVM

Исходный менеджер логических томов LVM1, появившийся впервые в RHEL4, был заменен на LVM2, архитектура которого более универсальна. LVM2 обладает следующими преимуществами:

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

В основе логического тома LVM лежит блочное устройство (раздел или даже целый диск). Устройство инициализируется как физический том LVM[3].

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

Кластерный менеджер логических томов

Кластерный менеджер логических томов (CLVM, Clustered Logical Volume Manager) представляет собой набор кластерных расширений для LVM, позволяющих кластеру управлять совместным хранилищем (например, на SAN) с помощью LVM.

Рис.1. Кластерный менеджер логических томов

Возможность использования CLVM также определяется системными требованиями:

  • Если доступ к хранилищу необходим лишь одному узлу, то можно использовать LVM без расширений CLVM. При этом создаваемые логические тома будут локальными.
  • Если для обеспечения восстановления после отказа вы используете кластерную систему, в которой только один узел может обращаться к хранилищу в заданный момент времени, потребуются агенты HA-LVM (High Availability Logical Volume Management). Конфигурация и управление кластером Red Hat предоставляет информацию об агентах HA-LVM.
  • Если нескольким узлам необходимо обращаться к хранилищу, доступ к которому разделяется между активными узлами, то потребуется использовать CLVM. CLVM позволит пользователю настроить логические тома на разделяемом хранилище за счет блокирования доступа к физическому хранилищу на время настройки логического тома, используя при этом кластерные службы блокирования для управления разделяемым хранилищем.

Для работы CLVM необходимо, чтобы выполнялось программное обеспечение Red Hat Cluster Suite, включая clmvd. Демон clmvd является основным кластерным расширением LVM, выполняется на каждом компьютере в кластере и передает им обновления метаданных LVM, тем самым обеспечивая постоянство представления логических томов. Более подробную информацию по установке и администрированию Red Hat Cluster Suite можно найти в руководстве Конфигурация и управление кластером Red Hat.

Компоненты LVM

Рис.2. Компоненты LVM

Физические тома

В основе логического тома LVM лежит блочное устройство (раздел или даже целый диск). Устройство инициализируется как физический том LVM. При этом в начале размещается специальная метка.[4]

Рис.3. Организация физических томов

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

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

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

Метаданные LVM включают детали конфигурации групп томов LVM в вашей системе. По умолчанию идентичные копии метаданных поддерживаются в каждой секции метаданных всех логических томов в составе группы. Метаданные не занимают много места и хранятся в формате ASCII.

В настоящее время LVM позволяет сохранять 0, 1 или 2 идентичных копии метаданных для каждого физического тома. По умолчанию сохраняется одна копия. Задав число копий один раз, вы не сможете его изменить позднее. Первая копия хранится в начале устройства, вскоре после метки. Вторая копия (если она существует) располагается в конце устройства. Если вы случайно перезаписали область в начале диска, вторая копия, расположенная в конце диска, позволит восстановить метаданные.

LVM Physical Volume Layout

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

Несколько разделов на диске

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

  • Облегчение администрирования

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

  • Чередование производительности

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

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

Группы томов

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

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

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

Логические тома LVM

В LVM группа томов разделяется на логические тома. Существует три типа логических томов LVM — линейные тома, тома с чередованием и зеркальные.

Линейный том
Рис.4. Линейный том с неравными физическими томами

Линейный том объединяет физические тома в один логический том. Например, если в наличии имеется два диска по 60 Гб, то вы можете создать логический том размером 120 Гб. Создание линейного объема назначает диапазон физических экстентов в область логического тома.

Логические тома с чередованием

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

Рис.5. Чередование данных между тремя физическими томами

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

Следующий пример демонстрирует чередование данных между тремя физическими томами. На рисунке :

  • первая секция данных записывается на PV1
  • вторая секция данных записывается на PV2
  • третья секция данных записывается на PV3
  • четвертая секция данных записывается на PV1
Зеркальные логические тома

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

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

Зеркало LVM подразделяет зеркалируемое устройство на секции, размер которых обычно составляет 512 Кбайт. LVM ведет журнал для отслеживания того, какие регионы синхронизированы с зеркалами. Этот журнал может храниться на диске (в таком случае он будет сохраняться между перезагрузками) или просто временно находиться в памяти.

Рис.6. Зеркальные логические тома
Снимки

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

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

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

  • Обычно снимок создается, если необходимо создать резервную копию логического тома, не останавливая активную систему, данные в которой постоянно обновляются.
  • Для проверки целостности файловой системы снимка можно использовать команду fsck.
  • Так как сам снимок доступен для чтения и записи, можно тестировать приложения, создавая снимок и экспериментируя с ним. При этом действительные данные сохраняются нетронутыми.
  • Снимки могут использоваться при работе с виртуальной машиной XenApp. При этом можно создать образ диска, сделать его снимок и затем его изменить для конкретного домена domU. Для другого domU можно создать другой снимок. Так сохраняются лишь изменяющиеся секции, а основной объем тома доступен для совместного использования.

Обзор администрирования LVM

Глава включает в себя следующие разделы:

  1. Создание томов LVM в кластере
  2. Обзор создания логического тома
  3. Увеличение размера файловой системы логического тома
  4. Резервное копирование логического тома
  5. Журналирование

Создание томов LVM в кластере

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

Обзор создания логического тома

Последовательность шагов при создании логического тома LVM:

  1. Инициализация разделов как физических томов, которые будут использоваться логическим томом (присвоение им метки).
  2. Создание группы томов.
  3. Создание логического тома.

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

  • С помощью команды gfs_mkfs создайте файловую систему GFS(Google File System) на логическом томе.
  • С помощью команды mkdir создайте точку монтирования. В кластерной системе создайте точку монтирования на каждом узле.
  • Смонтируйте файловую систему. Для каждого узла в системе можно добавить отдельную строчку в файле fstab.
  • Или же можно создать и смонтировать файловую систему GFS(Google File System), воспользовавшись графическим интерфейсом.

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

Увеличение размера файловой системы логического тома

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

  1. Создайте новый физический том.
  2. Нарастите группу томов, в которую включен логический том с увеличиваемой файловой системой, так чтобы она содержала новый физический том.
  3. Увеличьте размер логического тома, чтобы он включал новый физический том.
  4. Увеличьте размер файловой системы.

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

Резервное копирование логического тома

Резервные копии и архивы метаданных создаются по умолчанию автоматически при каждом изменении настроек логических томов или группы томов (это можно отключить в файле lvm.conf). Также по умолчанию резервная копия метаданных сохраняется в /etc/lvm/backup, а архивы метаданных — в /etc/lvm/archive. Параметры, устанавливаемые в lvm.conf, определяют длительность хранения архивов метаданных в /etc/lvm/archive, а также число хранимых файлов. Ежедневное резервирование должно включать создание копии каталога /etc/lvm.[5]

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

Журналирование

Вывод всех сообщений обрабатывается модулем журналирования. При этом используются следующие уровни журналирования:

  • стандартный вывод/ ошибка
  • syslog
  • файл журнала
  • внешняя функция журналирования


Решение проблем LVM

Диагностика

Если команда не функционирует как ожидается, осуществить сбор информации можно следующим образом:

  • Использовать опции -v, -vv, -vvv, -vvvv для отображения подробного вывода исполняемой команды.
  • Выполните команду lvmdump. Ее вывод будет содержать информацию, которая может помочь при определении проблем.
  • Команды lvs -v, pvs -a, dmsetup info -c позволяют получить дополнительную информацию о системе.
  • Просмотрите последнюю резервную копию метаданных в /etc/lvm/backup и архивы в /etc/lvm/archive.
  • Команда lvm dumpconfig позволит проверить текущую информацию конфигурации.
  • Файл .cache в /etc/lvm должен включать запись, перечисляющую устройства, на которых расположены физические тома.

Удаление потерянных физических томов из группы

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

Рекомендуется сначала выполнить команду vgreduce с опцией --test, чтобы знать, что именно будет удалено.

Аналогично большинству действий LVM, результат команды vgreduce обратим, если сразу же выполнить vgcfgrestore для восстановления метаданных. Например, если вы выполнили vgreduce с аргументом removemissing, не указав при этом test, будут удалены логические тома. В этом случае можно заменить физический том и выполнить vgcfgrestore для восстановления группы.

Файлы конфигурации LVM

LVM поддерживает разные файлы конфигурации. При запуске системы из каталога, заданного переменной окружения LVM_SYSTEM_DIR будет загружен файл lvm.conf.

В lvm.conf могут быть указаны дополнительные файлы конфигурации для загрузки. Последующие настройки будут переопределять предыдущие. Чтобы отобразить текущие настройки после загрузки всех файлов конфигурации, выполните команду lvm dumpconfig.

Для конфигурации LVM используются следующие файлы:
/etc/lvm/lvm.conf 
Основной файл конфигурации, к которому обращаются утилиты. 
/etc/lvm/.cache 
Кэш-файл фильтров имен устройств (настраиваемый). 
/etc/lvm/backup/ 
Каталог, куда сохраняются автоматически созданные резервные копии метаданных групп томов (настраиваемый)
/etc/lvm/archive/ 
Каталог, куда сохраняются архивы автоматически созданных резервных копий метаданных групп томов (настраивается в зависимости от глубины истории архивации и пути)
/var/lock/lvm/ 
Для одного узла используются файлы блокировки, предотвращающие разрушение данных при параллельной работе утилит.

Примечания

  1. "LVM README". 2003-11-17. Retrieved 2014-06-25. 
  2. Kergon, Alasdair (2016-03-19). "[lvm-devel] v2_02_147 annotated tag has been created". lvm-devel. Red Hat. Retrieved 2016-03-20. 
  3. LVM [Электронный ресурс] - Режим доступа: http://ru.wikipedia.org/?oldid=74791158
  4. Управление логическими томами [Электронный ресурс] - Режим доступа: https://www.ibm.com/developerworks/ru/library/l-lvm2/
  5. Руководство администратора LVM [Электронный ресурс] - Режим доступа: https://access.redhat.com/documentation/ru-RU/Red_Hat_Enterprise_Linux/5/html-single/Logical_Volume_Manager_Administration/index.html