Увеличение диска виртуальной машины в Proxmox VE

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

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

Операция состоит из двух этапов:

  1. увеличение виртуального диска в Proxmox VE;
  2. расширение раздела, LVM и файловой системы внутри гостевой ОС.

В этой инструкции рассматривается только увеличение системного диска Linux-виртуальной машины.

Подходит для: Proxmox VE 8 и 9
Гостевая система: Ubuntu Server и Debian
Уровень сложности: средний
Время выполнения: около 15–30 минут
Требуемый доступ: права управления VM и root-доступ внутри гостевой ОС

Важное предупреждение

Увеличение виртуального диска обычно необратимо через интерфейс Proxmox VE.

Уменьшение диска значительно сложнее и может привести к потере данных.

Перед изменением:

  • создайте резервную копию VM;
  • проверьте состояние файловой системы;
  • убедитесь, что выбран правильный диск;
  • зафиксируйте текущую разметку;
  • проверьте свободное место на storage.

Что будет рассмотрено

После выполнения инструкции можно будет:

  • определить нужный виртуальный диск;
  • увеличить его через веб-интерфейс;
  • увеличить его через CLI;
  • проверить новый размер внутри Linux;
  • расширить обычный раздел;
  • расширить LVM physical volume и logical volume;
  • увеличить файловую систему ext4 или XFS;
  • диагностировать типичные проблемы.

Проверка дисков VM в Proxmox VE

Выберите виртуальную машину.

Откройте:

VM → Hardware

В списке могут быть диски:

scsi0
virtio0
sata0
ide0

Определите диск, который требуется увеличить.

Для системного диска часто используется:

scsi0

Проверка через CLI

На узле Proxmox:

qm config VM_ID

Пример:

qm config 100

Только диски:

qm config VM_ID |
grep -E '^(scsi|virtio|sata|ide)[0-9]+:'

Пример:

scsi0: local-lvm:vm-100-disk-0,size=32G

Здесь текущий размер:

32G

Проверка свободного места на storage

pvesm status

Для LVM-thin:

lvs

Для ZFS:

zpool list
zfs list

Для файлового storage:

df -h

Убедитесь, что storage имеет достаточно свободного места для увеличения диска и дальнейшего роста данных.

Создание резервной копии

Перед изменением создайте backup.

Пример:

vzdump VM_ID   --storage BACKUP_STORAGE   --mode snapshot   --compress zstd

Дождитесь:

TASK OK

Наличие снапшота полезно, но не заменяет отдельную резервную копию.

Проверка разметки внутри гостя

Войдите в VM.

Покажите диски:

lsblk

Подробно:

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

Проверьте файловые системы:

df -hT

Проверьте разделы:

sudo fdisk -l

Сохраните вывод:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS   > ~/lsblk-before-resize.txt

Определение схемы диска

Часто встречаются два варианта.

Обычный раздел

Пример:

sda
└─sda1 ext4 /

LVM

Пример:

sda
└─sda3 LVM2_member
  └─ubuntu--vg-ubuntu--lv ext4 /

Порядок расширения зависит от схемы.

Увеличение через веб-интерфейс

Откройте:

VM → Hardware

Выберите нужный диск.

Нажмите:

Disk Action → Resize

Укажите, на сколько увеличить диск.

Пример:

20 GiB

Это добавит 20 GiB к текущему размеру.

Если диск был 32 GiB, после операции он станет 52 GiB.

Нажмите:

Resize disk

Увеличение через CLI

Базовая команда:

qm resize VM_ID DISK +SIZE

Пример:

qm resize 100 scsi0 +20G

Проверьте конфигурацию:

qm config 100 |
grep '^scsi0:'

Указание итогового размера

Вместо добавления можно задать итоговый размер:

qm resize 100 scsi0 64G

Новый размер должен быть больше текущего.

Для снижения риска удобнее использовать добавление:

+20G

Проверка нового размера в гостевой ОС

Во многих случаях Linux обнаруживает новый размер автоматически.

Проверьте:

lsblk

Если размер диска не изменился, выполните повторное сканирование.

Для SCSI-диска:

echo 1 |
sudo tee /sys/class/block/sda/device/rescan

Замените:

sda

на фактическое имя диска.

Повторно:

lsblk

При необходимости перезагрузите VM:

sudo reboot

Вариант 1: обычный раздел ext4

Пример разметки:

/dev/sda1

установлен как:

/

Проверьте:

findmnt /

Установка growpart

Для Ubuntu и Debian:

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

Команда growpart входит в этот пакет.

Расширение раздела

Если корневой раздел:

/dev/sda1

выполните:

sudo growpart /dev/sda 1

Проверьте:

lsblk

Раздел sda1 должен занять доступное свободное пространство.

Расширение ext4

sudo resize2fs /dev/sda1

Проверьте:

df -hT /

Вариант 2: LVM на разделе

Пример:

/dev/sda3

является physical volume LVM.

Проверьте:

sudo pvs
sudo vgs
sudo lvs

Расширение раздела LVM

Если LVM находится в третьем разделе:

sudo growpart /dev/sda 3

Проверьте:

lsblk

Расширение physical volume

sudo pvresize /dev/sda3

Проверьте свободное место в volume group:

sudo vgs

В поле:

VFree

должно появиться свободное пространство.

Определение logical volume

sudo lvs

Для корневой файловой системы имя может быть:

/dev/mapper/ubuntu--vg-ubuntu--lv

или:

/dev/ubuntu-vg/ubuntu-lv

Проверьте:

findmnt /

Расширение logical volume на всё свободное место

sudo lvextend   -l +100%FREE   /dev/ubuntu-vg/ubuntu-lv

Замените путь на фактический.

Проверьте:

sudo lvs

Одновременное расширение LV и файловой системы

Команда:

sudo lvextend   -r   -l +100%FREE   /dev/ubuntu-vg/ubuntu-lv

Параметр:

-r

запускает расширение файловой системы автоматически.

После выполнения:

df -hT /

Расширение ext4 вручную

Если logical volume уже увеличен, но файловая система ещё нет:

sudo resize2fs   /dev/ubuntu-vg/ubuntu-lv

Проверьте:

df -hT /

Расширение XFS

XFS расширяется по точке монтирования.

Проверьте:

df -hT /

Если тип:

xfs

после увеличения LV выполните:

sudo xfs_growfs /

Проверьте:

df -hT /

Для XFS команда resize2fs не используется.

Расширение отдельного раздела данных

Пример:

/dev/sdb1

установлен в:

/data

Проверьте:

findmnt /data

Расширьте раздел:

sudo growpart /dev/sdb 1

Для ext4:

sudo resize2fs /dev/sdb1

Для XFS:

sudo xfs_growfs /data

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

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
df -hT

Для LVM:

sudo pvs
sudo vgs
sudo lvs

Убедитесь, что:

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

Проверка ошибок файловой системы

Для ext4 можно посмотреть последние сообщения ядра:

sudo journalctl -k -b --no-pager |
grep -iE 'ext4|I/O error|filesystem'

Для XFS:

sudo journalctl -k -b --no-pager |
grep -iE 'xfs|I/O error|filesystem'

Проверка сервисов

systemctl --failed

Проверьте приложение:

systemctl status SERVICE_NAME --no-pager

Проверьте свободное место:

df -h

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

После увеличения виртуального диска может появиться предупреждение о том, что резервная GPT-таблица находится не в конце диска.

growpart обычно корректно обрабатывает такую ситуацию.

Проверить:

sudo parted /dev/sda print

Не изменяйте partition table вручную без резервной копии.

Если growpart сообщает NOCHANGE

Пример:

NOCHANGE: partition 1 is size ...

Возможные причины:

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

Проверьте:

lsblk
sudo fdisk -l /dev/sda
sudo parted /dev/sda print free

Если используется swap-раздел после корневого

Пример:

sda1 /
sda2 swap

Свободное место может находиться после swap-раздела, поэтому sda1 нельзя расширить напрямую.

Возможные варианты:

  • перенести или удалить swap-раздел;
  • создать новый раздел;
  • добавить отдельный виртуальный диск;
  • использовать LVM;
  • выполнить offline-переразметку.

Такую схему лучше рассматривать отдельно.

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

Для зашифрованной системы порядок может быть таким:

  1. увеличить виртуальный диск;
  2. увеличить partition;
  3. увеличить LUKS container;
  4. выполнить pvresize;
  5. увеличить LV;
  6. увеличить файловую систему.

Пример команды:

sudo cryptsetup resize CRYPT_NAME

Перед изменением зашифрованного диска обязательна проверенная резервная копия.

Добавление нового диска вместо расширения

Иногда безопаснее добавить отдельный виртуальный диск:

scsi1

Это удобно для:

  • /data;
  • логов;
  • backup;
  • базы данных;
  • пользовательских файлов.

Отдельный диск проще переносить, резервировать и контролировать.

Что нельзя делать

Не используйте:

fdisk
parted
lvreduce
resize2fs

в режиме уменьшения без отдельного плана и резервной копии.

Не удаляйте раздел и не создавайте его заново, если не уверены в точных границах.

Не изменяйте диск, если не определили его назначение.

Типичные проблемы

Proxmox показывает новый размер, а Linux — старый

Выполните rescan:

echo 1 |
sudo tee /sys/class/block/sda/device/rescan

Либо перезагрузите VM.

Раздел увеличен, а df показывает старый размер

Не расширена файловая система.

Для ext4:

sudo resize2fs DEVICE

Для XFS:

sudo xfs_growfs MOUNTPOINT

pvresize не видит новое место

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

lsblk
sudo growpart /dev/sda PARTITION_NUMBER

Затем повторите:

sudo pvresize /dev/sdaPARTITION_NUMBER

lvextend завершился, но место не появилось

Проверьте файловую систему:

df -hT

Если не использовался -r, расширьте её отдельно.

Выбран неверный диск

Проверьте соответствие через:

qm config VM_ID

и внутри гостя:

lsblk -o NAME,SIZE,MODEL,SERIAL

Перед изменением остановитесь и подтвердите правильный диск.

Storage Proxmox заполнен

Проверьте:

pvesm status

Для LVM-thin:

lvs -a -o+data_percent,metadata_percent

Не увеличивайте виртуальные диски, если thin pool близок к заполнению.

Безопасный порядок увеличения

  1. Создать резервную копию.
  2. Проверить storage Proxmox.
  3. Зафиксировать qm config.
  4. Зафиксировать lsblk и df -hT.
  5. Увеличить виртуальный диск.
  6. Проверить новый размер в госте.
  7. Расширить partition.
  8. Для LVM выполнить pvresize.
  9. Увеличить logical volume.
  10. Увеличить файловую систему.
  11. Проверить сервисы и журнал ядра.

Быстрый набор команд для обычного ext4

На узле Proxmox:

qm resize VM_ID scsi0 +20G

В гостевой системе:

sudo apt install -y cloud-guest-utils
sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1
df -hT /

Быстрый набор команд для LVM и ext4

На узле:

qm resize VM_ID scsi0 +20G

В госте:

sudo apt install -y cloud-guest-utils
sudo growpart /dev/sda 3
sudo pvresize /dev/sda3
sudo lvextend   -r   -l +100%FREE   /dev/ubuntu-vg/ubuntu-lv
df -hT /

Используйте фактический номер раздела и путь logical volume.

Итог

После выполнения инструкции:

  • определён нужный диск VM;
  • проверено свободное место на storage;
  • увеличен виртуальный диск;
  • расширен обычный partition или LVM;
  • увеличена файловая система ext4 или XFS;
  • проверены итоговый размер и работа сервисов;
  • рассмотрены типичные проблемы.

Размер виртуального диска следует увеличивать только после проверки разметки и создания резервной копии.

← Предыдущая статья Мониторинг ресурсов узла Proxmox VE Следующая статья → Клонирование виртуальной машины в Proxmox VE