LVM/ru

С помощью LVM (Logical Volume Manager) администраторы могут создавать метаустройства, предоставляющие уровень абстракции между файловой системой и нижним уровнем — физическими устройствами хранения. Такие метаустройства (на которых размещены файловые системы) называются логическими томами (logical volumes), они используют память набора устройств хранения — группы томов (volume groups). Группа томов включает один или несколько физических томов (physical volumes), которые, собственно, и хранят данные.

Физические тома могут быть разделами, целыми жесткими дисками SATA, сгруппированными как JBOD (Just a Bunch Of Disks - просто пачка дисков), системы RAID, iSCSI, Fibre Channel, eSATA и др.

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

Ядро
Активируйте следующие параметры ядра:

Программы
Установите :

Конфигурация
Настройка LVM выполняется на нескольких уровнях:
 * 1) Управление логическими томами, физическими томами и группами томов с помощью утилит управления
 * 2) Тонкая настройка подсистемы LVM с помощью файла конфигурации
 * 3) Управление службами на уровне дистрибутива
 * 4) Настройка с помощью initramfs

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

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

Управление службами
Gentoo предоставляет службу LVM для автоматического обнаружения и активирования групп томов и логических томов.

Эта служба может регулироваться системой init.

openrc
Для запуска LVM вручную:

Для запуска LVM во время загрузки:

systemd
Для запуска lvm вручную:

Для запуска LVM во время загрузки:

Использование LVM в initramfs
Большинство загрузчиков не способны загрузиться непосредственно с LVM. С этим не могут справиться ни GRUB legacy ни LILO. Grub 2 может загрузиться с "линейного" логического тома LVM (linear logical volume), "зеркального" логического тома (mirrored logical volume) и, возможно, некоторых видов логических томов RAID. На данный момент ни один загрузчик не поддерживает "тонкие" логические тома (thin logical volumes).

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


 * genkernel может загружаться с разделов любого типа, кроме тонких разделов (так как он не компилирует и не копирует пакет с исходного хоста), и, может быть, RAID10 (поддержка RAID10 требует LVM2 2.02.98, но but genkernel собирает версию 2.02.89, однако если существуют статические бинарные файлы, он может их скопировать)
 * genkernel-next может загружаться с разделов любого типа, но требует достаточно новый, либо получающиеся бинарные файлы для тонких разделов не будут работать (Смотри )
 * dracut должен загружаться с разделов любого типа, но он включает поддержку тонких разделов в initramfs только если корневой раздел хоста является тонким.

Genkernel/Genkernel-next
Установите либо, либо. Можно включить USE флаг static для пакета, чтобы genkernel использовал бинарные файлы, найденные на системе (в противном случае он будет собирать свою собственную копию). Следующий пример соберет только initramfs (не все ядро) и добавит поддержку LVM.

Man-страница genkernel описывает другие опции, использование которых зависит от требований системы.

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

Dracut
Пакет был портирован из проекта RedHat и является похожим инструментом для генерирования initramfs. Так как он в настоящее время находится в ~arch для тестирования, пользователям необходимо будет разрешить его (с использованием ) для установки. Перед тем, как это сделать, переменная  должна быть добавлена в. Могут использоваться и другие модули, обратитесь к статье Dracut. Обычно следующие команды сгенерируют пригодную для использования initramfs по умолчанию.

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

Для полного списка опций по LVM в dracut, просмотрите раздел в руководстве по Dracut.

Использование
LVM организует хранение на трех различных уровнях, описанных ниже:
 * Жесткие диски, разделы, системы RAID, либо другие источники хранения инициализируются как Физические Тома (PV)
 * Физические тома (PV) группируются вместе в Группы Томов (VG)
 * Логические Тома (LV) создаются в Группах Томов (VG)

PV (Физический Том)
Физические тома это действительное железо, либо система хранения, для которой и собран LVM

Разбивка
Тип раздела для LVM это 8e (Linux LVM).

Например, чтобы установить тип с помощью fdisk для раздела на :

В fdisk, создайте разделы, используя клавишу, а затем измените тип раздела с использованием клавиши на 8e.

Создание PV
Физические тома можно создать и проинициализировать с помощью команды pvcreate.

Например, следующая команда создает физический том на первом главном разделе и :

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

Если необходимо отобразить больше физических томов, то pvscan</tt> может определить неактивные физические тома и активировать их.

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

Если физический том должен быть удален из группы томов, то вначале нужно переместить с физического тома данные. С помощью команды pvmove</tt> все данные на физическом томе перемещаются на другие физические тома в той же группе томов.

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

Следующий шаг это удаление физического тома из группы томов с использованием vgreduce</tt>, после чего устройство можно перестать считать физическим томом с использованием pvremove</tt>:

VG (Группа Томов)
Группа томов (VG) это некоторое число физических томов, которые отображаются как в файловой системе устройств. Имя группы томов выбирается администратором.

Создание VG
Следующая команда создает группу томов под названием vg0, которой назначены два физических тома и.

Получение списка VG
Чтобы получить список всех активных групп томов, используйте команду vgdisplay</tt>:

Если группы томов отсутствуют, используйте команду vgscan</tt>, чтобы найти группы томов:

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

В следующем примере мы расширяем группу томовvg0 физическим томом :

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

Уменьшение VG
Если физические тома нужно удалить из группы томов, то данные, которые все еще используются на физическом томе нужно перенести в другие физические тома в той же группе томов. Как мы видели выше, это делается с помощью команды, после чего физический том можно удалить из группы томов, используя vgreduce</tt>:

Удаление VG
Если группа томов больше не нужна (или, другими словами, пул хранения, который она представляет, больше не используется, и физические тома в ней нужно освободить для других целей), то группа томов может быть удалена с помощью vgremove</tt>. Это работает только если для группы томов не заведено ни одного логического тома, и все кроме физические тома, кроме последнего, были уже удалены из пула.

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

Создание LV
Чтобы создать логический том, используется команда lvcreate</tt>. Параметрами к данной команде нужно указать необходимый размер логического тома (который не может быть больше объема свободного места в группе томов), группу томов, в которой нужно выделить пространство, и имя логического тома для создания.

В следующем примере создается логический том с названием lvol1 в группе томов с названием vg0 с размером 150 Мб:

Существует возможность сказать lvcreate</tt>, что нужно использовать все свободное пространство внутри группы томов. Это делается с использованием параметра -l, который выбирает число экстентов, а не (человекочитаемый) размер. Логические тома разбиты на логические экстенты, которые представляют собой куски данных внутри группы томов. Все экстенты в группе томов имеют одинаковый размер. С помощью параметра -l команду lvcreate</tt> можно попросить выделить все свободные экстенты:

Кроме FREE может использоваться ключ VG, который означает весь размер группы томов.

Получение списка LV
Чтобы получить список всех логических томов, используйте команду lvdisplay</tt>:

Если логические тома отсутствуют, то можно использовать команду lvscan</tt>, чтобы просканировать все существующие группы томов в поиске логических томов

Расширение LV
Когда логический том нужно расширить, можно использовать команду lvextend</tt> с целью увеличения выделенного для логического тома места.

Например, чтобы расширить логический том lvol1 до 500 Мб:

Также возможно указать размер, который нужно прибавить, а не конечный размер:

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

Например, чтобы изменить размер файловой системы ext4, чтобы она стала размером 500 Мб:

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

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

С уменьшенной файловой системой теперь можно уменьшить и логический том:

Разрешения на LV
LVM поддерживает разрешения на логические тома.

Например, логический том можно установить в состояние только для чтения с использованием команды lvchange</tt>:

Требуется перемонтирование, так как данное изменение не применяется мгновенно.

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

Удаление LV
Перед удалением логического тома, удостоверьтесь, что он больше не смонтирован:

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

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

Возможности
LVM имеет несколько интересных возможностей для администраторов по данным, включая (но не только)
 * тонкие тома (перебор места)
 * поддержка снимков
 * типы томов с различными методами выделения пространства

Тонкие тома
Recent versions of LVM2 (2.02.89) support "thin" volumes. Thin volumes are to block devices what sparse files are to file systems. Thus, a thin logical volume within a pool can be "over-committed": its presented size can be larger than the allocated size - it can even be larger than the pool itself. Just like a sparse file, the extents are allocated as the block device gets populated. If the file system has discard support extents are freed again as files are removed, reducing space utilization of the pool.

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

Создание тонкого пула
У каждого тонкого пула есть связанные с ним метаданные, которые добавляются к размеру тонкого пула. LVM подсчитывает размер метаданных на основании размера тонкого пула как минимальное из значений число_чанков_пула * 64 байта или 2Миб, смотря что больше. Администратор может выбрать и другой размер метаданных.

Чтобы создать тонкий пул, добавьте параметры --type thin-pool --thinpool thin_pool к lvcreate</tt>:

Пример выше создает тонкий пул с названием thin_pool общим размером 150 Мб. Это действительный размер, выделяемый для тонкого пула (а, следовательно, общий объем пространства хранения, который может быть использован).

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

Из-за метаданных, добавляемых к тонкому пулу, интуитивно-понятный способ использования всего оставшегося в группе томов места для логического тома больше не будет работать (смотри ошибку LVM номер |812726):

Заметьте, что с тонким пулом не связана какая-либо нода устройств, как с другими логическими томами.

Создание тонкого логического тома
"Тонкий логический том" это логический том внутри тонкого пула (который сам по себе является логическим томом). Так как тонкие логические тома являются "разреженными", с использованием параметра  указывается виртуальный, а не физический размер:

В данном примере (тонкий) логический том lvol1 будет виден как устройство размером в 300 Мб, несмотря на то, что нижележащий пул имеет только 150 Мб выделенного пространства.

Также возможно создать как тонкий пул, так и логический том внутри тонкого пула одной командой:

Получение списка тонких пулов и тонких логических томов
Тонкие пулы и тонкие логические тома это специальные типы логических томов, и поэтому они отображаются командой <tt>lvdisplay</tt>. Команда <tt>lvscan</tt> также обнаруживает эти логические тома.

Расширение тонкого пула
Тонкий пул расширяется как и не тонкий логический том, с использованием <tt>lvextend</tt>. Например:

Расширение тонкого логического тома
Тонкий логический том расширяется как и обычный:

Заметьте, что команда <tt>lvextend</tt> использует опцию  (или   если используется число экстентов), а не "виртуальный размер", который использовался при создании.

Уменьшение тонкого пула
На текущий момент LVM не может уменьшать размер тонкого пула. Смотри ошибку LVM номер |812731.

Уменьшение тонкого логического тома
Тонкие логические тома уменьшаются точно так же, как и обычные логические тома.

Например:

Заметьте, что команда <tt>lvreduce</tt> использует опцию  (или   если используется число экстентов), а не "виртуальный размер", который использовался при создании.

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

Когда тонкий пул больше не предоставляет ни одного тонкого логического тома, его можно удалить командой <tt>lvremove</tt>:

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

Создание логического тома - снимка
Снимок логического тома создается при помощи опции  команды <tt>lvcreate</tt>. Снимку логического диска заранее выделяется некоторые хранилище, LVM "регистрирует" все изменения, сделанные в оригинальном томе и сохраняет эти изменения в этом хранилище снимка. При обращении к снимку, LVM читает информацию с оригинального логического тома, затем проверяет все зарегистрированные изменения и "откатывает" эти изменения перед выдачей результатов пользователю.

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

Пример выше создает снимок логического диска с именем "20140412_lvol1" на основе логического тома "lvol1" из группы томов "vg0". Он использует 10% пространства, выделенного для группы томов.

