
Как безопасно расширить диск 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 и консоль нужны до первого изменения.
Первоисточники
- Linux manual page: lsblk — отображение блочных устройств и рекомендация явно задавать столбцы.
- Linux manual page: lvextend — расширение логического тома LVM.
- Linux manual page: xfs_growfs — увеличение смонтированной XFS.
Самопроверка
Проверьте, что материал усвоен
Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.
Разбираем коротко
Частые вопросы
Почему df не показывает новый размер после увеличения диска в панели VPS?
Панель увеличивает виртуальное блочное устройство, но раздел, физический том LVM и файловая система могут сохранить старый размер. Нужно определить фактическую схему и расширить каждый используемый слой по очереди.
Можно ли уменьшить диск обратно после ошибочного расширения?
Обычно безопасного симметричного отката нет: XFS не уменьшается, а уменьшение других файловых систем требует отдельных условий. Надёжный путь возврата — проверенная резервная копия или перенос данных на заново созданный том.
Нужно ли перезагружать VPS после расширения раздела?
Часто ядро перечитывает размер без перезагрузки, но это зависит от устройства и схемы разделов. Сначала проверьте lsblk и журналы; если новый размер не виден, используйте способ, рекомендованный хостером, и запланируйте окно работ.


