Как изменить размер раздел диска 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
Обсуждение
Нет комментариев.