Как расширить файловую систему 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:
Затем размонтируем наш диск: umount /data
MSDOS таблица разделов
Входим в редактор разделов
Смотрим, что у нас есть 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
а затем увеличить раздел командой:
где 322G - размер диска
e2fsck и resize2fs
Теперь надо полечить нашу файловую систему - дать ей понять, что теперь она находится на новом, увеличенном разделе:
# 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
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.
Теперь монтируем и убеждаемся, что все файлы и каталоги на месте.
# 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
Готово.
Опубликовано: 28.03.2017