Доступ к снимку логического тома
Снимок логического тома может быть смонтирован как обычный логический том. Он не ограничивается только операциями для чтения - его можно изменить. Это может использоваться для тестирования изменений, прежде чем делать эти изменения на  "работающей" файловой системе.

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

LVM тонкие снимки
Для того чтобы сделать тонкий снимок используется команда <tt>lvcreate</tt> с опцией. Размер снимка не указывается:

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

It is also possible to take snapshots of snapshots:

Thin snapshots have several advantages over regular snapshots. First, thin snapshots are independent of their original logical volume once created. The original logical volume can be shrunk or deleted without affecting the snapshot. Second, thin snapshots can be efficiently created recursively (snapshots of snapshots) without the "chaining" overhead of regular recursive LVM snapshots.

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

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

Откат к состоянию тонкого снимка
Для таких томов <tt>lvconvert --merge</tt> не работает. Вместо этого удалите оригинальный логический том и переименуйте снимок.

Различные способы распределения хранилища
LVM supports different allocation methods for storage:
 * Linear volumes (which is the default);
 * Mirrored volumes (in a more-or-less active/standby setup);
 * Striping (RAID0);
 * Mirrored volumes (RAID1 - which is more an active/active setup);
 * Striping with parity (RAID4 and RAID5);
 * Striping with double parity (RAID6);
 * Striping and mirroring (RAID10).

Linear volumes
Linear volumes are the most common kind of LVM volumes. LVM will attempt to allocate the logical volume to be as physically contiguous as possible. If there is a physical volume large enough to hold the entire logical volume, then LVM will allocate it there, otherwise it will split it up into as few pieces as possible.

The commands introduced earlier on to create volume groups and logical volumes create linear volumes.

Because linear volumes have no special requirements, they are the easiest to manipulate and can be resized and relocated at will. If a logical volume is allocated across multiple physical volumes, and any of the physical volumes become unavailable, then that logical volume cannot be started anymore and will be unusable.

Mirrored volumes
LVM supports mirrored volumes, which provide fault tolerance in the event of drive failure. Unlike RAID1, there is no performance benefit - all reads and writes are delivered to a single side of the mirror.

To keep track of the mirror state, LVM requires a log to be kept. It is recommended (and often even mandatory) to position this log on a physical volume that does not contain any of the mirrored logical volumes. There are three kind of logs that can be used for mirrors:


 * 1) Disk is the default log type. All changes made are logged into extra metadata extents, which LVM manages. If a device fails, then the changes are kept in the log until the mirror can be restored again.
 * 2) Mirror logs are disk logs that are themselves mirrored.
 * 3) Core mirror logs record the state of the mirror in memory only. LVM will have to rebuild the mirror every time it is activated. This type is useful for temporary mirrors.

To create a logical volume with a single mirror, pass the -m 1 argument (to select standard mirroring) with optionally  to select a particular log type:

The -m 1 tells LVM to create one (additional) mirror, so requiring 2 physical volumes. The  option is an optimization - without it LVM will try synchronize the mirror by copying empty sectors from one logical volume to another.

It is possible to create a mirror of an existing logical volume:

The  option does the conversion in the background as this can take quite a while.

To remove a mirror, set the number of mirrors (back) to 0:

If part of the mirror is unavailable (usually because the disk containing the physical volume has failed), the volume group will need to be brought up in degraded mode:

On the first write, LVM will notice the mirror is broken. The default policy ("remove") is to automatically reduce/break the mirror according to the number of pieces available. A 3-way mirror with a missing physical volume will be reduced to 2-way mirror; a 2-way mirror will be reduced to a regular linear volume. If the failure is only transient, and the missing physical volume returns after LVM has broken the mirror, the mirrored logical volume will need to be recreated on it.

To recover the mirror, the failed physical volume needs to be removed from the volume group, and a replacement physical volume needs to be added (or if the volume group has a free physical volume, it can be created on that one). Then the mirror can be recreated with <tt>lvconvert</tt> at which point the old physical volume can be removed from the volume group:

