Приветствую, меня зовут Иван, я системный администратор. Решил попробовать писать такие вот заметки на задачи, которые делаю редко, чтобы потом вспомнить, если понадобится. Надеюсь и ещё кому-то пригодится.
Все пути и имена разделов мои, меняйте соответственно на своё. Все действия на свой страх и риск, делайте бэкапы.
Задача следующая. Есть виртуалка, к ней подключен виртуальный диск, на нём система Debian 10, разметка сделана автоматически с LVM, отдельные разделы /var, /tmp, /home и т.д. Требуется расширить существующий раздел /root не добавляя дополнительный том в LVM
(И да, если вам удобнее - есть возможность расширять разделы LVM добавляя дополнительные физически тома в группу томов, я такой способ сейчас не описываю, у меня немного другая задача)
root@ElasticLog:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home ElasticLog-vg -wi-ao---- <165,45g root ElasticLog-vg -wi-ao---- 4,03g swap_1 ElasticLog-vg -wi-ao---- 976,00m tmp ElasticLog-vg -wi-ao---- 364,00m var ElasticLog-vg -wi-ao---- 15,00g
Пункт 1. Увеличение размера диска средствами VM
Этот пункт зависит от используемой вами VM и типа виртуального диска, так что я опишу только свой пример.
Для начала отключаем виртуалку и увеличиваем размер виртуального диска. У меня она на VirtualBox, диск динамический .vhd. Так же, насколько помню, без проблем изменяется динамический .vdi, с другими не подскажу.

Пункт 2. Увеличение раздела средствами системы
После этого мы видим, что в системе "физический" том sda увеличился
Наш раздел LVM - sda5, но есть нюансы, о них ниже
root@ElasticLog:~# lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 250G 0 disk sda1 8:1 0 487M 0 part /boot sda2 8:2 0 1K 0 part sda5 8:5 0 185,8G 0 part sr0 11:0 1 1024M 0 rom ElasticLog--vg-root 254:0 0 4G 0 lvm / ElasticLog--vg-swap_1 254:1 0 976M 0 lvm [SWAP] ElasticLog--vg-var 254:2 0 15G 0 lvm /var ElasticLog--vg-tmp 254:3 0 364M 0 lvm /tmp ElasticLog--vg-home 254:4 0 165,5G 0 lvm /home
Я использовал утилиту parted, так как она меняет размер без размонтирования, соответственно корневой раздел меняется без лишних заморочек.
Gparted тоже весьма удобно, но только если у вас есть графическая оболочка, либо если вы загрузились с соответствующего LiveCD. (описывать изменение раздела в gparted я не буду, там всё просто, разберётесь.)
Если у вас таблица разделов MBR - разметка будет похожа на мою, и раздел lvm sda5 будет находиться внутри расширенного раздела sda2, поэтому чтобы нам увеличить sda5 нужно будет сначала увеличить sda2
Ести таблица у вас GPT - расширенного раздела скорее всего не будет, так что просто увеличиваем раздел с флагом LVM.
Команда p показывает нам текущий список разделов.
Размер меняется командой
resizepart [номер раздела]
Указать можно как итоговый желаемый раздел диска (250gb например) так и размер в процентах (100%) - то есть использовать всё свободное пространство. Для примера ниже я показал оба варианта.
Выходим из parted командой q
root@ElasticLog:~# parted /dev/sda GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 268GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 512MB 511MB primary ext2 boot 2 513MB 200GB 199GB extended 5 513MB 200GB 199GB logical lvm (parted) resizepart 2 End? [200GB]? 250gb (parted) resizepart 5 End? [200GB]? 100% (parted) q Information: You may need to update /etc/fstab.
Пункт 3. Увеличение LVM разделов
LVM ещё не знает, что размер её "физического" раздела увеличился. Подсказать можно командой:
pvresize [путь к устройству]
После этого можно посмотреть через утилиту pvs, что появилось свободное место в колонке PFree (там было ноль)
root@ElasticLog:~# pvresize /dev/sda5 Physical volume "/dev/sda5" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized root@ElasticLog:~# pvs PV VG Fmt Attr PSize PFree /dev/sda5 ElasticLog-vg lvm2 a-- 232,35g <46,57g
Путь к разделу состоит из /dev/[имя группы разделов]/[имя раздела]. Где LV - имя раздела, VG - имя группы разделов. Посмотреть можно командой lvs
Затем увеличиваем размер интересующего нас логического раздела командой.
lvresize --resizefs --size 15g /dev/ElasticLog-vg/root
можно изменять размер не обязательно на конкретное значение, а допустим +15g или -15g
root@ElasticLog:~# lvresize --resizefs --size 15g /dev/ElasticLog-vg/root Size of logical volume ElasticLog-vg/root changed from 4,03 GiB (1032 extents) to 15,00 GiB (3840 extents). Logical volume ElasticLog-vg/root successfully resized. resize2fs 1.44.5 (15-Dec-2018) Filesystem at /dev/mapper/ElasticLog--vg-root is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/mapper/ElasticLog--vg-root is now 3932160 (4k) blocks long.
Через lvs мы видим тут, что раздел root увеличился до 15 ГБ.
root@ElasticLog:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home ElasticLog-vg -wi-ao---- <165,45g root ElasticLog-vg -wi-ao---- 15,00g swap_1 ElasticLog-vg -wi-ao---- 976,00m tmp ElasticLog-vg -wi-ao---- 364,00m var ElasticLog-vg -wi-ao---- 15,00g
В целом на этом всё. Если я что-то упустил, либо вы знаете способы лучше - с радостью поправлю статью.
