Как изменить размер раздел диска 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
[stextbox id=’warning’]ВНИМАНИЕ. Рекомендуется перед последующими действиями сделать резервную копию ВМ.[/stextbox]
Далее необходимо увеличить раздел /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.
[stextbox id=’info’]ИНФОРМАЦИЯ. Данной операцией удаляется только запись о разделе, сами данные остаются на диске![/stextbox]
Создаем новый раздел (команда 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
Обсуждение
Нет комментариев.