Debian 11 увеличение раздела

Debian 11 увеличение раздела диска

Предположим, что у нас есть виртуальная машина с установленной операционной системой Debian и требуется увеличить размер раздела, например системного. В этой статье мы рассмотрим на примере Debian 11 увеличение раздела диска без LVM.

Вводные данные

Наш Debian 11 установлена на Hyper-V. Для начала проверим версию:

$ cat /etc/debian_version
11.1

В дальнейшем нам потребуется выполнять действия от пользователя root, подключимся под этим пользователем:

$ su -
Password:

Теперь посмотрим размер файловой системы, выполнив df -h

# 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

Наш системный раздел /dev/sda1 смонтированный в / имеет размер 19 Гб.

Посмотрим вывод fdisk -l:

# 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

В данном примере у нас 1 диск /dev/sda размером 20 гигабайт, который разбит на 3: /dev/sda1, /dev/sda2 и /dev/sda5. Как помните, нас интересует диск /dev/sda1 с типом Linux.

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

В среде виртуализации увеличиваем размер жесткого диска нашей виртуальной машины. Если ваша среда виртуализации позволяет это сделать без выключения машины, то измените размер диска и выполните:

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

Если нет возможности увеличить диск без выключения виртуальной машины, то выключаем и меняем размер. Я увеличил диск до 25 гигабайт, запускаем машину и проверяем:

# 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

Внимание! Перед тем, как приступить к дальнейшим работам по расширению системного раздела, обязательно сделайте резервную копию данных!

После увеличения размера диска необходимо увеличить сам раздел. Я специально установил Debian с разбивкой на разделы как предлагал установщик, имея ввиду, что многие так и поступят. И что мы видим? Что мы не сможем просто так расширить раздел /dev/sda1, т.к. сразу за ним следует sda5. Поэтому сначала потребуется передвинуть его в конец диска (где как раз и находятся добавленные сектора), а уже потом расширить сам sda1. Но если у вас в выводе fdisk только один раздел или он находится в конце диска (смотрите по конечным секторам) – можете сразу перейти к пункту Debian 11 увеличение раздела диска.

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

Тут сразу необходим оговориться, что мы будем переносить раздел с swap (подкачкой), поэтому его можно будет просто удалить и создать новый. Если же требуется двигать разделы с данными, то это другая задача, её проще решать с помощью GParted на Live CD и в данной статье мы её рассматривать не будем.

Для начала отключаем подкачку:

# 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.

Сделаем ремарку, что все изменения в fdisk нужно делать осторожно, с пониманием. Но знайет, что пока вы не сохраните изменения (w) всегда можно выйти без каких либо последствий.

Вводим 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.

Тут нас интересует общее число секторов на диске (52428800) и число секторов под раздел подкачки (1996800). Ещё отметим, что логический диск /dev/sda2 (который был создан автоматически) никуда не смонтирован и пересекается с /dev/sda5. Возможно это баг автоматической разбивки, мы просто удалим его.

Удаляем раздел с подкачкой 5 и логический раздел 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.

И посмотрим, что у нас получилось:

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

Теперь заново создадим раздел с подкачкой, но уже в конце диска. Создаем новый раздел с помощью n:

Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):

Нас попросят выбрать тип раздела, для создаваемого /dev/sda2 выбираем логический e:

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

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

Далее потребуется указать начало раздела. Если мы хотим оставит размер подкачки таким же как он и был, то из последнего сектора диска /dev/sda (52428800) вычитаем число секторов, на которых располагался раздел /dev/sda2 (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'.

Посмотрим, что у нас получилось:

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.

После этого fdisk завершит свою работу и мы можем создать swap (указывайте свой новый раздел подкачки!):

# mkswap /dev/sda2

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

Копируем UUID, его надо будет указать в fstab, чтобы он работал после перезагрузки. Открываем любым текстовым редактором:

# nano /etc/fstab

Находим запись с типом swap (после комментария #swap was on) и там заменяем UUID на новый. Сохраняем и выходим.

Осталось только включить подкачку:

# swapon /dev/sda2

Debian 11 увеличение раздела диска

Выполним fdisk /dev/sda, где /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

У вас могут быть другие разделы, главное, чтобы были свободные сектора после того раздела, который мы хотим расширить. Для этого мы в предыдущем разделе двигали swap в конец диска. У нас получилось, что sda1 заканчивается на секторе 39940096, а следующий раздел 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.

Как видим, был создан раздел на 24 гигабайта с типом Linux filesystem.

Также будет задан вопрос, хотим ли мы удалить текущую файловую систему. Отвечаем отказом:

Partition #1 contains a ext4 signature.

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

И если, как в нашем случае, раздел был загрузочным – делаем его таковым:

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

Теперь воспользуемся утилитой 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

Заключение

Как видим, в debian 11 увеличение раздела диска – не такая уж и сложная задача.

Вы можете посмотреть похожие статьи по расширению разделов в различных дистрибутивах linux:

5 комментариев к “Debian 11 увеличение раздела”

  1. Хорошая инструкция, только забыли указать что примари раздел надо сделать загрузочным)))
    Command (m for help): a
    Partition number (1,2, default 2): 1
    The bootable flag on partition 1 is enabled.

    Device Boot Start End Sectors Size Id Type
    /dev/vda1 * 2048 207718399 207716352 99G 83 Linux
    /dev/vda2 207718400 209715199 1996800 975M 82 Linux swap / Solaris

    Ответить
  2. Спасибо, только благодаря Вашей статье сделал всё как надо, а значит не уволят, а значит я и моя жена сегодня сможем купить еды. =)

    Ответить
  3. Отличная статья, но у меня сначала ничего не получалось. Причина в том, что указанная здесь информация актуальна для случая, когда Вы работаете на виртуальной машине, а не на ранее сделанном снимке. Oracle Virtual Box создает дополнительный файл, имя которого вы можете посмотреть наведя на имя носителя в окне Настройки виртуальной машины.
    Так вот, если вы будете работать с fdisk на виртуальной машине, у которой к основному файлу накопителя, примеру, Debain.vdi применен разностный файл вида {xxxx}.vdi, вас ждет крах системы. Видимо, потому что параметры основного и разностного файла отличаются после переразметки чрез fdisk.

    Провозившись целый день, я решил проблему. Я создал клон машины снимка, и при клонировании основной и разностный файлы сливаются в один. Далее по статье. Не забудьте скопировать .vdi файл накопителя Вашей виртуальной машины перед изменением размера.

    Еще такой момент. Проверить, работает ли swap можно командой cat /proc/swaps.
    И еще нюанс. Если вы увеличили размер диска в Virtual Box, изменив его в свойствах основного файла накопителя, например, в у файла Debain.vdi, то вернуть назад вы не сможете. Но, если Вы клонируете машину со снимком, в котором размер не был изменен, то в клоне после слияния разностного и основного файла накопителя новый файл Debain.vdi будет иметь исходный размер.

    И напоследок скажу, что, действительно, изначально созданный при автоматической разметке контейнер sda2, кажется, действительно не нужен. Сектора sda2 sda5 накладываются с разницей в 2 и более сектора, в зависти от размера диска, т.к. sda2 является логическим контейнером. Возможно, что получится сделать описанное в статье, сохранив структуру sda, sda2, sda5.

    Ответить

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