#Как расширить существующий диск в Linux?
lsblk — вывести список блочных устройств;
pvs — вывести список физических томов;
vgs — вывести список группы томов;
lvs — вывести список логических томов;
fdisk -l — просмотреть подробно разделы диска;
dnf -y install cloud-utils-growpart — установить утилиту growpart для Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux; apt -y install cloud-guest-utils — установить утилиту growpart для Ubuntu, Debian;
growpart /dev/sda 2 — расширить раздел /dev/sda2;
pvresize /dev/sda2 — расширить существующий физический том /dev/sda2;
lvextend -r -l +100%FREE /dev/centos/root — расширить логический том /dev/centos/root из группы томов centos;
df -hT — вывести список разделов и файловых систем;
xfs_growfs /dev/mapper/centos-root — увеличить размер файловой системы XFS на логическом томе /dev/mapper/centos-root (для Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux);
resize2fs /dev/mapper/ubuntu-root — увеличить размер файловой системы EXT4 на логическом томе /dev/mapper/ubuntu-root (для Ubuntu, Debian).
В данном примере будет описано как расширить существующий раздел на диске используя 15Gb свободного дискового пространства из неразмеченной области этого же диска. Расширение будет выполнено на примере дистрибутива CentOS .
Данная инструкция подходит для большинства дистрибутивов Linux, дает подробную информацию как корректно расширить дисковое пространство, учитывает особенности команд различных дистрибутивов.
Примечание: Все команды необходимо выполнять под пользователем root либо с правами суперпользователя (sudo).
При выполнении данной инструкции есть риск потери данных, поэтому предварительно рекомендуется сделать резервную копию (backup) виртуальной машины.
#Шаг 1. Анализ конфигурации дискового пространства
- Сперва следует определить название раздела, который собираетесь расширить и объем неразмеченной области на устройстве (диске) с помощью команды lsblk .
- Затем следует проверить существующую конфигурацию LVM командами:
pvs — вывести название и количество имеющихся физических томов (PV)
vgs — вывести группы томов (VG)
lvs — вывести логические тома (LV)
Необходимо определить системный раздел и тип файловой системы на нем, который требуется расширить с помощью команды df -hT . - Теперь необходимо проверить имеющиеся разделы диска с помощью утилиты fdisk -l .
Подробнее по шагу 1
1.1 Выведите список блочных устройств командой lsblk . Определите раздел, который собираетесь расширить и объем неразмеченной области на диске.

В данном примере мы видим, что в системе имеется 1 устройство (диск) /dev/sda размером 45Gb.
На диске созданы 2 раздела общим объемом 30Gb:
- основной /dev/sda1 — 1Gb,
- расширенный /dev/sda2 — 29Gb,
оставшиеся 15Gb остаются в неразмеченной области.
Также мы видим, что раздел /dev/sda2 (29Gb) является расширенным разделом LVM , где имеется группа томов centos и 2 логических тома root и swap. Будем расширять логический том root на расширенном разделе dev/sda2 используя свободные 15Gb из неразмеченной области диска sda .
1.2 Проверьте существующую конфигурацию LVM , определив название и количество имеющихся физических томов (PV), группы томов (VG), логических томов (LV) следующими командами pvs , vgs , lvs соответственно:

В данном примере мы видим, что в системе имеется физический том /dev/sda2 , который входит в созданную группу томов centos. В этой группе томов созданы 2 логических тома: root и swap.
1.3 Проверьте разделы диска с помощью утилиты fdisk -l .
Пример отображения для CentOS :

Раздел /dev/sda2 является расширяемым разделом LVM .
Пример отображения для Ubuntu :

