Как расширить файловую систему 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