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

Управление логическими томами (LVM) это полезный инструмент для управления большими томами хранения данных на Linux. Он позволяет создавать логические тома, которые могут охватывать несколько физических устройств хранения. Это обеспечивает гибкость в распределении дискового пространства, выходящую за рамки ограничений физических разделов диска.

В этом руководстве мы рассмотрим основы настройки и управления томами LVM на Debian & Ubuntu 18.04, 20.04 и 22.04.

Обзор LVM

Некоторые ключевые термины и понятия, связанные с LVM:

  • Физические тома (PV) — Физические устройства хранения данных, обеспечивающие фактическую емкость хранения, например разделы на жестких дисках или SSD.
  • Группы томов (VG) — Набор физических томов, сгруппированных вместе. Это позволяет объединять физические устройства хранения в более крупные пулы хранения.
  • Логические тома (LV) — Виртуальные блочные устройства, которым выделяется пространство из группы базовых томов. Вы можете создавать, изменять размер и удалять логические тома по мере необходимости.
  • Экстенты — Небольшие по размеру куски непрерывного пространства на физическом томе. При выделении логическому тому они обеспечивают хранение данных на томе.

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

Установка LVM

Чтобы начать работу с LVM, сначала нужно установить пакет lvm2:

$ sudo apt install lvm2

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

Создание физических томов

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

Например, чтобы инициализировать /dev/sdb1 раздел как физический том LVM:

$ sudo pvcreate /dev/sdb1

Выходные данные:

  Physical volume "/dev/sdb1" successfully created

Вы можете проверить доступные PV:

$ sudo pvs

Выходные данные:

  PV         VG        Fmt  Attr PSize   PFree
  /dev/sdb1             lvm2 ---  <223.57G <223.57G

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

Создание групп томов

Далее необходимо объединить один или несколько PV в группу томов (VG). VG будет выделено пространство из объединенных PV.

Например, чтобы создать группу томов под названием data с помощью /dev/sdb1 PV:

$ sudo vgcreate data /dev/sdb1

Выходные данные:

  Volume group "data" successfully created

Вы можете проверить доступные VG:

$ sudo vgs

Выход:

  VG   #PV #LV #SN Attr   VSize  VFree
  data   1   0   0 wz--n- <223.57G <223.57G

Список деталей конкретного VG:

$ sudo vgdisplay data

Выходные данные:

  --- Volume group ---
  VG Name               data
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <223.57 GiB
  PE Size               4.00 MiB
  Total PE              57313
  Alloc PE / Size       0 / 0   
  Free  PE / Size       57313 / <223.57 GiB

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

После создания группы томов можно создавать логические тома (LV) в этой VG.

Например, чтобы создать логический том объемом 10 ГБ под названием logs:

$ sudo lvcreate -L 10G -n logs data

Выходные данные:

  Logical volume "logs" created.

Создается LV размером 10 ГБ под названием logs в VG data.

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

$ sudo lvcreate -l 100%FREE -n apps data 

Выходные данные:

  Logical volume "apps" created.

Проверка логических томов:

$ sudo lvs

Выходные данные:

  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  apps data -wi-a----- <213.57G                                                    
  logs data -wi-a----- 10.00G  

Вы также можете посмотреть полный путь к созданным LV с помощью:

$ sudo lvdisplay

Вывод:

  --- Logical volume ---
  LV Path                /dev/data/apps
  LV Name                apps
  VG Name                data
  LV UUID                XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
  LV Status              available
  # open                 0
  LV Size                <213.57 GiB
  Current LE             54698
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Логические тома будут отображены на /dev/VG/LV устройства, которые можно форматировать и монтировать, как и обычные разделы.

Форматирование и монтирование логических томов

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

Например, чтобы отформатировать logs LV в ext4 и смонтировать его по адресу /var/log:

$ sudo mkfs.ext4 /dev/data/logs 
$ sudo mkdir /var/log
$ sudo mount /dev/data/logs /var/log

Чтобы монтировать это автоматически при перезагрузке, добавьте следующее /etc/fstab:

/dev/data/logs /var/log ext4 defaults 0 0

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

Расширение логического тома

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

Например, чтобы увеличить logs LV на 5 ГБ, сначала расширьте группу томов на 5 ГБ:

$ sudo lvextend -L +5G /dev/data/logs

Выходные данные:

  Size of logical volume data/logs changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume data/logs successfully resized.

Затем измените размер файловой системы:

$ sudo resize2fs /dev/data/logs 

Выходные данные:

resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/data/logs is mounted on /var/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/data/logs is now 153600 (4k) blocks long.

Размер LV теперь составляет 5 ГБ.

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

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

Чтобы уменьшить LV, сначала измените размер файловой системы:

$ sudo resize2fs /dev/data/logs 20G

Выходные данные:

resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/data/logs to 5242880 (4k) blocks.
The filesystem on /dev/data/logs is now 5242880 (4k) blocks long.

Это уменьшает файловую систему до 20 ГБ.

Затем уменьшите размер LV до этого значения:

$ sudo lvreduce -L 20G /dev/data/logs

Выходные данные:

  Size of logical volume data/logs changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
  Logical volume data/logs successfully resized.

The logs LV теперь уменьшен до 20 ГБ.

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

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

Например, создайте снимок тома logs LV:

$ sudo lvcreate --size 10G --snapshot --name logs-snap /dev/data/logs

Выходные данные:

  Logical volume "logs-snap" created.

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

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

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

Мониторинг использования LVM

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

Чтобы просмотреть выделенные физические экстенты для VG:

$ sudo vgdisplay -v data

Выходные данные:

  --- Volume group ---
  VG Name               data
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <223.57 GiB
  PE Size               4.00 MiB
  Total PE              57313
  Alloc PE / Size       15360 / 60.00 GiB
  Free  PE / Size       41953 / <163.57 GiB

Для мониторинга использования LV:

$ sudo lvdisplay 

Выходные данные:

  --- Logical volume ---
  LV Path                /dev/data/logs
  LV Name                logs
  VG Name                data
  LV UUID                XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-03-05 10:17:11 +0200
  LV Status              available
  # open                 0
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/data/apps
  LV Name                apps
  VG Name                data
  LV UUID                XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
  LV Status              available
  # open                 0
  LV Size                <193.57 GiB
  Current LE             49408
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

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

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

К числу основных преимуществ LVM относятся:

  • Гибкость в увеличении и уменьшении логических томов по мере необходимости, без ограничений на разделы.
  • Удобное создание моментальных снимков и резервных копий томов.
  • Объедините хранилища с нескольких устройств в общую группу томов.
  • Миграция данных путем перемещения логических томов между устройствами хранения.
  • Выделяйте логические тома с чередованием, зеркальным отображением или шифрованием.

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

Заключение

LVM обеспечивает надёжный способ управления крупномасштабными и динамическими системами хранения данных в Ubuntu и Debian. Используя LVM, вы можете эффективно справляться с постоянно меняющимися потребностями в хранении, а также реализовать такие ключевые функции, как моментальные снимки и тонкое выделение ресурсов. Однако это требует изучения некоторых новых концепций и команд. После некоторой практической работы LVM может стать незаменимой частью процесса развертывания и управления хранилищем Ubuntu. При правильном использовании он может сэкономить вам много времени и хлопот по мере роста и изменения ваших потребностей. Гибкость, позволяющая динамически увеличивать, уменьшать и перемещать тома, делает LVM достойным первоначальных усилий по изучению.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *