Как расширить файловую систему EXT4 без потери данных

resize2fs disk partition resize ext4 e2fsck

Описываю на конкретном примере. Проверено на собственном опыте.

Данные сохранились в нетронутом виде.

Пусть у нас есть переполненный раздел /dev/vdb1 на втором виртуальном диске размером 120G.

[root@ext-web11 centos]# df -H
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       8.4G  1.2G  6.8G  15% /
tmpfs           985M     0  985M   0% /dev/shm
/dev/vdb1       120G  117G  98G  98% /data 

Принято решение увеличить раздел до 300G.

Средствами гипервизора увеличим размер до нужного размера, предварительно отключив его.

Подключаем диск, загружаемся и смотрим df \-H, что ничего не изменилось.

Предварительно надо проверить наш раздел командой fsck:

fsck -f /dev/vdb1

Затем размонтируем наш диск: umount /data

MSDOS таблица разделов

Входим в редактор разделов

fdisk /dev/vdb

Смотрим, что у нас есть 300G, а под раздел занято только 120G

Command (m for help): p

Disk /dev/vdb: 300.6 GB, 300647710720 bytes
16 heads, 63 sectors/track, 582542 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3d26848c

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1      374491   188743432+  83  Linux

Теперь можно смело удалить этот раздел командой “d”, затем выбрать 1 раздел!

После удаления раздела файловая система и сами файлы останутся на своих местах.

Далее, создаем новый раздел командой “n”. Тип раздела “p” primary, а не extended, как написано в некоторых руководствах, номер раздела - 1.

Первый сектор выбираем по-умолчанию такой-же, как был т.е. 1, а последний - тоже по-умолчанию последний, максимальный.

Затем, надо выбрать тот-же тип файловой системы, что и был у нас код 83 \- Linux ext4 - нажимаем “t” и вводим “83”L

Выходим с сохранением новой таблицы разделов : “w”

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

GPT таблица разделов

Если таблица разделов была GPT, то надо использовать parted.

На запрос:

Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 419430400 blocks) or continue with the current setting
Fix/Ignore

Надо ответить: Fix

а затем увеличить раздел командой: 

(parted) resizepart 1 322G

где 322G - размер диска

e2fsck и resize2fs

Теперь надо полечить нашу файловую систему - дать ей понять, что теперь она находится на новом, увеличенном разделе: e2fsck -f /dev/vdb1

[root@ext-web11 centos]# e2fsck -f /dev/vdb1
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 207540/11796480 files (1.1% non-contiguous), 29288328/47185858 blocks

Осталось сделать собственно увеличение файловой системы - расширив ее до полного заполнения раздела /dev/vdb1 т.е. до 300G: resize2fs /dev/vdb1

mount [root@ext-web11 centos]# resize2fs /dev/vdb1
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vdb1 to 73400284 (4k) blocks.
The filesystem on /dev/vdb1 is now 73400284 blocks long.

Теперь монтируем  и убеждаемся, что все файлы и каталоги на месте.

[root@ext-web11 centos]# mount /dev/vdb1 /data
df -HT
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/vda1      ext4   8.4G  1.2G  6.8G  15% /
tmpfs          tmpfs  985M     0  985M   0% /dev/shm
/dev/vdb1      ext4   296G  117G  164G  42% /data

Все на этом.

aizaro@mail.ru 28.03.2017 last edit 12.02.19