Ubuntu: расширяем раздел после чистой установки (LVM, fdisk)
После чистой установки Ubuntu Server с разметкой по умолчанию (LVM) корневая файловая система занимает только часть диска, примерно половину. Остальное место никуда не делось, просто оно никому не отдано. Исправляется это несколькими командами, причём без перезагрузки и без потери данных.
Что смотрим сначала
Перед любыми изменениями полезно увидеть, где именно лежит свободное место:
lsblk
df -h /
sudo vgs
sudo lvs
lsblkпоказывает диск, его разделы и логические тома на них;df -h /— сколько места видит корневая файловая система;vgsв колонкеVFreeпоказывает, сколько свободного места осталось в группе томов;lvsпоказывает размер логического томаubuntu-lv.
Бывает два случая, и от них зависит, какие шаги нужны.
- Диск не менялся, но том меньше группы томов. Установщик создал
ubuntu-lvне на всё доступное место, и вVFreeесть свободные гигабайты. Нужны только шаги 3 и 4. - Диск увеличили после установки (например, в гипервизоре или в облаке), и свободного места в группе томов нет, зато оно есть на самом диске. Нужны все четыре шага.
Если сомневаетесь, выполните все четыре: лишние команды ничего не испортят, а там, где делать нечего, просто скажут об этом.
Четыре команды
sudo sgdisk -e /dev/sda
sudo growpart /dev/sda 3
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Имена диска (/dev/sda), номер раздела (3) и имя тома (ubuntu--vg-ubuntu--lv) взяты из стандартной установки на виртуальной машине. У вас они могут отличаться (/dev/vda, /dev/nvme0n1 и так далее), поэтому сверьтесь с выводом lsblk. Для NVMe номер раздела пишется с буквой p, а в growpart диск и номер раздела передаются отдельными аргументами: sudo growpart /dev/nvme0n1 3.
1. sgdisk -e — переносим резервную таблицу разделов в конец диска
Таблица разделов GPT дублируется в самом конце диска. Если диск стал больше, копия остаётся там, где был старый конец, и система считает, что дальше ничего нет. Ключ -e переносит резервную копию таблицы в настоящий конец диска. Команда sgdisk входит в пакет gdisk.
На обычном диске, который не увеличивали, этот шаг ничего не изменит.
2. growpart — растягиваем раздел
sudo growpart /dev/sda 3
Раздел с LVM (здесь третий) растягивается до конца диска. Размер раздела меняется на лету, данные не затрагиваются. Если раздел уже занимает всё место, growpart ответит NOCHANGE, и это нормально. Утилита лежит в пакете cloud-guest-utils.
После этого физический том нужно уведомить о новом размере:
sudo pvresize /dev/sda3
Во многих случаях growpart на Ubuntu этого не требует, но шаг безвреден, и после него sudo vgs покажет всё доступное место в VFree.
3. lvextend — отдаём всё свободное место логическому тому
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
-l +100%FREE означает: добавить тому всё, что свободно в группе томов. Если нужно только часть, например 20 ГБ, вместо этого пишут -L +20G.
4. resize2fs — растягиваем файловую систему
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Логический том вырос, но файловая система ещё нет. resize2fs растягивает ext4 прямо на смонтированном томе. Если корень отформатирован в XFS, нужна другая команда:
sudo xfs_growfs /
Узнать тип файловой системы можно командой df -T /.
Короче: lvextend с ключом -r
Шаги 3 и 4 объединяются одним ключом -r (--resizefs): lvextend сам вызовет подходящую утилиту для файловой системы.
sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
Проверка
df -h /
В колонке Size должен появиться новый размер. Перезагружать машину не нужно.
Итого
- свободного места нет в группе томов, а диск увеличивали —
sgdisk -e,growpart, при необходимостиpvresize; - место в группе томов есть —
lvextend -r -l +100%FREE; - всегда сначала
lsblk,vgsиlvs, чтобы убедиться, что команды применяются к тому диску и тому, что нужно.
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.