It is possible to have LVM recreate the mirror with free extents on a different physical volume if one side fails. To accomplish that, set  to allocate in.

Thin mirrors
It is not (yet) possible to create a mirrored thin pool or thin volume. It is possible to create a mirrored thin pool by creating a normal mirrored logical volume and then converting the logical volume to a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Striping (RAID0)
Instead of a linear volume, where multiple contiguous physical volumes are appended, it possible to create a striped or RAID0 volume for better performance. This will alternate storage allocations across the available physical volumes.

To create a striped volume over three physical volumes:

The  option indicates over how many physical volumes the striping should be done.

It is possible to mirror a stripe set. The  and   options can be combined to create a striped mirror:

This creates a 2 physical volume stripe set and mirrors it on 2 different physical volumes, for a total of 4 physical volumes. An existing stripe set can be mirrored with <tt>lvconvert</tt>.

A thin pool can be striped like any other logical volume. All the thin volumes created from the pool inherit that settings - do not specify it manually when creating a thin volume.

It is not possible to stripe an existing volume, nor reshape the stripes across more/less physical volumes, nor to convert to a different RAID level/linear volume. A stripe set can be mirrored. It is possible to extend a stripe set across additional physical volumes, but they must be added in multiples of the original stripe set (which will effectively linearly append a new stripe set).

Mirroring (RAID1)
Unlike RAID0, which is striping, RAID1 is mirroring, but implemented differently than the original LVM mirror. Under RAID1, reads are spread out across physical volumes, improving performance. RAID1 mirror failures do not cause I/O to block because LVM does not need to break it on write.

Any place where an LVM mirror could be used, a RAID1 mirror can be used in its place. It is possible to have LVM create RAID1 mirrors instead of regular mirrors implicitly by setting mirror_segtype_default to raid1 in.

To create a logical volume with a single mirror:

Note the difference for creating a mirror: There is no mirrorlog specified, because RAID1 logical volumes do not have an explicit mirror log - it built-in to the logical volume.

It is possible to convert an existing logical volume to RAID1:

To remove a RAID1 mirror, set the number of mirrors to 0:

If part of the RAID1 is unavailable (usually because the disk containing the physical volume has failed), the volume group will need to be brought up in degraded mode:

Unlike an LVM mirror, writing does NOT break the mirroring. If the failure is only transient, and the missing physical volume returns, LVM will resync the mirror by copying cover the out-of-date segments instead of the entire logical volume. If the failure is permanent, then the failed physical volume needs to be removed from the volume group, and a replacement physical volume needs to be added (or if the volume group has a free physical volume, it can be created on a different PV). The mirror can then be repaired with <tt>lvconvert</tt>, and the old physical volume can be removed from the volume group:

Тонкий RAID1
It is not (yet) possible to create a RAID1 thin pool or thin volume. It is possible to create a RAID1 thin pool by creating a normal mirrored logical volume and then converting the logical volume to a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will then merge them into a single logical volume.

Striping with parity (RAID4 and RAID5)
RAID0 is not fault-tolerant - if any of the physical volumes fail then the logical volume is unusable. By adding a parity stripe to RAID0 the logical volume can still function if a physical volume is missing. A new physical volume can then be added to restore fault tolerance.

Stripsets with parity come in 2 flavors: RAID4 and RAID5. Under RAID4, all the parity stripes are stored on the same physical volume. This can become a bottleneck because all writes hit that physical volume, and it gets worse the more physical volumes are in the array. With RAID5, the parity data is distributed evenly across the physical volumes so none of them become a bottleneck. For that reason, RAID4 is rare and is considered obsolete/historical. In practice, all stripesets with parity are RAID5.

Only the data physical volumes are specified with -i, LVM adds one to it automatically for the parity. So for a 3 physical volume RAID5, -i 2 is passed on and not -i 3.

When a physical volume fails, then the volume group will need to be brought up in degraded mode:

