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