Как расширить существующий диск в 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) |
Информация
Для файловой системы btrfs следует использовать другие инструкции.
В данном примере будет описано как расширить существующий раздел на диске, используя 15Gb свободного дискового пространства из неразмеченной области этого же диска. Расширение будет выполнено на примере дистрибутива CentOS.
Данная инструкция подходит для большинства дистрибутивов Linux, дает подробную информацию как корректно расширить дисковое пространство, учитывает особенности команд различных дистрибутивов.
Примечание
Все команды необходимо выполнять под пользователем root либо с правами суперпользователя (sudo).
При выполнении данной инструкции есть риск потери данных, поэтому предварительно рекомендуется сделать резервную копию (backup) виртуальной машины.
Шаг 1. Анализ конфигурации дискового пространства¶
-
Сперва следует определить название раздела, который собираетесь расширить и объем неразмеченной области на устройстве (диске) с помощью команды
lsblk.[root@centos~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 45G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─centos-root 253:0 0 28G 0 lvm / └─centos-swap 253:1 0 1G 0 lvm [SWAP] sr0 11:0 1 1024M 0 romВ данном примере мы видим, что в системе имеется 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. - основной
-
Затем следует проверить существующую конфигурацию LVM командами:
pvs- вывести название и количество имеющихся физических томов (PV)vgs- вывести группы томов (VG)lvs- вывести логические тома (LV)
-
Проверьте разделы диска с помощью утилиты
fdisk -l.Пример отображения для
CentOS:[root@centos~]# fdisk -l Disk /dev/sda: 45GiB, 48318382080 bytes, 94371840 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: 0xa2d4566c Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 65914559 60815360 29G 8e Linux LVMРаздел
/dev/sda2является расширяемым разделомLVM.Пример отображения для
Ubuntu:[root@centos~]# fdisk -l Disk /dev/sda: 45GiB, 48318382080 bytes, 94371840 sectors Disk model: QEMU HARDDISK 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: 0xa2d4566c Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1050623 1048576 512M b W95 FAT32 /dev/sda2 1052670 61863933 61863933 29.5G 5 Extended /dev/sda5 1052672 61863933 61863931 29.5G 8e Linux LVMПримечание
Обратите внимание, в дистрибутиве
Ubuntuсектора раздела/dev/sda5входят в сектора раздела/dev/sda2, т.е. имеют одно дисковое пространство.Раздел
/dev/sda2является расширенным, раздел/dev/sda5является разделомLVM, созданным на расширенном разделе. Поэтому, для того, чтобы расширить логический томrootпредварительно необходимо расширить оба этих раздела.
Шаг 2. Расширение раздела с помощью утилиты growpart¶
-
Сперва следует установить утилиту
growpartв соответствии с вашим дистрибутивом.-
для дистрибутивов Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux команда:
[root@centos ~]# dnf -y install cloud-utils-growpart
Примечание
Для устаревших дистрибутивов (CentOS 7.9) вместо
dnfиспользуйтеyum.-
для дистрибутивов Ubuntu, Debian команда:
[root@ubuntu ~]# apt -y install cloud-guest-utils
-
-
Затем необходимо расширить раздел (в нашем случае
/dev/sda2- корневой раздел (root)) на всю неразмеченную область, т.е. в нашем случае на 15Gb. с помощью команды:
growpart /dev/sda 2, где/dev/sda 2- путь к устройству диска и номер расширяемого раздела.Важно
Для
Ubuntuможет потребоваться расширить 2 раздела (это можно узнать по командеfdisk -l).Примечание
В нашем примере
/dev/sda2- корневой раздел. Обратите внимание, у вас может быть другой раздел.Для Ubuntu, требуется расширить 2 раздела: расширенный раздел
/dev/sda2и разделLVM /dev/sda5:Примечание
У вас могут быть другие разделы для расширения, проверить это можно командами
lsblkиfdisk -l. -
Убедитесь в расширении раздела командой
lsblk.
Шаг 3. Расширение пространства LVM¶
-
Сперва необходимо расширить существующий физический том (
physical volume) с помощью команды:pvresize /dev/sda2, где/dev/sda2- имя расширяемого разделаПримечание
В нашем примере физический том -
/dev/sda2. Обратите внимание у вас может быть другой другой физический том.[root@centos~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <29.00g 0 [root@centos~]# pvresize /dev/sda2 Physical volume "dev/sda2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not relized [root@centos~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <44.00g 15.00g -
Проверьте размер группы томов (volume group). Значение столбца VFree должно увеличиться на расширяемый объем.
-
Расширьте логический том (logical volume) используя команду
lvextend -r -l +100%FREE /dev/centos/root, где
centos- имя группы томов,
root- имя логического тома.Примечание
У вас могут быть другие названия группы и логического тома.
Проверьте выполнение командойlvs- значение столбца PFree должно увеличится.[root@centos~]# lvs LV VG Attr LSize root centos -wi-ao---- <28.00g swap centos -wi-ao---- 1.00g [root@centos~]# lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from <28.00 GiB (7167 extents) to <43.00 GiB (1107 extents). Logical volume centos/root successfully resized. meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1834752blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1,sparce=1,rmapbt=0 = reglink=1 data= bsize=4096 blocks=7339008,imaxpct=25 = sunit=0 swidth=0 blks naming =version2 bsize=4096 ascii-ci=0,ftype=1 log =internal log bsize=4096 blocks=3583, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime=none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7339008 to 11271168 [root@centos~]# lvs LV VG Attr LSize root centos -wi-ao---- <43.00g swap centos -wi-ao---- 1.00gNote
В команде выше, вместо
/dev/centos/rootможно указать другой путь/dev/mapper/centos-root(можно узнать по командеdf -hT), результат будет тот же.
Шаг 4. Расширение файловой системы¶
Важно
Данная операция несет риск потери данных. Предварительно рекомендуется сделать резервную копию виртуальной машины.
-
Для увеличения файловой системы на логическом томе, необходимо ввести команду в зависимости от дистрибутива:
- Для файловой системы
XFS(дистрибутивы Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux) используется утилитаxfs_growfsи путь указанный в выводе командыdf -hTдля расширяемого раздела (в примере ниже дляCentos- это/dev/mapper/centos-root).
[root@centos~]# df -hT /dev/centos/root Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 28G 2.1G 26G 8% / [root@centos~]]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1834752 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=7339008, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=3583, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7339008 to 9959424- Для файловой системы
ext4(дистрибутивы Ubuntu, Debian) используется утилитаresize2fsи путь указанный в выводе командыdf -hTдля расширяемого раздела (в примере ниже дляUbuntu- это/dev/mapper/ubuntu-root).
[root@ubuntu:~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/ubuntu-root ext4 38G 7.1G 29G 20% / root@ubuntu:~# resize2fs /dev/mapper/ubuntu-root resize2fs 1.45.5 (07-Jan-2020) Filesystem at /dev/mapper/ubuntu-root is mounted on/; on-line resizing required old_desc_blocks=4, new_desc_blocks=5 The filesystem on /dev/mapper/ubuntu-root is now 10101760 (4k) blocks long. - Для файловой системы
-
Нужно определить путь монтирования файловой системы расширяемого раздела, точку монтирования и тип файловой системы.
В нашем примере путь -/dev/mapper/centos-root(или/dev/centos/root),
точка монтирования -/,
тип файловой системы -xfs.Примечание
Обратите внимание, у вас будет свой путь и тип файловой системы.
Шаг 5. Проверка¶
Для проверки нового размера диска и файловой системы следует повторить команды df -hT и lsblk.
[root@centos~]# df-hT
Filesystem Type Size Used Avail Use Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 9.2M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 43G 5.0G 39G 12% /
/dev/sda1 xfs 1014M 427M 588M 43% /boot
tmpfs tmpfs 374M 32K 374M 1% /run/user/1000
[root@centos~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 45G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 43G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom