SCROLL
Среднее время на прочтение: 5 мин.

Как изменить размер раздел диска 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

Обсуждение

0 комментариев

Нет комментариев.