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

Вступление

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

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

Предпосылки

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

Чтобы ознакомиться с компонентами и концепциями LVM и протестировать базовую конфигурацию LVM, следуйте нашим https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations# [ введение в руководство по LVM] перед началом этого урока.

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

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

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

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

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

sudo lvmdiskscan
Output  /dev/ram0  [      64.00 MiB]

 /dev/ram1  [      64.00 MiB]

 . . .

 /dev/ram15 [      64.00 MiB]


 17 partitions
 0 LVM physical volume whole disks
 0 LVM physical volumes

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

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

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

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

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

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. Формат вывода немного отличается и включает небольшое количество дополнительной информации:

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 + легко конфигурируется и может отображать информацию в разных форматах. Поскольку его выходные данные могут жестко контролироваться, его часто используют, когда необходимы сценарии или автоматизация. Его основной вывод обеспечивает полезную краткую сводку, аналогичную предыдущим командам:

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 + обычно является лучшей опцией:

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 +:

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 + может использоваться для сканирования системы на наличие доступных групп томов. Он также восстанавливает файл кэша, когда это необходимо. Это хорошая команда для использования при импорте группы томов в новую систему:

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

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

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

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 + также предоставляет информацию о физических томах, на которых построена группа томов, и логических томах, созданных с использованием группы томов:

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 + сканирует систему и выводит минимальную информацию о найденных логических томах:

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 + является гибкой, мощной и простой в использовании в сценариях:

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

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

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 +, инструмент также отображает информацию о том, как логический том разбивается и распределяется:

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 может видеть и использовать:

sudo lvmdiskscan
Output  /dev/ram0  [      64.00 MiB]

 /dev/ram1  [      64.00 MiB]

 . . .

 /dev/ram15 [      64.00 MiB]


 17 partitions
 0 LVM physical volume whole disks
 0 LVM physical volumes

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

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

sudo pvcreate /dev/ /dev/

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

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

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

sudo vgcreate  /dev/

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

sudo vgcreate  /dev/ /dev/ /dev/

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

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

suod vgcreate -s   /dev/

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

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

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

sudo vgextend  /dev/

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

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

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

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

sudo lvcreate -L 10G -n test LVMVolGroup

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

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

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

sudo lvcreate -l 100%FREE -n test2 LVMVolGroup

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

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

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

  • * –Type *: указывает тип логического тома, который определяет, как распределяется логический том. Некоторые из доступных типов будут недоступны, если недостаточно базовых физических томов для правильного создания выбранной топографии. Некоторые из наиболее распространенных типов:

  • * linear *: тип по умолчанию. Используемые базовые физические устройства (если их больше одного) будут просто добавляться друг к другу, одно за другим.

  • * чередующийся *: аналогично RAID 0, чередующаяся топология делит данные на куски и распределяется круговым способом по базовым физическим томам. Это может привести к повышению производительности, но может привести к большей уязвимости данных. Для этого требуется опция + -i +, описанная ниже, и минимум два физических тома.

  • * raid1 *: Создает зеркальный том RAID 1. По умолчанию зеркало будет иметь две копии, но больше можно указать с помощью опции + -m +, описанной ниже. Требуется минимум два физических тома.

  • * raid5 *: Создает том RAID 5. Требуется минимум три физических тома.

  • * raid6 *: создает том RAID 6. Требуется минимум четыре физических тома.

  • * -m *: Определяет количество дополнительных копий данных для хранения. Значение «1» указывает, что поддерживается одна дополнительная копия, всего два набора данных.

  • * -i *: указывает количество полос, которые должны быть сохранены. Это требуется для типа + striped + и может изменять поведение по умолчанию некоторых других параметров RAID.

  • * -s *: указывает, что действие должно создать снимок из существующего логического тома вместо нового независимого логического тома.

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

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

sudo lvcreate --type striped -i  -L 10G -n

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

sudo lvcreate --type  -m  -L 20G -n

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

sudo lvcreate -s -L 10G -n  /

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

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

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

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

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

sudo lvresize -L  --resizefs /

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

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

sudo lvresize -L  /
sudo resize2fs /dev//

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

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

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

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

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

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

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

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

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

cd ~
sudo umount /dev//

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

sudo fsck -t  -f /dev//

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

sudo resize2fs -p /dev//

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

sudo lvresize -L  /

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

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

sudo fsck -t ext4 -f /dev//

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

sudo mount /dev// /mnt/

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

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

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

Во-первых, отключите логический том, если он подключен в данный момент:

cd ~
sudo umount /dev//

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

sudo lvremove /

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

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

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

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

sudo umount /dev//
sudo umount /dev//
sudo umount /dev//

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

sudo vgremove

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

Извлечение физического тома

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

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

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

sudo pvmove /dev/

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

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

sudo vgreduce  /dev/

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

sudo pvremove /dev/

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

Заключение

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

Related