The volume will work normally at this point, however this degrades the array to RAID0 until a replacement physical volume is added. Performance is unlikely to be affected while the array is degraded - although it does need to recompute its missing data via parity, it only requires simple XOR for the parity block with the remaining data. The overhead is negligible compared to the disk I/O.

Чтобы починить RAID5:

It is possible to replace a still working physical volume in RAID5 as well:

The same restrictions of stripe sets apply to stripe sets with parity as well: it is not possible to enable striping with parity on an existing volume, nor reshape the stripes with parity across more/less physical volumes, nor to convert to a different RAID level/linear volume. A stripe set with parity can be mirrored. It is possible to extend a stripe set with parity across additional physical volumes, but they must be added in multiples of the original stripe set with parity (which will effectively linearly append a new stripe set with parity).

Thin RAID5 logical volumes
It is not (yet) possible to create stripe set with parity (RAID5) thin pools or thin logical volumes. It is possible to create a RAID5 thin pool by creating a normal RAID5 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Striping with double parity (RAID6)
RAID6 is similar to RAID5, however RAID6 can survive up to two physical volume failures, thus offering more fault tolerance than RAID5 at the expense of extra physical volumes.

Like RAID5, the  option is used to specify the number of physical volumes to stripe, excluding the 2 physical volumes for parity. So for a 5 physical volume RAID6, pass on  and not.

Recovery for RAID6 is the same as RAID5.

Thin RAID6 logical volumes
It is not (yet) possible to create a RAID6 thin pool or thin volumes. It is possible to create a RAID6 thin pool by creating a normal RAID6 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

LVM RAID10
RAID10 is a combination of RAID0 and RAID1. It is more powerful than RAID0+RAID1 as the mirroring is done at the stripe level instead of the logical volume level, and therefore the layout doesn't need to be symmetric. A RAID10 volume can tolerate at least a single missing physical volume, and possibly more.

Both the  and   options are specified:   is the number of stripes and   is the number of mirrors. Two stripes and 1 mirror requires 4 physical volumes.

Тонкий RAID10
It is not (yet) possible to create a RAID10 thin pool or thin volumes. It is possible to create a RAID10 thin pool by creating a normal RAID10 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Эксперименты с LVM
It is possible to experiment with LVM without using real storage devices. To accomplish this, loopback devices are created.

First make sure to have the loopback module loaded.

Next configure LVM to not use udev to scan for devices:

Create some image files which will become the storage devices. The next example uses five files for a total of about ~10GB of real hard drive space:

Check which loopback devices are available:

Assuming all loopback devices are available, next create the devices:

The devices are now available to use as any other hard drive in the system (and thus be perfect for physical volumes).

Устранение проблем
LVM has a few features that already provide some level of redundancy. However, there are situations where it is possible to restore lost physical volumes or logical volumes.

Утилита vgcfgrestore
By default, on any change to a LVM physical volume, volume group, or logical volume, LVM2 create a backup file of the metadata in. These files can be used to recover from an accidental change (like deleting the wrong logical volume). LVM also keeps a backup copy of the most recent metadata in. These can be used to restore metadata to a replacement disk, or repair corrupted metadata.

To see what states of the volume group are available to be restored (partial output to improve readability):

Recovering an accidentally deleted logical volume
Assuming the logical volume lvm_raid1 was accidentally removed from volume group vg0, it is possible to recover it as follows:

Replacing a failed physical volume
It possible to do a true "replace" and recreate the metadata on the new physical volume to be the same as the old physical volume:

The important line here is the UUID "unknown device".

This recreates the physical volume metadata, but not the missing logical volume or volume group data on the physical volume.

This now reconstructs all the missing metadata on the physical volume, including the logical volume and volume group data. However it doesn't restore the data, so the mirror is out of sync.

This will resync the mirror. This works with RAID 4,5 and 6 as well.

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

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

Внешние источники

 * LVM2 sourceware.org
 * LVM tldp.org
 * LVM2 Wiki redhat.com