Обратите внимание, в дистрибутиве Ubuntu сектора раздела /dev/sda5 входят в сектора раздела /dev/sda2 , т.е. имеют одно дисковое пространство.
Раздел /dev/sda2 является расширенным, раздел /dev/sda5 является разделом LVM , созданным на расширенном разделе. Поэтому, для того чтобы расширить логический том root предварительно необходимо расширить оба этих раздела — об этом будет сказано далее.
#Шаг 2. Расширение раздела с помощью утилиты growpart .
2.1 Сперва следует установить утилиту growpart в соответствии с вашим дистрибутивом: dnf -y install cloud-utils-growpart — команда для дистрибутивов Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux.
Примечание: для устаревших дистрибутивов (CentOS 7.9) вместо dnf используйте yum .
apt -y install cloud-guest-utils — команда для дистрибутивов Ubuntu, Debian.
2.2 Затем необходимо расширить раздел с помощью команды:
growpart /dev/sda 2 — где /dev/sda 2 — имя расширяемого раздела.
Примечание: для Ubuntu может потребоваться расширить 2 раздела (это можно узнать по команде fdisk -l ).
2.3 Чтобы убедиться в расширении раздела следует повторить команду lsblk .
Подробнее по шагу 2
2.1 Установите утилиту growpart в соответствии с вашим дистрибутивом.
- для дистрибутивов Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux команда:
[root@centos ~]# dnf -y install cloud-utils-growpart
- для дистрибутивов Ubuntu, Debian команда:
[root@ubuntu ~]# apt -y install cloud-guest-utils
2.2 Расширьте раздел (в нашем случае /dev/sda2 — корневой раздел (root)) на всю неразмеченную область, т.е. в нашем случае на 15Gb. (В нашем примере /dev/sda2 — корневой раздел. Обратите внимание, у вас может быть другой раздел).
[root@centos ~]# growpart /dev/sda 2
Для Ubuntu как мы выяснили на шаге 1.3 требуется расширить 2 раздела: расширенный раздел /dev/sda2 и раздел LVM /dev/sda5 :
[root@ubuntu ~]# growpart /dev/sda 2 [root@ubuntu ~]# growpart /dev/sda 5
Примечание: у вас могут быть другие разделы для расширения, проверить это можно командами lsblk и fdisk -l .
2.3 Убедитесь в расширении раздела командой lsblk .

#Шаг 3. Расширение пространства LVM
3.1 Сперва необходимо расширить существующий физический том с помощью команды:
pvresize /dev/sda2 , где /dev/sda2 — имя расширяемого раздела
3.2 Затем необходимо расширить логический том, выполнив команду:
lvextend -r -l +100%FREE /dev/centos/root ,
где /dev/centos/root — путь расширяемой файловой системы,
centos — название группы (можно узнать по команде vgs),
root — название логического тома (можно узнать по команде lvs ).
В команде выше, вместо /dev/centos/root можно указать другой путь /dev/mapper/centos-root (можно узнать по команде df -hT ), результат будет тот же.
Подробнее по шагу 3
3.1 Расширьте существующий физический том ( physical volume ) командой pvresize .
Проверяем выполнение командой pvs — значение столбца PFree должно увеличится на расширяемый объем.
(В нашем примере физический том — /dev/sda2 . Обратите внимание у вас может быть другой другой физический том).

3.2 Проверьте размер группы томов (volume group). Значение столбца VFree должно увеличиться на расширяемый объем.

3.3 Расширьте логический том (logical volume) используя команду lvextend -r -l +100%FREE /dev/centos/root ,
где centos — имя группы томов,
root — имя логического тома.
Примечание: у вас могут быть другие названия группы и логического тома.
Проверьте выполнение командой lvs — значение столбца PFree должно увеличится.

#Шаг 4. Расширение файловой системы
Примечание: Данная операция несет риск потери данных. Предварительно рекомендуется сделать резервную копию виртуальной машины.
Для увеличения файловой системы на логическом томе, необходимо ввести команду в зависимости от дистрибутива:
- Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux (файловая система XFS):
xfs_growfs /dev/mapper/centos-root , где /dev/mapper/centos-root — название расширяемой файловой системы (название и тип можно узнать по команде df -hT ); - Ubuntu, Debian (файловая система ext4 )
resize2fs /dev/mapper/ubuntu-root , где /dev/mapper/ubuntu-root — название расширяемой файловой системы (название и тип можно узнать по команде df -hT )
Подробнее по шагу 4
4.1 Определим путь монтирования файловой системы расширяемого раздела, точку монтирования и тип файловой системы.
В нашем примере путь — /dev/mapper/centos-root (или /dev/centos/root ),
точка монтирования — / ,
тип файловой системы — xfs .
Обратите внимание, у вас будет свой путь и тип файловой системы.
4.2 Далее необходимо увеличить размер файловой системы на логическом томе. В зависимости от типа файловой системы и дистрибутива выберите ниже подходящий вам тип.
4.2.1 Для файловой системы XFS (дистрибутивы Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux) используется утилита xfs_growfs и путь указанный в выводе команды df -hT для расширяемого раздела (в примере ниже для Centos — это /dev/mapper/centos-root ).

