Расширение LVM диска (без изменения его структуры)

Примечание

Менеджер логических томов (англ. logical volume manager) — подсистема операционных систем Linux и OS/2, позволяющая использовать разные области одного жёсткого диска и/или области с разных жёстких дисков как один логический том. Реализована с помощью подсистемы device mapper. LVM добавляет уровень абстракции между физическими/логическими дисками (привычными разделами, с которыми работает fdisk и аналогичные программы) и файловой системой. Это достигается путём разбивки изначальных разделов на блоки, либо использования отдельных разделов или блочных устройств (physical volume (pv)) и объединения их в единый виртуальный том, точнее группу томов (volume group (vg)), которая далее разбивается на логические тома (logical volume (lv)). Для файловой системы логический том представлен как обычное блочное устройство, хотя отдельные pv тома могут находиться на разных физических устройствах (и даже сам pv может быть распределён подобно RAID).

Исходные данные

Операционная система Linux (Ubuntu 16.04.6 LTS)
Файловая система ext4
метод распределения пространства жёсткого диска LVM
Исходный размер тома 5ГБ
Размер тома после расширения 10ГБ

С помощью команды fdisk мы видим, что размер диска со стороны операционной системы (/dev/vda) составляет 10 GiB, а размер раздела с LVM (/dev/vda1) - 5G

fdisk -l /dev/vda

        Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: dos
        Disk identifier: 0x71473ce9

        Device     Boot Start      End  Sectors Size Id Type
        /dev/vda1  *     2048 10483711 10481664   5G 8e Linux LVM

Теперь произведём ряд операций, в результате которых наш корневой раздел (root) будет занимать всё доступное пространство.

1. Смотрим текущее состояние для корневого раздела (root), перед преобразованием его размер составляет 4.8G

df -h /

        Filesystem                      Size   Used  Avail Use% Mounted on
        /dev/mapper/vg0-rootfs          4.8G  1.8G  2.8G  40% /
  1. Расширим раздел vda1 до 10ГБ с помощью ПО parted
  • «откроем» диск с помощью команды parted
parted /dev/vda
  • посмотрим состояние диска в целом и разделов на нём
(parted) print

        Model: Virtio Block Device (virtblk)
        Disk /dev/vda: 10.7GB
        Sector size (logical/physical): 512B/512B
        Partition Table: msdos
        Disk Flags:

        Number  Start   End     Size    Type     File system  Flags
         1      1049kB  5368MB  5367MB  primary               boot, lvm
  • изменим размер раздела №1 (текущий размер - 5367MB) до максимально возможного. Цифру возьмём из описания диска в предыдущем пункте (10.7GB)
(parted) resizepart 1

        End?  [5368MB]? 10.7GB
  • убедимся, что теперь раздел vda1 занимает всё доступное пространство (10ГБ)
(parted) print

        Model: Virtio Block Device (virtblk)
        Disk /dev/vda: 10.7GB
        Sector size (logical/physical): 512B/512B
        Partition Table: msdos
        Disk Flags:

        Number  Start   End     Size    Type     File system  Flags
         1      1049kB  10.7GB  10.7GB  primary               boot, lvm
  • выйдем из программы
(parted) quit
  1. Расширим LVM, содержащий корневой раздел
  • расширим физический том (Physical Volume).
pvresize /dev/vda1

        Physical volume "/dev/vda1" changed
        1 physical volume(s) resized / 0 physical volume(s) not resized
  • пересканируем логические разделы
lvscan

        ACTIVE            '/dev/vg0/rootfs' [5.00 GiB] inherit
  • расширим логический раздел (Logical Volume) до максимально доступного размера. Название раздела возьмём из предыдущего пункта
lvextend /dev/vg0/rootfs -l +100%FREE

          Size of logical volume vg0/rootfs changed from 5.00 GiB (1279 extents) to 9.96 GiB (2550 extents).
          Logical volume rootfs successfully resized.

4. Расширим файловую систему до максимально доступного размера (название раздела возьмём из пункта №1).

resize2fs /dev/mapper/vg0-rootfs

        resize2fs 1.42.13 (17-May-2015)
        Filesystem at /dev/mapper/vg0-rootfs is mounted on /; on-line resizing required
        old_desc_blocks = 1, new_desc_blocks = 1
        The filesystem on /dev/mapper/vg0-rootfs is now 2611200 (4k) blocks long.

5. Проверяем, что что наши манипуляции увенчались успехом. Для этого посмотрим актуальный размер корневого раздела (root), теперь он равен 9.7G

df -h /

        Filesystem                      Size   Used  Avail Use% Mounted on
        /dev/mapper/vg0-rootfs          9.7G  1.9G  7.5G  20% /