С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Логические тома LVM

5 мин Ubuntu 24.04 · LVM2

LVM: физические тома, группы и логические тома (PV → VG → LV), расширение томов и снапшоты.

Шпаргалка

8 команд Версия для печати
  • lsblk дерево блочных устройств
  • pvs физические тома
  • vgs группы томов
  • lvs логические тома
  • sudo lvextend -r -l +100%FREE /dev/vg/lv расширить LV+ФС на всё свободное
  • sudo vgextend vg /dev/sdc добавить диск в группу
  • sudo lvcreate -L 2G -s -n snap /dev/vg/lv снапшот
  • sudo lvconvert --merge /dev/vg/snap откат к снапшоту

Обзор

LVM добавляет слой абстракции над дисками: тома можно расширять, переносить и снапшотить без переразбивки.

физические диски/разделы → PV (physical volume)
        PV(ы)            → VG (volume group, «пул» места)
        VG               → LV (logical volume, на нём ФС)

Статус всего стека: pvs, vgs, lvs (или подробно pvdisplay/vgdisplay/lvdisplay).

Рецепты

3

Команды по слоям

Слой Создать Показать Расширить
PV pvcreate /dev/sdb pvs —
VG vgcreate data /dev/sdb vgs vgextend data /dev/sdc
LV lvcreate -L 10G -n vol1 data lvs lvextend -r -L +5G ...
bash
lsblk                             # дерево блочных устройств (что во что входит)
pvs ; vgs ; lvs                   # краткий статус
vgs -o +vg_free                   # сколько свободного в группе

Создание и расширение

bash
# с нуля:
sudo pvcreate /dev/sdb
sudo vgcreate data /dev/sdb
sudo lvcreate -L 10G -n vol1 data           # фикс. размер
sudo lvcreate -l 100%FREE -n vol1 data      # занять всё свободное VG
sudo mkfs.ext4 /dev/data/vol1
sudo mount /dev/data/vol1 /mnt/vol1

# РАСШИРЕНИЕ (самая частая задача):
sudo vgextend data /dev/sdc                  # добавить диск в группу (если VG полна)
sudo lvextend -r -L +5G /dev/data/vol1       # +5G к LV И сразу растянуть ФС (-r)
sudo lvextend -r -l +100%FREE /dev/data/vol1 # отдать тому всё свободное
# вручную, без -r:
sudo lvextend -L +5G /dev/data/vol1
sudo resize2fs /dev/data/vol1                # ext4 (xfs: sudo xfs_growfs /mnt/vol1)

Снапшоты и перенос

bash
# снапшот (для бэкапа/отката; нужно свободное место в VG):
sudo lvcreate -L 2G -s -n vol1_snap /dev/data/vol1   # -s снапшот
sudo mount -o ro /dev/data/vol1_snap /mnt/snap        # смонтировать для копии
sudo lvconvert --merge /dev/data/vol1_snap            # ОТКАТ к снапшоту
sudo lvremove /dev/data/vol1_snap                     # удалить снапшот

# перенести данные с диска и вывести его из VG:
sudo pvmove /dev/sdb              # эвакуировать экстенты с sdb на другие PV
sudo vgreduce data /dev/sdb      # убрать диск из группы

Неполадки

5

Расширил LV, а место не появилось

LV — не ФС. После lvextend растяни файловую систему: resize2fs (ext4) или xfs_growfs (xfs). Либо сразу lvextend -r.

vgs показывает мало свободного (VFree=0)

Группа заполнена — добавь PV: pvcreate /dev/sdc + vgextend data /dev/sdc.

Снапшот «переполнился» и стал невалидным

Снапшот хранит изменения; если исходный том активно пишется и снапшот мал — он переполняется (lvs покажет 100%). Делай снапшот достаточного размера и снимай копию быстро.

Не вижу том после ребута

sudo vgchange -ay (активировать), проверь автоактивацию и /etc/fstab (монтируй по /dev/<vg>/<lv> или UUID).

Случайно lvremove не того тома

Данные теряются. Перед lvremove/lvreduce сверяйся с lvs и делай снапшот/бэкап.

Опасно

Опасно. lvremove удаляет логический том и данные на нём без возможности отменить действие; vgremove/pvremove уничтожают метаданные группы и физического тома целиком. Сверься с lvs/vgs и наличием бэкапа перед удалением, не только по имени, а по UUID или точке монтирования.

mkfs поверх существующего LV стирает файловую систему и данные так же необратимо, как на обычном разделе. lvconvert --merge для отката к снапшоту необратимо теряет все изменения, сделанные после создания снапшота.

Термины

9
физический том (PV) physical volume (PV)
Устройство, подготовленное для включения в группу томов LVM. Ещё встречается в: Место на диске: df, du, inode, Файловые системы: ext4, xfs, fsck, lsblk, Программный RAID mdadm и ещё 3
группа томов (VG) volume group (VG)
Объединение пространства физических томов, из которого LVM выделяет логические тома. Ещё встречается в: resize2fs / xfs_growfs, Место на диске: df, du, inode, Файловые системы: ext4, xfs, fsck, lsblk и ещё 3
логический том (LV) logical volume (LV)
Блочное устройство LVM, получающее пространство из группы томов. Ещё встречается в: Место на диске: df, du, inode, Файловые системы: ext4, xfs, fsck, lsblk, Программный RAID mdadm и ещё 3
физический экстент physical extent
Единица распределения пространства PV внутри группы томов LVM.
снимок LVM LVM snapshot
Представление состояния тома на определённый момент; классический снимок зависит от origin и запаса COW.
исходный том снимка (origin) snapshot origin
Том, состояние которого сохранено снимком; классический снимок использует его неизменившиеся блоки. Ещё встречается в: git: история правок, откат и удалённый репозиторий, unattended-upgrades: обновления безопасности без участия человека
копирование при записи (COW) copy-on-write (COW)
Механизм сохранения прежних данных при изменении общих блоков; используется классическими снимками LVM. Ещё встречается в: Образы контейнеров
согласованность приложения application consistency
Свойство сохранённых данных образовывать допустимое целостное состояние для приложения.
слияние снимка snapshot merge
Возврат origin к состоянию снимка с отменой последующих изменений в области отката.

См. также

  • disk-usage — Куда делось место и inode — df, du, поиск крупных файлов, ловушки.
  • mount — Подключение файловых систем, постоянное монтирование через /etc/fstab, UUID.
Загрузка…