Последовательность расширения виртуального диска, раздела, тома и файловой системы Linux
Linux

Как безопасно расширить диск VPS в Linux

Пошагово увеличиваем диск VPS: определяем слои хранения, расширяем раздел или LVM и файловую систему, проверяем результат и планируем восстановление.

Содержание

После увеличения диска в панели хостера команда df -h нередко показывает прежний объём. Это не ошибка панели: хостер увеличил виртуальный диск, но раздел и файловая система внутри Linux ещё не заняли новое пространство.

Чтобы не повредить данные, сначала нужно выяснить устройство файловой системы и наличие LVM. Затем расширяются только те слои, которые действительно присутствуют: диск, раздел, физический том LVM, логический том и файловая система. Имена /dev/vda1 и /dev/vg0/web ниже служат примерами — на вашем сервере они почти наверняка будут другими.

Подходит ли эта инструкция для вашего случая

Здесь разобран VPS, на котором хостер увеличил уже подключённый виртуальный диск. Если в системе появился второй диск, его не следует присоединять командами из этой статьи: новый носитель сначала размечают, форматируют и монтируют либо добавляют в существующую систему хранения по отдельному плану.

Остановитесь и найдите инструкцию именно для своей схемы, если используются RAID, шифрование, ZFS, btrfs или сетевой диск. Для сервера с базой данных также заранее выберите окно работ: при ошибке интенсивная запись усложнит восстановление.

Сначала выясните, где находятся данные

Начните с каталога, которому не хватает места. В примере это /var/www. findmnt покажет, с какого устройства смонтирован каталог, lsblk — диски и разделы, а df — тип и заполнение файловой системы:

findmnt --target /var/www
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
df -hT /var/www

Если в столбце TYPE встречается lvm или путь источника начинается с /dev/mapper/, посмотрите структуру LVM. В ней PV — диск или раздел, переданный LVM, VG — объединённый запас пространства, а LV — логический том, на котором размещена файловая система:

sudo pvs
sudo vgs
sudo lvs -o lv_name,vg_name,lv_size,lv_path

Сохраните вывод до изменений. Например, если findmnt связывает /var/www с /dev/mapper/vg0-web, а pvs показывает /dev/vda3, цепочка выглядит так: /dev/vda/dev/vda3 → PV → VG → LV → файловая система. Без LVM источник может выглядеть как обычный раздел /dev/vda1.

Последняя команда выводит источник, тип файловой системы и точку монтирования одной строкой. Эти три значения понадобятся дальше:

findmnt -no SOURCE,FSTYPE,TARGET --target /var/www

Подготовьте путь назад

До изменения размера сделайте резервную копию за пределами этого диска. Снимок VPS удобен, но во время активной записи база данных может попасть в несогласованное состояние; для неё нужен штатный дамп либо предусмотренный СУБД способ резервирования.

Проверьте вход через консоль хостера: она понадобится, если после ошибки сервер перестанет загружаться или пропадёт SSH. Затем запишите время работ, список неисправных служб и сохраните копию таблицы монтирования:

date --iso-8601=seconds
systemctl --failed
sudo cp -a /etc/fstab /etc/fstab.before-disk-grow

Файл /etc/fstab.before-disk-grow поможет вернуть настройки монтирования, но не уменьшит диск и не восстановит данные. Для полного возврата нужна внешняя копия, чтение которой вы проверили до работ.

Убедитесь, что ядро видит новый размер

После увеличения диска в панели повторите проверку. Первая команда должна показать новый размер самого диска, например /dev/vda, даже если его раздел пока остался прежним. В журнале ищите сообщения об обнаружении нового объёма и ошибки ввода-вывода:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo dmesg --ctime | tail -n 30

Если размер самого диска не изменился, не переходите к разделам. Используйте действие rescan или перезагрузку только по инструкции конкретного хостера. Команда, подходящая одному типу виртуального контроллера, может не подходить другому.

Если LVM не используется

Если файловая система находится прямо в разделе, сначала увеличьте сам раздел. Утилита growpart принимает имя диска и номер раздела раздельно. Следующий пример подходит только для первого раздела /dev/vda1, за которым действительно расположено свободное место:

sudo growpart /dev/vda 1
lsblk /dev/vda

После команды размер /dev/vda1 в выводе lsblk должен увеличиться. Сообщение NOCHANGE означает, что утилита не нашла доступного пространства; в таком случае не переходите к следующему шагу, а ещё раз проверьте разметку.

Для ext4 укажите увеличенный раздел. resize2fs расширит существующую файловую систему до доступного размера и не форматирует её заново:

sudo resize2fs /dev/vda1

Для XFS передаётся точка монтирования, а не имя раздела. В примере файловая система уже смонтирована в /var/www:

sudo xfs_growfs /var/www

Подставьте значения, полученные из findmnt. Не используйте mkfs: эта команда создаёт новую файловую систему и уничтожает прежнюю структуру данных.

Вариант с LVM

Если LVM расположен внутри раздела, сначала увеличьте раздел через growpart, как описано выше. Затем сообщите LVM новый размер физического тома. В примере PV находится на /dev/vda3:

sudo pvresize /dev/vda3
sudo pvs
sudo vgs

После pvresize в выводе vgs должно появиться свободное место. Добавьте нужный объём конкретному логическому тому. Здесь том /dev/vg0/web получает 10 ГБ; не занимайте автоматически всё пространство, если эта группа обслуживает и другие тома:

sudo lvextend -L +10G /dev/vg0/web
sudo lvs

lvs должен показать новый размер логического тома. Для ext4 теперь расширьте файловую систему на этом LV:

sudo resize2fs /dev/vg0/web

Для XFS вместо устройства укажите каталог, в котором она смонтирована:

sudo xfs_growfs /var/www

У lvextend есть режим одновременного расширения файловой системы, но отдельные команды позволяют проверить каждый слой и остановиться именно там, где результат не совпал с планом.

Проверка результата

Проверьте всю цепочку ещё раз. Размеры диска, раздела и логического тома должны согласовываться, а df должен показывать увеличившуюся файловую систему:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo pvs
sudo vgs
sudo lvs
df -hT /var/www
findmnt --target /var/www
systemctl --failed

После технической проверки откройте приложение и выполните обычную операцию чтения и записи. Увеличение диска даёт время, но не устраняет причину заполнения. Найдите растущий каталог по руководству о занятом месте на сервере и настройте мониторинг и резервные копии VPS.

Ошибки и восстановление

Не продолжайте, если имя устройства, тип файловой системы или структура LVM не совпали с записанным планом. Ошибки ввода-вывода, пропавшее монтирование, неизвестная сигнатура или неожиданно изменившийся UUID — повод прекратить изменения и перейти к восстановлению.

Увеличение часто необратимо одной командой. XFS не уменьшается, а уменьшение ext4 связано с отдельной офлайн-процедурой и ограничениями. Безопасный возврат — остановить запись, создать том нужного размера, восстановить проверенную копию и переключить монтирование. Именно поэтому backup и консоль нужны до первого изменения.

Первоисточники

Рекламное местоВаша компания здесьРазместить рекламу

Самопроверка

Проверьте, что материал усвоен

Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.

01Что нужно определить до первой команды изменения размера?
02Какой порядок корректен для LVM поверх раздела?
03Что является надёжным откатом после расширения XFS?

Разбираем коротко

Частые вопросы

Почему df не показывает новый размер после увеличения диска в панели VPS?

Панель увеличивает виртуальное блочное устройство, но раздел, физический том LVM и файловая система могут сохранить старый размер. Нужно определить фактическую схему и расширить каждый используемый слой по очереди.

Можно ли уменьшить диск обратно после ошибочного расширения?

Обычно безопасного симметричного отката нет: XFS не уменьшается, а уменьшение других файловых систем требует отдельных условий. Надёжный путь возврата — проверенная резервная копия или перенос данных на заново созданный том.

Нужно ли перезагружать VPS после расширения раздела?

Часто ядро перечитывает размер без перезагрузки, но это зависит от устройства и схемы разделов. Сначала проверьте lsblk и журналы; если новый размер не виден, используйте способ, рекомендованный хостером, и запланируйте окно работ.