Поиск по сайту:

Как использовать LVM для управления устройствами хранения в Ubuntu 16.04


Введение

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

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

Предпосылки

Чтобы продолжить, у вас должен быть доступ к серверу Ubuntu 16.04. Вам потребуется пользователь без полномочий root с привилегиями sudo, настроенный для выполнения административных задач. Вы можете следовать нашему руководству по начальной настройке сервера Ubuntu 16.04, чтобы создать необходимую учетную запись.

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

Когда будете готовы, войдите на сервер под своим пользователем sudo.

Отображение информации о физических томах, группах томов и логических томах

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

Отображение информации обо всех LVM-совместимых блочных устройствах хранения

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

  1. sudo lvmdiskscan
Output
/dev/ram0 [ 64.00 MiB] /dev/sda [ 200.00 GiB] /dev/ram1 [ 64.00 MiB] . . . /dev/ram15 [ 64.00 MiB] /dev/sdb [ 100.00 GiB] 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

Игнорируя устройства /dev/ram* (часть реализации RAM-диска Linux), мы можем увидеть устройства, которые потенциально могут использоваться в качестве физических томов для LVM.

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

Отображение информации о физических томах

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

Вы можете отобразить все физические устройства в вашей системе, используя lvmdiskscan с опцией -l, которая возвращает только физические тома:

  1. sudo lvmdiskscan -l
Output
WARNING: only considering LVM devices /dev/sda [ 200.00 GiB] LVM physical volume /dev/sdb [ 100.00 GiB] LVM physical volume 2 LVM physical volume whole disks 0 LVM physical volumes

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

  1. sudo pvscan
Output
PV /dev/sda VG LVMVolGroup lvm2 [200.00 GiB / 0 free] PV /dev/sdb VG LVMVolGroup lvm2 [100.00 GiB / 10.00 GiB free] Total: 2 [299.99 GiB] / in use: 2 [299.99 GiB] / in no VG: 0 [0 ]

Если вам нужна дополнительная информация, лучше использовать команды pvs и pvdisplay.

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

  1. sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 0 /dev/sdb LVMVolGroup lvm2 a-- 100.00g 10.00g

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

  1. sudo pvdisplay
Output
--- Physical volume --- PV Name /dev/sda VG Name LVMVolGroup PV Size 200.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 51199 Free PE 0 Allocated PE 51199 PV UUID kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ --- Physical volume --- PV Name /dev/sdb VG Name LVMVolGroup PV Size 100.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 25599 Free PE 2560 Allocated PE 23039 PV UUID udcuRJ-jCDC-26nD-ro9u-QQNd-D6VL-GEIlD7

Как видите, команда pvdisplay часто является самой простой командой для получения подробной информации о физических томах.

Чтобы обнаружить логические экстенты, сопоставленные с каждым томом, передайте параметр -m в pvdisplay:

  1. sudo pvdisplay -m
Output
--- Physical volume --- PV Name /dev/sda VG Name LVMVolGroup PV Size 200.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 51199 Free PE 38395 Allocated PE 12804 PV UUID kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/LVMVolGroup/db_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 5120: Logical volume /dev/LVMVolGroup/db_rimage_0 Logical extents 0 to 5119 . . .

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

Отображение информации о группах томов

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

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

  1. sudo vgscan
Output
Reading all physical volumes. This may take a while... Found volume group "LVMVolGroup" using metadata type lvm2

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

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

  1. sudo vgs -o +devices,lv_path
Output
VG #PV #LV #SN Attr VSize VFree Devices Path LVMVolGroup 2 4 0 wz--n- 299.99g 10.00g /dev/sda(0) /dev/LVMVolGroup/projects LVMVolGroup 2 4 0 wz--n- 299.99g 10.00g /dev/sda(2560) /dev/LVMVolGroup/www LVMVolGroup 2 4 0 wz--n- 299.99g 10.00g /dev/sda(3840) /dev/LVMVolGroup/db LVMVolGroup 2 4 0 wz--n- 299.99g 10.00g /dev/sda(8960) /dev/LVMVolGroup/workspace LVMVolGroup 2 4 0 wz--n- 299.99g 10.00g /dev/sdb(0) /dev/LVMVolGroup/workspace

Для более подробных, удобочитаемых выходных данных лучше всего подходит команда vgdisplay. Добавление флага -v также предоставляет информацию о физических томах, на которых построена группа томов, и логических томах, которые были созданы с использованием группы томов:

  1. sudo vgdisplay -v
Output
Using volume group(s) on command line. --- Volume group --- VG Name LVMVolGroup . . . --- Logical volume --- LV Path /dev/LVMVolGroup/projects . . . --- Logical volume --- LV Path /dev/LVMVolGroup/www . . . --- Logical volume --- LV Path /dev/LVMVolGroup/db . . . --- Logical volume --- LV Path /dev/LVMVolGroup/workspace . . . --- Physical volumes --- PV Name /dev/sda . . . PV Name /dev/sdb . . .

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

Отображение информации о логических томах

Для отображения информации о логических томах в LVM есть соответствующий набор инструментов.

Как и в случае с другими компонентами LVM, опция lvscan сканирует систему и выводит минимальную информацию о найденных логических томах:

  1. sudo lvscan
Output
ACTIVE '/dev/LVMVolGroup/projects' [10.00 GiB] inherit ACTIVE '/dev/LVMVolGroup/www' [5.00 GiB] inherit ACTIVE '/dev/LVMVolGroup/db' [20.00 GiB] inherit ACTIVE '/dev/LVMVolGroup/workspace' [254.99 GiB] inherit

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

  1. sudo lvs
Output
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert db LVMVolGroup -wi-ao---- 20.00g projects LVMVolGroup -wi-ao---- 10.00g workspace LVMVolGroup -wi-ao---- 254.99g www LVMVolGroup -wi-ao---- 5.00g

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

  1. sudo lvs --segments
Output
LV VG Attr #Str Type SSize db LVMVolGroup rwi-a-r--- 2 raid1 20.00g mirrored_vol LVMVolGroup rwi-a-r--- 3 raid1 10.00g test LVMVolGroup rwi-a-r--- 3 raid5 10.00g test2 LVMVolGroup -wi-a----- 2 striped 10.00g test3 LVMVolGroup rwi-a-r--- 2 raid1 10.00g

Наиболее удобочитаемый вывод создается командой lvdisplay.

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

  1. sudo lvdisplay -m
Output
--- Logical volume --- LV Path /dev/LVMVolGroup/projects LV Name projects VG Name LVMVolGroup LV UUID IN4GZm-ePJU-zAAn-DRO3-1f2w-qSN8-ahisNK LV Write Access read/write LV Creation host, time lvmtest, 2016-09-09 21:00:03 +0000 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Segments --- Logical extents 0 to 2559: Type linear Physical volume /dev/sda Physical extents 0 to 2559 . . .

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

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

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

Создание физических томов из необработанных устройств хранения

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

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

  1. sudo lvmdiskscan
Output
/dev/ram0 [ 64.00 MiB] /dev/sda [ 200.00 GiB] /dev/ram1 [ 64.00 MiB] . . . /dev/ram15 [ 64.00 MiB] /dev/sdb [ 100.00 GiB] 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

Здесь, игнорируя устройства /dev/ram*, мы видим устройства, подходящие для превращения в физические тома для LVM.

Предупреждение: убедитесь, что вы еще раз проверили, что на устройства, которые вы собираетесь использовать с LVM, не записаны какие-либо важные данные. Использование этих устройств в LVM перезапишет текущее содержимое. Если у вас уже есть важные данные на вашем сервере, сделайте резервные копии, прежде чем продолжить.

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

  1. sudo pvcreate /dev/sda /dev/sdb

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

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

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

  1. sudo vgcreate volume_group_name /dev/sda

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

  1. sudo vgcreate volume_group_name /dev/sda /dev/sdb /dev/sdc

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

Одной из причин, по которой вам может понадобиться более одной группы томов, является необходимость использования разных размеров экстентов для разных томов. Обычно вам не нужно устанавливать размер экстента (размер по умолчанию 4M подходит для большинства случаев), но если вам нужно, вы можете сделать это при создании группы томов, передав параметр -s :

  1. suod vgcreate -s 8M volume_group_name /dev/sda

Это создаст новую группу томов с размером экстента 8M.

Добавление физического тома в существующую группу томов

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

  1. sudo vgextend volume_group_name /dev/sdb

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

Создание логического тома путем указания размера

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

Например, чтобы создать логический том 10G с именем test из группы томов LVMVolGroup, введите:

  1. sudo lvcreate -L 10G -n test LVMVolGroup

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

Создание логического тома из всего оставшегося свободного места

Если вы хотите создать том, используя оставшееся свободное пространство в группе томов, используйте команду vgcreate с параметром -n, чтобы назвать и передать группу томов, как и раньше. . Вместо передачи размера используйте параметр -l 100%FREE, который использует оставшиеся экстенты в группе томов для формирования логического тома:

  1. sudo lvcreate -l 100%FREE -n test2 LVMVolGroup

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

Создание логических томов с дополнительными параметрами

Логические тома также можно создавать с некоторыми дополнительными параметрами. Вот некоторые варианты, которые вы, возможно, захотите рассмотреть:

  • –type: указывает тип логического тома, который определяет, как распределяется логический том. Некоторые из доступных типов будут недоступны, если базовых физических томов недостаточно для корректного создания выбранной топографии. Некоторые из наиболее распространенных типов:
    • линейный: тип по умолчанию. Базовые используемые физические устройства (если их несколько) будут просто добавлены друг к другу, одно за другим.
    • чередование: Подобно RAID 0, чередующаяся топология делит данные на фрагменты и распределяет их по базовым физическим томам в циклическом режиме. Это может привести к повышению производительности, но может привести к большей уязвимости данных. Для этого требуется параметр -i, описанный ниже, и как минимум два физических тома.
    • raid1: создает зеркальный том RAID 1. По умолчанию зеркало будет иметь две копии, но с помощью параметра -m, описанного ниже, можно указать больше. Требуется как минимум два физических тома.
    • raid5: создает том RAID 5. Требуется как минимум три физических тома.
    • raid6: создает том RAID 6. Требуется минимум четыре физических тома.

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

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

    1. sudo lvcreate --type striped -i 2 -L 10G -n striped_vol LVMVolGroup

    Чтобы создать зеркальный том, используйте тип raid1. Если вам нужно более двух наборов данных, используйте параметр -m. В этом примере -m 2 используется для создания всего трех наборов данных (LVM считает это одним исходным набором данных с двумя зеркалами). Для этого вам потребуется как минимум три физических тома:

    1. sudo lvcreate --type raid1 -m 2 -L 20G -n mirrored_vol LVMVolGroup

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

    1. sudo lvcreate -s -L 10G -n snap_test LVMVolGroup/test

    Примечание. Чтобы вернуть логический том к состоянию моментального снимка, используйте команду lvconvert --merge:

    1. sudo lvconvert --merge LVMVolGroup/snap_test

    Это вернет источник моментального снимка в состояние, когда снимок был сделан.

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

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

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

    Чтобы увеличить размер существующего логического тома, используйте команду lvresize. Используйте флаг -L, чтобы указать новый размер. Вы также можете использовать относительные размеры, добавив размер «+». В этом случае LVM увеличит размер логического тома на указанную величину. Чтобы также автоматически изменить размер файловой системы, используемой на логическом томе, передайте Флаг --resizefs.

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

    1. sudo lvresize -L +5G --resizefs LVMVolGroup/test

    В этом примере и логический том, и файловая система логического тома test в группе томов LVMVolGroup будут увеличены на 5G.

    Если вы хотите обрабатывать расширение файловой системы вручную, вы можете убрать параметр --resizefs и впоследствии использовать встроенную утилиту расширения файловой системы. Например, для файловой системы Ext4 вы можете ввести:

    1. sudo lvresize -L +5G LVMVolGroup/test
    2. sudo resize2fs /dev/LVMVolGroup/test

    Это оставит вас с тем же результатом.

    Удалить или уменьшить размер компонентов LVM

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

    Уменьшение размера логического тома

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

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

    1. df -h
    Output
    Filesystem Size Used Avail Use% Mounted on . . . /dev/mapper/LVMVolGroup-test 4.8G 521M 4.1G 12% /mnt/test

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

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

    1. cd ~
    2. sudo umount /dev/LVMVolGroup/test

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

    1. sudo fsck -t ext4 -f /dev/LVMVolGroup/test

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

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

    1. sudo resize2fs -p /dev/LVMVolGroup/test 3G

    После завершения операции измените размер логического тома, передав тот же размер команде lvresize с флагом -L:

    1. sudo lvresize -L 3G LVMVolGroup/test

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

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

    1. sudo fsck -t ext4 -f /dev/LVMVolGroup/test

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

    1. sudo mount /dev/LVMVolGroup/test /mnt/test

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

    Удаление логического тома

    Если вам больше не нужен логический том, вы можете удалить его с помощью команды lvremove.

    Сначала размонтируйте логический том, если он в данный момент смонтирован:

    1. cd ~
    2. sudo umount /dev/LVMVolGroup/test

    После этого удалите логический том, набрав:

    1. sudo lvremove LVMVolGroup/test

    Вас попросят подтвердить процедуру. Если вы уверены, что хотите удалить логический том, введите y.

    Удаление группы томов

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

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

    1. sudo umount /dev/LVMVolGroup/www
    2. sudo umount /dev/LVMVolGroup/projects
    3. sudo umount /dev/LVMVolGroup/db

    После этого вы можете удалить всю группу томов, передав имя группы томов команде vgremove:

    1. sudo vgremove LVMVolGroup

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

    Удаление физического тома

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

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

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

    1. sudo pvmove /dev/sda

    Этот процесс может занять некоторое время в зависимости от размера томов и объема передаваемых данных.

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

    1. sudo vgreduce LVMVolGroup /dev/sda

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

    1. sudo pvremove /dev/sda

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

    Заключение

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