4.2.2 Для файловой системы ext4 (дистрибутивы Ubuntu, Debian) используется утилита resize2fs и путь указанный в выводе команды df -hT для расширяемого раздела (в примере ниже для Ubuntu — это /dev/mapper/ubuntu-root ).

#Шаг 5. Проверка
Для проверки нового размера диска и файловой системы следует повторить команды df -hT и lsblk .
Подробнее по шагу 5
База знаний
1. Увеличьте размер диска в свойствах виртуальной машины в соответствии со статьей.

2. Перезагрузите виртуальную машину и уточните имя расширяемого диска командой fdisk -l.

3. Создайте раздел, для этого:
a. выполните команду fdisk /dev/sda.
b. нажмите p чтобы вывести таблицу разделов и определить свободный номер.
c. нажмите n чтобы создать раздел, укажите его тип(primary) и номер.
d. подтвердите предлагаемые по умолчанию границы раздела нажатием Enter.
e. поменяйте тип созданного раздела командой t.
f. сохраните таблицу разделов командой w.
4. Перезагрузите виртуальную машину или наберите partprobe.
5. Выполните команду pvcreate /dev/sda3 чтобы создать физический том.

6. Просмотрите информацию о группах томов с помощью команды vgdisplay и расширьте нужную группу командой vgextend.

7. Просмотрите информацию о логических томах командой lvdisplay и расширьте нужный том командой lvextend -l +100%FREE.

8. Для CentOS 6 используйте команду resize2fs для расширения файловой системы на логическом томе.
Для CentOS 7 используйте команду xfs_growfs /dev/vg_centos/lv_root для расширения файловой системы на логическом томе.
Для увеличения размера диска виртуальной машины Ubuntu:
1. Для начала необходимо выполнить сканирование новой конфигурации и передать данные ядру ОС:
> echo 1 > /sys/block/sda/device/rescan
2. Используем утилиту parted:
> parted
3. Выводим таблицу разделов с помощью ключа: p
> (parted) p
4. Пример вывода команды:

