Опубликовано в

Как расширить диск и файловую систему на Debian/Ubuntu после увеличения VDS

Если после увеличения диска VDS Debian или Ubuntu всё ещё показывает старый размер, проблема обычно не в гипервизоре, а в разделе и файловой системе. Ниже — практическая инструкция: как проверить новый объём, безопасно расширить root-раздел и завершить операцию для ext4 или XFS.

После увеличения диска в панели управления VDS многие ожидают, что система сразу увидит новый объём. На практике гипервизор действительно добавляет виртуальному диску гигабайты, но таблица разделов и файловая система внутри Debian или Ubuntu остаются прежними. Поэтому df -h продолжает показывать старый размер, а свободное место не появляется.

Это нормальное поведение. Чтобы получить доступ к новому объёму, нужно последовательно проверить, что ядро увидело увеличенный диск, затем расширить нужный раздел и только после этого увеличить файловую систему. В большинстве случаев всё делается без перезагрузки и без размонтирования корневого раздела, но действовать нужно аккуратно: ошибка в номере диска или раздела легко превращается в долгий аварийный разбор.

В этой инструкции разберём типовые сценарии для Debian и Ubuntu: когда корневой раздел расположен прямо на диске, когда используется ext4, когда корень находится на xfs, а также что делать, если автоматический cloud-init growpart не сработал. Отдельно покажу, как понять, нужен ли вам growpart, parted или в крайнем случае fdisk.

Перед изменением таблицы разделов полезно иметь свежую резервную копию и доступ в консоль провайдера. Если SSH-сессия оборвётся в неудачный момент или вы случайно измените не тот диск, веб-консоль спасёт гораздо быстрее, чем попытки вслепую понять текущее состояние системы.

Ещё один частый источник путаницы: размер диска, размер раздела и размер файловой системы — это три разные сущности. Можно увеличить сам виртуальный диск до 80 ГБ, но раздел на нём всё ещё будет 40 ГБ, а файловая система внутри раздела — тоже 40 ГБ. Пока не выполнены все этапы, место не появится.

С чего начать: проверяем, что диск действительно стал больше

Первое действие — не запускать команды наугад, а посмотреть текущую картину. Нас интересует, видит ли Linux увеличенный размер блочного устройства и где расположен корневой раздел.

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Типичный вывод может выглядеть так:

NAME   SIZE FSTYPE TYPE MOUNTPOINT
vda     80G        disk
vda1     1M        part
vda2    40G ext4   part /

Здесь видно главное: сам диск vda уже 80 ГБ, а корневой раздел vda2 всё ещё 40 ГБ. Значит, нужно расширять именно раздел, а затем файловую систему на нём.

Дополнительно полезно проверить, что ядро видит новое состояние устройства:

sudo fdisk -l

Если размер диска в lsblk и fdisk -l не изменился, проблема ещё не на уровне разделов. Тогда либо увеличение диска в панели не применилось, либо гостевая система не перечитала параметры устройства. В виртуальной среде это часто решается повторной проверкой через несколько секунд или обычной перезагрузкой ВМ.

Сначала убедитесь, что вырос именно диск, и только потом меняйте раздел. Если диск по-прежнему старого размера, расширять раздел бессмысленно.

Как понять, какой у вас сценарий расширения

На Debian и Ubuntu чаще встречаются такие варианты:

  • обычный раздел на диске, например /dev/vda2 или /dev/sda3, файловая система ext4;
  • обычный раздел на диске с файловой системой xfs;
  • расширение через growpart с последующим увеличением файловой системы;
  • сценарий, где автоматическое расширение должен был выполнить cloud-init, но этого не произошло.

Для большинства облачных образов самый удобный и безопасный путь — использовать growpart. Эта утилита расширяет существующий раздел до конца свободного пространства на диске. Если её нет, можно воспользоваться parted. fdisk лучше оставлять как запасной вариант, когда другие способы недоступны.

Проверить наличие growpart можно так:

which growpart

Если команда ничего не вернула, установите пакет:

sudo apt update
sudo apt install -y cloud-guest-utils

Самый удобный путь: growpart для root-раздела

Предположим, у нас диск /dev/vda, а корневой раздел — /dev/vda2. Тогда команда будет такой:

sudo growpart /dev/vda 2

Если диск называется /dev/sda, а раздел корня — /dev/sda1, используйте:

sudo growpart /dev/sda 1

После успешного выполнения growpart раздел станет больше, но файловая система внутри него всё ещё может оставаться прежнего размера. Это ожидаемо. Следующий шаг зависит от того, используется ли ext4 или xfs.

Узнать тип файловой системы можно через lsblk -f или так:

findmnt -no FSTYPE /

Если вывод показывает ext4, используйте resize2fs:

sudo resize2fs /dev/vda2

Если корневой раздел находится на /dev/sda1, команда будет такой:

sudo resize2fs /dev/sda1

Для xfs расширение выполняется по точке монтирования:

sudo xfs_growfs /

После этого проверьте результат:

df -h /
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *