Любые операции с файловой системой опасны! Делайте резервные копии виртуальной машиной перед выполнением работ.
Создайте виртуальную машину с любой операционной системой, при разметке диска укажите использование LVM. Средствами виртуализации увеличьте жёсткий диск для виртуальной машины. В данной работе считается, что используется схема разметки MBR (Master Boot Record).
В данном примере мы будем пересоздавать раздел с помощью утилиты fdisk и расширять LVM. Это самый опасный метод, т.к. в случае опечаток можно потерять все данные на диске.
Данный метод имеет свои преимущества: он лучше с точки зрения производительности, проще управлять одним PV, имеет меньше точек отказа, а так же не использует дополнительный primary слот в MBR (их всего 4). Утилита fdisk входит в состав практически любого дистрибутива Linux, что позволяет провести работы даже в закрытом ЦОД без возможности установить пакеты.
Однако если есть возможность, используйте узконаправленную утилиту growpart, она не позволит вам удалить данные, а только расширить диск, имея все те же преимущества, кроме вхождения в состав дистрибутива.
В данном примере будет использоваться виртуальная машина на ОС Debian 13, но порядок действий не должен отличаться на любом Linux дистрибутиве. Изначально диск будет использоваться в 20 Гб, расширен до 40 Гб. Разметка: "Использовать весь диск и настроить LVM".
Подключимся к виртуальной машине и посмотрим состояние дисков до проведения работ:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 764K 388M 1% /run
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/0
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Увеличим HDD средствами виртуализации и снова посмотрим вывод команд:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 744K 388M 1% /run
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Как видим, команда df -h не поменяла вывод, точке монтирования / по-прежнему доступно только 18 Гб. А вот lsblk показывает нам, что диск sda увеличился с 20 Гб до 40 Гб, но логический раздел sda5 остался 19.1 Гб.
Для начала узнаем наименования PV, VG и LV:
~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 debian13-vg lvm2 a-- 19,05g 0
~# vgs
VG #PV #LV #SN Attr VSize VFree
debian13-vg 1 2 0 wz--n- 19,05g 0
~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root debian13-vg -wi-ao---- <18,02g
swap_1 debian13-vg -wi-ao---- 1,03g
Отключим работу swap:
swapoff -a
Изменим разметку диска /dev/sda с помощью fdisk:
~# fdisk /dev/sda
Welcome to fdisk (util-linux 2.41).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
Command (m for help): d
Partition number (1,2,5, default 5): 5
Partition 5 has been deleted.
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2): 2
First sector (1980416-83886079, default 1980416):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1980416-83886079, default 83886079):
Created a new partition 2 of type 'Extended' and of size 39,1 GiB.
Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5
First sector (1982464-83886079, default 1982464):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1982464-83886079, default 83886079):
Created a new partition 5 of type 'Linux' and of size 39,1 GiB.
Partition #5 contains a LVM2_member signature.
Do you want to remove the signature? [Y]es/[N]o: Y
Command (m for help): t
Partition number (1,2,5, default 5): 5
Hex code or alias (type L to list all): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): p
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk model: VMware Virtual S
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: 0x9c8b829a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1980415 1978368 966M 83 Linux
/dev/sda2 1980416 83886079 81905664 39,1G 5 Extended
/dev/sda5 1982464 83886079 81903616 39,1G 8e Linux LVM
Command (m for help): w
The partition table has been altered.
Syncing disks.
Проверим через lsblk:
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Теперь раздел sda5 увеличен до 39.1 Гб, всё верно. Расширим логический том и файловую систему, смонтированную в корень:
~# pvresize /dev/sda5
Physical volume "/dev/sda5" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
~# lvextend -l +100%FREE /dev/debian13-vg/root
Size of logical volume debian13-vg/root changed from <18,02 GiB (4613 extents) to <38,02 GiB (9733 extents).
Logical volume debian13-vg/root successfully resized.
~# resize2fs /dev/debian13-vg/root
resize2fs 1.47.2 (1-Jan-2025)
Filesystem at /dev/debian13-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/debian13-vg/root is now 9966592 (4k) blocks long.
Проверим, что всё получилось:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 744K 388M 1% /run
/dev/mapper/debian13--vg-root 38G 958M 35G 3% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39,1G 0 part
├─debian13--vg-root 254:0 0 38G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
После окончания работ не забываем включить swap:
swapon -a
LVM (Logical Volume Manager) — это технология управления дисковым пространством в Linux, которая позволяет гибко объединять несколько физических дисков или их разделов в единые логические тома, изменять их размер "на лету", создавать снимки (снапшоты) и управлять хранилищем более эффективно, чем при классической разметке. Это обеспечивает абстракцию от физического железа, давая возможность динамически расширять разделы без переформатирования.
Основные компоненты LVM:
Другими словами, LVM позволяет нам не привязываться к размерам физического диска, а размечать разделы так, как нам удобно. Мы можем сделать раздел как меньше диска, так и разместить его на нескольких дисках. Кроме того, в ряде случаев, LVM позволяет безопасно уменьшить размер диска или даже перенести на другой диск.
Команда df -h показывает нам распределение места по точкам монтирования. Здесь в рамках этой лабораторной работы нас интересует следующая строка:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
Мы видим, что корень файловой системы имеет размер 18 Гб, из них 16 Гб свободно. Точка монтирования создана на логическом томе LVM по пути: /dev/mapper/debian13--vg-root.
В команде lsblk нас интересуют четыре строки:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
Первая строка говорит, что жёсткий диск имеет объём 20 Гб. Следующая строка показывает нам раздел sda2 имеет размер 1К - это явный признак, что он имеет тип Extended и sda5 находится внутри него. Проверить это можно, посмотрев сектора в fdisk -l (частичный вывод):
Device Boot Start End Sectors Size Id Type
/dev/sda2 1980416 83886079 81905664 39,1G 5 Extended
/dev/sda5 1982464 83886079 81903616 39,1G 8e Linux LVM
Как видим, sda5 начинается с 1982464 и заканчивается 83886079, что полностью входит в sda2 (с 1980416 до 83886079).
Следующие строки показываем нам, что раздел sda5 имеет объём 19.1 Гб, а внутри него наша корневая файловая система в LVM размером 18 Гб. Остальное место ушло на swap, boot и т.д., они нас сейчас не интересуют. Именно корневую файловую систему мы и будем расширять.
Мы разобрались с выводом lsblk и df -h до проведения работ. После расширения диска в виртуализации вывод df -h не поменялся, т.к. файловая система ничего не знает про новое место. А вот вывод lsblk поменялся, но только в одной строке:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
Debian увидела, что HDD теперь имеет размер 40 Гб. Если этого не произошло - проще всего перечитать размер дисков перезагрузкой виртуальной машины.
Теперь нам нужно расширить LVM на появившееся место. Есть два основных варианта как это сделать:
В этом варианте лабораторной работы мы будем использовать второй вариант. Для этого воспользуемся утилитой fdisk, запустив редактирование разделов на диске /dev/sda. Утилита напоминает нам, что мы занимаемся весьма опасным занятием:
This disk is currently in use - repartitioning is probably a bad idea. It's recommended to umount all file systems, and swapoff all swap partitions on this disk.
Несмотря на предупреждение, в данном случае операция безопасна, потому что мы не изменяем начальные секторы существующих разделов, а только расширяем конец. Однако рекомендуется отключить swap перед началом, потому что swap находится в той же группе томов, физический том которой — /dev/sda5. Изменение таблицы разделов при активном использовании PV может привести к повреждению данных.
swapoff -a
Поскольку стандартный установщик Debian создаёт LVM внутри расширенного раздела (extended partition), прямое расширение sda5 невозможно без изменения структуры разделов. Поэтому мы удаляем и заново создаём разделы sda2 (extended) и sda5 (logical), сохраняя начальный сектор, чтобы не повредить данные.
Первой командой d мы удаляем раздел sda5, указывая номер партиции 5:
Command (m for help): d
Partition number (1,2,5, default 5): 5
Partition 5 has been deleted.
Дальше так же удаляем sda2, указывая номер партиции 2:
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Теперь, когда партиции удалены, мы можем создать их заново, но большего размера.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2): 2
First sector (1980416-83886079, default 1980416):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1980416-83886079, default 83886079):
Created a new partition 2 of type 'Extended' and of size 39,1 GiB.
Команда n создаёт новую партицию. Нас интересует тип extended, чтобы поместить в него LVM - отвечаем e. Номер партиции - 2, по номеру раздела sda2. Размеры в данном случае нам система нам предложит сама, указываем минимальный и максимальный сектора.
Стартовый блок должен совпадать с тем, что был до удаления партиции - в противном случае вы потеряете данные! Если не уверены в номерах стартовых блоков - отмените операцию и посмотрите стартовые блоки через fdisk -l
Следом так же создаём раздел sda5:
All space for primary partitions is in use.
Adding logical partition 5
First sector (1982464-83886079, default 1982464):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1982464-83886079, default 83886079):
Командой n создаём партицию. В данном случае Debian 13 автоматически проставляет тип и номер раздела, а так же предлагает нам правильный сектора. Но если это не произошло, то вы получите такой вывод:
Command (m for help): n
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Partition number (5, default 5): 5
First sector (1982464-83886079, default 1982464):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1982464-83886079, default 83886079):
Создаём логический раздел командой l, указываем номер партиции 5, согласно номеру раздела sda5.
В нашем случае Debian 13 проверила тип раздела sda5 и сообщает нам о необходимости удалить подпись LVM:
Partition #5 contains a LVM2_member signature.
Do you want to remove the signature? [Y]es/[N]o: Y
Отвечаем y и создаём заново:
Command (m for help): t
Partition number (1,2,5, default 5): 5
Hex code or alias (type L to list all): 8e
Код 8e означает что этот раздел будет LVM. Далее командой p можем посмотреть что же мы наделали. Здесь нас интересует:
Device Boot Start End Sectors Size Id Type
/dev/sda2 1980416 83886079 81905664 39,1G 5 Extended
/dev/sda5 1982464 83886079 81903616 39,1G 8e Linux LVM
Оба раздела были расширены до 39.1 Гб, как мы и хотели - добавилось по 20 Гб. Осталось малое - сообщить LVM и ext4, что они изменили размер. Для этого используются команды:
~# pvresize /dev/sda5
Мы сообщили PV что он изменил размер. Имя PV можно посмотреть командой pvs:
~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 debian13-vg lvm2 a-- 19,05g 0
Следом сообщаем логическому тому, что он тоже изменил размер и выдаём ему 100% диска:
~# lvextend -l +100%FREE /dev/debian13-vg/root
Size of logical volume debian13-vg/root changed from <18,02 GiB (4613 extents) to <38,02 GiB (9733 extents).
Logical volume debian13-vg/root successfully resized.
Здесь нам нужно указать имя LV, формируется он из /dev, далее указывается VG и название LV. Посмотреть их имена можно командами:
~# vgs
VG #PV #LV #SN Attr VSize VFree
debian13-vg 1 2 0 wz--n- 19,05g 0
~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root debian13-vg -wi-ao---- <18,02g
swap_1 debian13-vg -wi-ao---- 1,03g
Последнее действие, которое нам необходимо - сообщить ext4, что она увеличена в размерах:
resize2fs /dev/debian13-vg/root
Команда resize2fs работает только с файловыми системами ext2/ext3/ext4. Если у вас XFS (проверьте командой df -T /), используйте:
xfs_growfs /
На этом увеличение диска закончено. Осталось только вернуть swap в работу:
swapon -a
Любые операции с файловой системой опасны! Делайте резервные копии виртуальной машиной перед выполнением работ.
Создайте виртуальную машину с любой операционной системой, при разметке диска укажите использование LVM. Средствами виртуализации увеличьте жёсткий диск для виртуальной машины. В данной работе считается, что используется схема разметки MBR (Master Boot Record).
В данном примере мы будем изменять разметку диска с помощью утилиты growpart и расширять LVM. Это достаточно безопасный метод, т.к. утилита growpart специально создана для этой операции, но наиболее безопасным методом будет добавление нового раздела.
Метод увеличения раздела имеет свои преимущества: он лучше с точки зрения производительности, проще управлять одним PV, имеет меньше точек отказа, а так же не использует дополнительный primary слот в MBR (их всего 4).
Утилита growpart не входит в большинство дистрибутивов Linux и должна быть установлена отдельно. В случае в Debian 13 она входит в пакет cloud-guest-utils:
apt install cloud-guest-utils -y
В данном примере будет использоваться виртуальная машина на ОС Debian 13, но порядок действий не должен отличаться на любом Linux дистрибутиве. Изначально диск будет использоваться в 20 Гб, расширен до 40 Гб. Разметка: "Использовать весь диск и настроить LVM".
Подключимся к виртуальной машине и посмотрим состояние дисков до проведения работ:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 764K 388M 1% /run
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/0
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Увеличим HDD средствами виртуализации и снова посмотрим вывод команд:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 744K 388M 1% /run
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Как видим, команда df -h не поменяла вывод, точке монтирования / по-прежнему доступно только 18 Гб. А вот lsblk показывает нам, что диск sda увеличился с 20 Гб до 40 Гб, но логический раздел sda5 остался 19.1 Гб.
Для начала узнаем наименования PV, VG и LV:
~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 debian13-vg lvm2 a-- 19,05g 0
~# vgs
VG #PV #LV #SN Attr VSize VFree
debian13-vg 1 2 0 wz--n- 19,05g 0
~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root debian13-vg -wi-ao---- <18,02g
swap_1 debian13-vg -wi-ao---- 1,03g
Отключим работу swap:
swapoff -a
Изменим разметку диска с помощью growpart. Обратите внимание, сначала необходимо расширить sda2, а лишь затем sda5:
growpart /dev/sda 2
growpart /dev/sda 5
Проверим через lsblk:
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
Теперь раздел sda5 увеличен до 39.1 Гб, всё верно. Расширим логический том и файловую систему, смонтированную в корень:
~# pvresize /dev/sda5
Physical volume "/dev/sda5" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
~# lvextend -l +100%FREE /dev/debian13-vg/root
Size of logical volume debian13-vg/root changed from <18,02 GiB (4613 extents) to <38,02 GiB (9733 extents).
Logical volume debian13-vg/root successfully resized.
~# resize2fs /dev/debian13-vg/root
resize2fs 1.47.2 (1-Jan-2025)
Filesystem at /dev/debian13-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/debian13-vg/root is now 9966592 (4k) blocks long.
Проверим, что всё получилось:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,9G 0 1,9G 0% /dev
tmpfs 389M 744K 388M 1% /run
/dev/mapper/debian13--vg-root 38G 958M 35G 3% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,0M 0 1,0M 0% /run/credentials/systemd-journald.service
tmpfs 1,9G 0 1,9G 0% /tmp
/dev/sda1 933M 62M 807M 8% /boot
tmpfs 1,0M 0 1,0M 0% /run/credentials/getty@tty1.service
tmpfs 389M 8,0K 389M 1% /run/user/1000
~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 966M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39,1G 0 part
├─debian13--vg-root 254:0 0 38G 0 lvm /
└─debian13--vg-swap_1 254:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 784M 0 rom
После окончания работ не забываем включить swap:
swapon -a
LVM (Logical Volume Manager) — это технология управления дисковым пространством в Linux, которая позволяет гибко объединять несколько физических дисков или их разделов в единые логические тома, изменять их размер "на лету", создавать снимки (снапшоты) и управлять хранилищем более эффективно, чем при классической разметке. Это обеспечивает абстракцию от физического железа, давая возможность динамически расширять разделы без переформатирования.
Основные компоненты LVM:
Другими словами, LVM позволяет нам не привязываться к размерам физического диска, а размечать разделы так, как нам удобно. Мы можем сделать раздел как меньше диска, так и разместить его на нескольких дисках. Кроме того, в ряде случаев, LVM позволяет безопасно уменьшить размер диска или даже перенести на другой диск.
Команда df -h показывает нам распределение места по точкам монтирования. Здесь в рамках этой лабораторной работы нас интересует следующая строка:
~# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/debian13--vg-root 18G 959M 16G 6% /
Мы видим, что корень файловой системы имеет размер 18 Гб, из них 16 Гб свободно. Точка монтирования создана на логическом томе LVM по пути: /dev/mapper/debian13--vg-root.
В команде lsblk нас интересуют четыре строки:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 19,1G 0 part
├─debian13--vg-root 254:0 0 18G 0 lvm /
Первая строка говорит, что жёсткий диск имеет объём 20 Гб. Следующая строка показывает нам раздел sda2 имеет размер 1К - это явный признак, что он имеет тип Extended и sda5 находится внутри него. Проверить это можно, посмотрев сектора в fdisk -l (частичный вывод):
Device Boot Start End Sectors Size Id Type
/dev/sda2 1980416 83886079 81905664 39,1G 5 Extended
/dev/sda5 1982464 83886079 81903616 39,1G 8e Linux LVM
Как видим, sda5 начинается с 1982464 и заканчивается 83886079, что полностью входит в sda2 (с 1980416 до 83886079).
Следующие строки показываем нам, что раздел sda5 имеет объём 19.1 Гб, а внутри него наша корневая файловая система в LVM размером 18 Гб. Остальное место ушло на swap, boot и т.д., они нас сейчас не интересуют. Именно корневую файловую систему мы и будем расширять.
Мы разобрались с выводом lsblk и df -h до проведения работ. После расширения диска в виртуализации вывод df -h не поменялся, т.к. файловая система ничего не знает про новое место. А вот вывод lsblk поменялся, но только в одной строке:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
Debian увидела, что HDD теперь имеет размер 40 Гб. Если этого не произошло - проще всего перечитать размер дисков перезагрузкой виртуальной машины.
Теперь нам нужно расширить LVM на появившееся место. Есть два основных варианта как это сделать:
В этом варианте лабораторной работы мы будем использовать второй вариант. Для этого воспользуемся утилитой growpart.
Для любых работ с диском, на котором хранится SWAP, рекомендуется его отключать.
swapoff -a
Поскольку стандартный установщик Debian создаёт LVM внутри расширенного раздела (extended partition), прямое расширение sda5 невозможно. Сначала расширим раздел sda2 (extended), а затем уже sda5 (logical). growpart выполнит все необходимые операции за нас, сохраняя начальные сектора и критичные для файловой системы вещи.
growpart /dev/sda 2
growpart /dev/sda 5
Как видите, использование growpart максимально просто. Оба раздела были расширены до 39.1 Гб, как мы и хотели - добавилось по 20 Гб. Расширенный раздел (extended) технически является «контейнером» и не хранит данные напрямую — поэтому lsblk показывает его размер как 1K. Осталось малое - сообщить LVM и ext4, что они изменили размер. Для этого используются команды:
~# pvresize /dev/sda5
Мы сообщили PV что он изменил размер. Имя PV можно посмотреть командой pvs:
~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 debian13-vg lvm2 a-- 19,05g 0
Следом сообщаем логическому тому, что он тоже изменил размер и выдаём ему 100% диска:
~# lvextend -l +100%FREE /dev/debian13-vg/root
Size of logical volume debian13-vg/root changed from <18,02 GiB (4613 extents) to <38,02 GiB (9733 extents).
Logical volume debian13-vg/root successfully resized.
Здесь нам нужно указать имя LV, формируется он из /dev, далее указывается VG и название LV. Посмотреть их имена можно командами:
~# vgs
VG #PV #LV #SN Attr VSize VFree
debian13-vg 1 2 0 wz--n- 19,05g 0
~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root debian13-vg -wi-ao---- <18,02g
swap_1 debian13-vg -wi-ao---- 1,03g
Последнее действие, которое нам необходимо - сообщить ext4, что она увеличена в размерах:
resize2fs /dev/debian13-vg/root
Команда resize2fs работает только с файловыми системами ext2/ext3/ext4. Если у вас XFS (проверьте командой df -T /), используйте:
xfs_growfs /
На этом увеличение диска закончено. Осталось только вернуть swap в работу:
swapon -a