5. В нашем случае увеличиваемое пространство находится на устройстве: /dev/sda , а номер расширяемого раздела 5
6. Изменяем размер раздела с помощью команды:
> (parted) resizepart
> (parted) resizepart 5
7. В появившемся запросе необходимо указать значение расширяемого пространства (из вывода таблицы разделов, в нашем случае 21,5GB):
> End? [10.7GB]? 21.5GB
На этом работа с утилитой parted закончена:
> (parted) quit
8 . Необходимо указать ядру операционной системы информацию об изменениях:
> pvresize
> pvresize /dev/sda5
9. Изменение размера логического тома командой:
> lvextend -r -l +100%FREE /dev/ubuntu-vg/root
10. Для проверки можно использовать команду: df -h
Ещё не пробовали услугу «Облачный хостинг» от Cloud4Y?
Отправьте заявку сейчас и получите 14-ти дневный бесплатный доступ.
- 69 Пользователи нашли это полезным
Связанные статьи
Для уменьшения размера диска виртуальной машины CentOS 6 нужно будет воспользоваться старой.
Файловая система может быть повреждена из-за различных неполадок или внезапного отключения.
Как расширить диск сервера в CentOS?
![]()
Ну просто очень частый кейс: создается виртуальная машина на Linux ОС (Hyper-V или VMware, не важно), которая работает длительное время. Но в один прекрасный момент, память сервера переполняется и приходится расширять диск. В виртуализации (гипервизоре) это сделать очень просто — нарастить виртуальный диск с физического. А что делать внутри виртуалки, где живет Linux/CentOS?
В статье мы расскажем, как расширить пространство памяти (диск) на сервера под управлением Linux/CentOS, последовательно управляя PV (Physical Volume, физические тома), VG (Volume Group, группа томов) и LV (Logical Volume, логические разделы).
А вообще мы можем расширить диск или нужно создать новый?
Это очень важный пункт. Обязательно проверьте вот что: дело в том, что диск разделенный на 4 раздела более не сможет быть расширен. Проверить это легко. Подключаемся к серверу CentOS и вводим команду fdisk -l :
# fdisk -l Disk /dev/sda: 187.9 GB, 187904819200 bytes 255 heads, 63 sectors/track, 22844 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 2636 20972857+ 8e Linux LVM
Если вывод команды у вас выглядит так, как показано выше — все хорошо. У вас пока только два раздела — /dev/sda1 и /dev/sda2. Можно создать еще два.
Однако, если вывод команды будет выглядеть вот так:
# fdisk -l Disk /dev/sda: 187.9 GB, 187904819200 bytes 255 heads, 63 sectors/track, 22844 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 2636 20972857+ 8e Linux LVM /dev/sda3 2637 19581 136110712+ 8e Linux LVM /dev/sda4 19582 22844 26210047+ 8e Linux LVM
Это означает, что для решения задачи расширения памяти на сервере вам нужно создавать новый диск, а не расширять предыдущий. Мы рассматриваем первый вариант, когда у вас еще есть возможность создавать разделы. Погнали!
Создаем новую партицию
Проверяем что у нас на физических дисках командой fdisk -l
# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 391 3036285 8e Linux LVM
Сервер видит 10.7 ГБ места на диске. Начинаем создавать новую партицию (раздел) командой fdisk /dev/sda . После запроса ввода команды, указываем n , чтобы создать новую партицию:
# fdisk /dev/sda The number of cylinders for this disk is set to 1305. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n
В следующем разделе конфигурации, указываем ключ p чтобы создать раздел. Тут будьте внимательны — самый первый пункт нашей статьи — у вас должно быть на этот момент строго меньше 4 партиций на диске!
Command action e extended p primary partition (1-4) p
На следующем экране задаем номер для партиции. Так как у нас уже есть партиции /dev/sda1 и /dev/sda2, то следуя порядковому номеру, мы указываем цифру 3:
Partition number (1-4): 3
В следующем пункте, мы рекомендуем нажать Enter дважды, то есть принять предложенные по умолчанию значения:
First cylinder (392-1305, default 392): Using default value 392 Last cylinder or +size or +sizeM or +sizeK (392-1305, default 1305): Using default value 1305
Отлично. Теперь мы меняем типа нашего раздела. Для этого, в следующем меню нажимаем ключ t , указываем номер партиции, который только что создали (напомним, это был номер 3), 3 , а в качестве Hex code укажем 8e , а дальше просто Enter:
Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM)
Готово. Мы вернулись в основное меню утилиты fidsk. Сейчас ваша задача указать ключ w и нажать Etner, чтобы сохранить опции партиций на диске:
Command (m for help): w
После, что самое важное этого метода — перезагружать ничего не нужно! Нам просто нужно заново сканировать партиции утилитой partprobe:
# partprobe -s
Если команда выше не работает, то попробует сделать с помощью partx:
# partx -v -a /dev/sda
И если уже после этого у вас не появляется новая партиция — увы, вам придется согласовать время перезагрузки сервера и перезагрузить его. Успешным результатом этого шага будет вот такой вывод команды fdisk , где мы видим новую партицию:
# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 391 3036285 8e Linux LVM /dev/sda3 392 1305 7341705 8e Linux LVM
Расширяем логический раздел LV с новой партиции
Теперь наша задача следующая: создаем физический том (PV) из новой партиции, расширяем группу томов (VG) из под нового объема PV, а затем уже расширяем логический раздел LV. Звучит сложно, но поверьте, это легко!
Итак, по шагам: создаем новый физический том (PV). Важно: у вас может быть не /dev/sda3, а другая, 4, например, или вообще /dev/sdb3! Не забудьте заменять в командах разделы, согласно вашей инсталляции.
# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
Отлично. Теперь находим группу томов (VG, Volume Group). А точнее, ее название. Делается это командой vgdisplay :
# vgdisplay --- Volume group --- VG Name MerionVGroup00 .
Найдено. Наша VG называется MerionVGroup00. Теперь мы ее расширим из пространства ранее созданного PV командой vgextend:
# vgextend MerionVGroup00 /dev/sda3 Volume group "MerionVGroup00" successfully extended
Теперь расширяем LV из VG. Найдем название нашей LV, введя команду lvs :
# lvs LV VG Attr LSize MerionLVol00 MerionVGroup00
MerionLVol00 — найдено.Расширяем эту LV, указывая до нее путь командой lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3 :
# lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3 Extending logical volume MerionLVol00 to 9.38 GB Logical volume MerionLVol00 successfully resized
Почти у финиша. Единственное, что осталось, это изменить размер файловой системы в VG, чтобы мы могли использовать новое пространство. Используем команду resize2fs:
# resize2fs /dev/MerionVGroup00/MerionLVol00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/MerionVGroup00/MerionLVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/MerionVGroup00/MerionLVol00 to 2457600 (4k) blocks. The filesystem on /dev/MerionVGroup00/MerionLVol00 is now 2457600 blocks long.
Готово. Проверяет доступное место командой df -h . Enjoy!
Получаете ошибку в resize2fs: Couldn’t find valid filesystem superblock
Если вы получили ошибку вида:
$ resize2fs /dev/MerionVGroup00/MerionLVol00 resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/MerionVGroup00/MerionLVol00 Couldn't find valid filesystem superblock.
Это значит, что у вас используется файловая система формата XFS, вместо ext2/ext3. Чтобы решить эту ошибку, дайте команду xfs_growfs :
$ xfs_growfs /dev/MerionVGroup00/MerionLVol00 meta-data=/dev/MerionVGroup00/MerionLVol00 isize=256 agcount=4, agsize=1210880 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=4843520, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Как тебе такое, Илон Маск?
Увеличение дискового пространства в CentOS 7
После увеличения дискового пространства в панели управления, необходимо также сделать доступным диск для операционной системы.
Под пользователем root и вводим следующие команды:
[root@Serverspace ~]# echo 1 > /sys/block/sda/device/rescan
С помощью fdisk выполним:
[root@Serverspace ~]# fdisk /dev/sda
Удалим раздел /dev/sda2:
Command (m for help): d
Partition number (1,2, default 2): 2
Command (m for help): n
Выбираем тип раздела (p) — основной
Select (default p): p
Partition number (2-4, default 2): 2
Нажимаем два раза Enter — принимаем значения по умолчанию
First sector (XXX-YYY, default ZZZ):
Last sector, +sectors or +size (XXX-YYY, default ZZZ):
Изменяем тип раздела
Command (m for help): t
Partition number (1-2): 2
Hex code (type L to list all codes): 8e
.
Command (m for help): w
Известим ядро об изменениях:
[root@Serverspace ~]# partx -u /dev/sda2
Внесем изменения в физический том:
[root@Serverspace ~]# pvresize /dev/sda2
Теперь необходимо узнать название логического тома, для этого выполним:
Нас интересует название тома оканчивающееся на XXXXXXX/root (в примере ниже это /dev/centos_vg/root) запоминаем данное название
— Logical volume —
LV Path /dev/centos_vg/swap
.
— Logical volume —
LV Path /dev/centos_vg/var
.
— Logical volume —
LV Path /dev/centos_vg/root
.
Расширяем логический том:
[root@Serverspace ~]# lvextend -l +100%FREE /dev/XXXXXXX/root
.
Logical volume root successfully resized
Расширяем файловую систему: