Увеличение диска виртуальной машины в Proxmox VE
Пошаговое увеличение виртуального диска в Proxmox VE и расширение раздела и файловой системы внутри Linux-гостя.
Если виртуальной машине перестало хватать дискового пространства, размер её виртуального диска можно увеличить без пересоздания VM.
Операция состоит из двух этапов:
- увеличение виртуального диска в Proxmox VE;
- расширение раздела, 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
Для зашифрованной системы порядок может быть таким:
- увеличить виртуальный диск;
- увеличить partition;
- увеличить LUKS container;
- выполнить
pvresize; - увеличить LV;
- увеличить файловую систему.
Пример команды:
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 близок к заполнению.
Безопасный порядок увеличения
- Создать резервную копию.
- Проверить storage Proxmox.
- Зафиксировать
qm config. - Зафиксировать
lsblkиdf -hT. - Увеличить виртуальный диск.
- Проверить новый размер в госте.
- Расширить partition.
- Для LVM выполнить
pvresize. - Увеличить logical volume.
- Увеличить файловую систему.
- Проверить сервисы и журнал ядра.
Быстрый набор команд для обычного 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;
- проверены итоговый размер и работа сервисов;
- рассмотрены типичные проблемы.
Размер виртуального диска следует увеличивать только после проверки разметки и создания резервной копии.