Как изменить размер раздел диска Linux

Рассмотрим как на виртуальной машине Linux увеличить раздел диска без LVM.

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

  • Debian 11
  • Исходный размер /dev/sda — 20G
  • Необходимо увеличить размер /dev/sda — 25G

 

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

В системе один диск /dev/sda размером 20G, отобразим информацию по нему:

fdisk -l

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39942143 39940096 19G 83 Linux
/dev/sda2 39944190 41940991 1996802 975M 5 Extended
/dev/sda5 39944192 41940991 1996800 975M 82 Linux swap / Solaris
df -h

Filesystem Size Used Avail Use% Mounted on
udev       944M 0     944M   0% /dev
tmpfs      192M 500K  192M   1% /run
/dev/sda1   19G 990M   17G   6% /
tmpfs      960M    0  960M   0% /dev/shm
tmpfs      5.0M    0  5.0M   0% /run/lock
tmpfs      192M    0  192M   0% /run/user/1000

 

Увеличение размера диска

Увеличиваем размер жесткого диска в ВМ, в моем случае я увеличиваю до 25G. После расширения диска в ВМ, принудительно выполним рескан дисков, командой:

echo 1 > /sys/block/sda/device/rescan

Проверяем изменения. В случае если после рескана размер диска не увеличился в системе, то выполняем перезагрузку и проверяем повторно.

fdisk -l

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 39942143 39940096   19G 83 Linux
/dev/sda2       39944190 41940991  1996802  975M  5 Extended
/dev/sda5       39944192 41940991  1996800  975M 82 Linux swap / Solaris
ВНИМАНИЕ. Рекомендуется перед последующими действиями сделать резервную копию ВМ.

 

Далее необходимо увеличить раздел /dev/sda1, но в случае если у вас как и у меня присутствует раздел с подкачкой (swap) (в моем случае это /dev/sda5), то мы не сможем просто так расширить раздел /dev/sda1, т.к. сразу за ним следует раздел /dev/sda5. Поэтому сначала необходимо перенести раздел /dev/sda5 в конец диска и только потом расширить раздел /dev/sda1.

В случае если у вас только один раздел или он находится в конце диска (смотрите по конечным секторам), то можно сразу перейти к пункту увеличение раздела диска.

 

Перенос раздела с подкачкой (swap)

Переносить раздел с подкачкой (swap) будем путем удаления его и создания в конец диска, куда и были добавлены сектора.

Отключаем подкачку:

swapoff -a

Запускам fdisk с указанием нашего диска (/dev/sda):

fdisk /dev/sda

Welcome to fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

 

Смотрим список разделов (команда p):

Command (m for help): p

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 39942143 39940096   19G 83 Linux
/dev/sda2       39944190 41940991  1996802  975M  5 Extended
/dev/sda5       39944192 41940991  1996800  975M 82 Linux swap / Solaris

Partition 2 does not start on physical sector boundary.

Выписываем:

  • общее число секторов на диске /dev/sda — 52428800
  • число секторов раздела подкачки /dev/sda5 — 1996800

В случае, если присутствует логический диск /dev/sda2, созданный в следствии автоматической разбивки, при установки системы, то просто удалим его, т.к. он никуда не смонтирован.

 

Удаляем раздел /dev/sda5 — 5 и логический раздел /dev/sda2 — 2 (команда d):

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.

Заново создадим раздел с подкачкой в конце диска.

Создаем новый раздел (команда n) и выбираем тип раздела — логический , для создаваемого /dev/sda2 (команда e):

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

Указываем порядковый номер раздела (команда 2):

Partition number (2-4, default 2): 2

Указывем начало раздела, расчитываем — из последнего сектора диска /dev/sda вычитаем число секторов, на которых располагался раздел /dev/sda2:

  • 52428800 — 1996800 = 50432000
First sector (39942144-52428799, default 39942144): 50432000

Последним сектором указываем последний сектор диска:

Last sector, +/-sectors or +/-size{K,M,G,T,P} (50431998-52428799, default 52428799): 52428799

Created a new partition 2 of type 'Extended' and of size 975 MiB.

Изменим тип созданного раздела (команда t), указываем номер раздела 2 и код 82 для файла подкачки:

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code or alias (type L to list all): 82

Changed type of partition 'Extended' to 'Linux swap / Solaris'.

Отобразим получившийся результат (команда p):

Command (m for help): p

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 39942143 39940096   19G 83 Linux
/dev/sda2       50432000 52428799  1996800  975M 82 Linux swap / Solaris

Сохраняем внесенные изменения (команда w):

Command (m for help): w

The partition table has been altered.
Syncing disks.

 

По завершению сохранения, создаем файл подкачки (swap) в созданном разделе /dev/sda2, командой:

mkswap /dev/sda2

Setting up swapspace version 1, size = 975 MiB (1022357504 bytes) no label, UUID=be9928b0-ce1b-44f1-b925-a94fffac5b2e

Копируем UUID и вносим изменения в файле /etc/fstab в описание подключения swap файла и заменяем UUID на новый.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=5fc27626-3d56-4aad-8451-0bd0a91c842e /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=4eb815d4-c520-48e5-959f-e8d6efef93cc none            swap    sw              0       0

Включить подкачку (swap):

swapon /dev/sda2

 

Увеличение раздела диска


Запускам fdisk с указанием нашего диска (/dev/sda):

fdisk /dev/sda

Welcome to fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Смотрим список разделов (команда p):

Command (m for help): p

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 39942143  39940096  19G 83 Linux
/dev/sda2       50432000 52428799  1996800  975M 82 Linux swap / Solaris

Убедимся что имеются свободные сектора после раздела /dev/sda1, из вывода видим что раздел /dev/sda1 заканчивается на секторе (39940096), а следующий раздел /dev/sda2 начинается на (50432000), а между ними есть свободные. В случае если у вас расширяемый раздел один или он последний, то нужно смотреть на последний сектор раздела(39940096) и диска (50432000).

 

Чтобы расширить раздел требуется предварительно удалить информацию о нём. Вводим (команда d) и указываем раздел 1 для /dev/sda1:

Command (m for help): d
Partition number (1-2, default 2): 1

Partition 1 has been deleted.
ИНФОРМАЦИЯ. Данной операцией удаляется только запись о разделе, сами данные остаются на диске!

 

Создаем новый раздел (команда n):

Command (m for help): n

Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)

Указываем основной тип (команда p):

Select (default p): p

Указываем порядковый номер раздела 1 (который удалили):

Partition number (1,3,4, default 1): 1

Указываем начальный и конечный сектор создаваемого раздела (в дефолте система сама подставит свободные сектора, для использования все неразмеченное/свободное пространство):

First sector (2048-50431999, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-50431999, default 50431999): 50431999

Created a new partition 1 of type 'Linux' and of size 24 GiB.

На запрос «Хотим ли мы удалить текущую файловую систему» отвечаем отказом (команда N):

Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

Если расширяемый раздел был загрузочным, то делаем его основным (команда a) и вводим 1:

Command (m for help): a
Partition number (1,2, default 1): 1

The bootable flag on partition 1 is enabled.

Сохраняем таблицу разделов:

Command (m for help): w

Мы увидим сообщение, что таблица с разделами изменена, но так как устройство занято, изменения вступят в силу только после перезагрузки.

The partition table has been altered.
Failed to update system information about partition 1: Device or resource busy

The kernel still uses the old partitions. The new table will be used at the next reboot.
Syncing disks.

Перезагружаем машину:

reboot

 

Изменение размера файловой системы ext4

После перезагрузки, размер раздела /dev/sda1 будет увеличен, система по-прежнему будет видеть старый по объему раздел. Необходимо изменить размер файловой системы утилитой resize2fs (для ext4):

resize2fs /dev/sda1

resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/sda1 is now 6303744 (4k) blocks long.

Проверяем результат:

# df -h

Filesystem      Size  Used Avail Use% Mounted on
udev            944M     0  944M   0% /dev
tmpfs           192M  496K  192M   1% /run
/dev/sda1        24G  1.1G   22G   5% /
tmpfs           960M     0  960M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           192M     0  192M   0% /run/user/1000
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Оставьте комментарий

тринадцать − 11 =