В этой статье, мы рассмотрим, как расширить раздел на диске Linux на лету без приостановки системы и отмонтирования раздела. С помощью fdisk вы можете на лету удалить раздел и на его месте создать новый раздел большего размера. В моем случае на виртуальной машине Linux, запушенной на VMware ESXi закончилось свободное место на ext4 разделе.
Выведите информацию о занятом месте на файловой системе Linux:
# df -hT
Увеличьте размер виртуального vmdk диска в VMware.
Пересканируйте диск, чтобы увидеть новый размер:
# echo 1>/sys/class/block/sdb/device/rescan
Убедитесь, что Linux видит новый размер диска:
# lsblk
Теперь с помощью fdisk мы удалим и пересоздадим раздел без потери данных.
# fdisk /dev/sdb
Выведите список разделов (print):
p
В нашем примере на диске один раздел /dev/sdb1
Удалите текущий раздел (данные на диске при этом остаются):
d
Создайте новый раздел:
n
Тип раздела (primary):
p
Укажите номер раздела:
1
Теперь укажите начальный сектор раздела. Он должен соответствовать начальному сектору раздела, который был удален. В нашем примере это 2048.
Затем укажите последний сектор раздела (по-умолчанию для раздела будет использовано все доступное место).
Еще раз проверьте, что раздел увеличен до необходимого раздела:
p
Сохраните изменения:
w
Появится предупреждение:
WARNING: Re-reading the partition table failed with error 16: Device or resource bu. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
Обновите таблицу разделов на диске sdb:
# partx -u /dev/sdb
Теперь можно расширить файловую систему ext4 на разделе sdb1:
# resize2fs /dev/sdb1
Отключите зарезервированное под root место:
# tune2fs -m 0 /dev/sdb1
Проверьте используемое место:
# df -hT
Итак, вы расширили раздел в Linux без отмонтирования раздела и перезагрузки хоста.
1 comment
Без удаления раздела, с применением parted, в данном случае CentOS с LVM, но легко правится и не под LVM:
#!/bin/bash
partition=/dev/centos/root
read -p «REALLY RESIZE $partition? (type Yes for resize) » -i N confirmation
if [ $confirmation != «Yes» ]; then
echo $confirmation is not valid for resize, aborting!
exit 0
fi
echo $confirmation is valid for resize, working…
# resize $partition
parted /dev/sda resizepart 2 100%
pvresize /dev/sda2
pvscan
lvextend -l +100%FREE /dev/centos/root
resize2fs /dev/mapper/centos-root