Шлифуем админское кунг-фу. Расширим раздел диска и файловую систему на лету без перезагрузки и без потери данных. Я буду расширять диск на виртуальной машине VMware с операционной системой Ubuntu.
Уже была подобная статья, там я расширял отдельный диск /dev/sdb. Сегодня задачка посложнее, будем расширять логический системный раздел /dev/sda5, который находится в расширенном разделе /dev/sda2, который, в свою очередь, лежит на диске /dev/sda. Там же где-то рядом есть своп /dev/sda1, его трогать не будем. В общем, структура разделов стандартная после установки Ubuntu:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk ├─sda1 8:1 0 91M 0 part [SWAP] ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 15,9G 0 part /
Проверим место:
df -hT
/dev/sda5 смонтирован в основной раздел /, файловая система ext4, общий объём 16 Гб.
Увеличиваю на виртуальной машине диск до 20 Гб.
Командуем операционной системе выполнить сканирование диска sda и смотрим что получилось:
echo 1>/sys/class/block/sda/device/rescan
lsblk
Теперь выполним приём кунг-фу. С помощью fdisk удалим и заново создадим разделы без потери данных. Переходим к управлению разделами диска:
fdisk /dev/sda
Отобразим список разделов:
p
- /dev/sda1 — Linux своп, он же загрузочный
- /dev/sda2 — расширенный
- /dev/sda5 — логический Linux
Мы не можем расширить раздел /dev/sda5, потому что он находится в /dev/sda2, поэтому нам нужно расширить раздел /dev/sda2.
Удаляем второй раздел.
d 2 p
Как видим, вместе со вторым разделом удалился пятый. Заново создаём второй раздел (расширенный, с номером 2).
n
e
2
p
Появился раздел /dev/sda2. Создадим пятый раздел (логический).
n
l
p
Номер раздела присвоился автоматически.
Сохраняем изменения.
w
Таблица разделов изменена.
Обращаем внимание на предупреждение:
WARNING: Re-reading the partition table failed with error 16: Устройство или ресурс занято.
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)или
ВНИМАНИЕ: Попытка перечитать таблицу разделов завершилась ошибкой 16: Устройство или ресурс занято.
Ядро всё ещё использует старую таблицу. Новая будет использована при следующей перезагрузке или при запуске partprobe(8) или kpartx(8)
Обновляем таблицу разделов диска sda:
partx -u /dev/sda
Расширяем файловую систему ext4 в разделе sda5 до конца раздела:
resize2fs /dev/sda5
Проверяем что получилось:
lsblk
df -hT
Раздел /dev/sda5 с файловой системой ext4 занимает 20 Гб. Задача выполнена. Раздел и файловая система расширены на лету без перезагрузки и без потери данных. И без остановки сервисов, работающих с этим разделом.
Ссылки
Linux — расширяем раздел на лету
Linux — расширяем раздел на лету 3
Linux — расширяем раздел на лету 4
Linux — расширяем раздел на лету 5