🔧 Решение проблемы с нередактируемым размером диска
Если поле "размер хранилища" неактивно (серое), это означает, что VM запущена или есть снапшоты.
🛑 Шаг 1: Полное выключение VM
bash Скопировать
Закрыть блок
# В самой VM выполните:
sudo shutdown -h now
# Или в Virtual Machine Manager:
# Правый клик на VM → Shut Down (НЕ Suspend!)
Убедитесь, что статус VM показывает "Shut off", а не "Paused" или "Running"
📸 Шаг 2: Проверка и удаление снапшотов
- В Virtual Machine Manager выберите вашу VM
- Перейдите в View → Snapshots (или нажмите на иконку камеры)
- Если есть снапшоты - удалите их или объедините с основным диском
- Важно: снапшоты блокируют изменение размера диска
💿 Шаг 3: Альтернативный способ через командную строку
Если GUI не работает, используйте команды:
bash Скопировать
Закрыть блок
# Найти вашу VM
sudo virsh list --all
# Убедиться что VM выключена
sudo virsh shutdown centos9-vm # замените на имя вашей VM
# Проверить информацию о дисках
sudo virsh domblklist centos9-vm
# Увеличить размер диска (например до 50GB)
sudo qemu-img resize /var/lib/libvirt/images/centos9.qcow2 50G
# Проверить новый размер
sudo qemu-img info /var/lib/libvirt/images/centos9.qcow2
🔄 Шаг 4: Обновление конфигурации VM
После изменения размера через командную строку:
bash Скопировать
Закрыть блок
# Обновить XML конфигурацию VM
sudo virsh edit centos9-vm
Или просто перезапустите Virtual Machine Manager.
🆕 Шаг 5: Создание нового диска (если ничего не помогает)
-
В Virtual Machine Manager:
<li>Add Hardware → Storage
- Create a disk image → укажите нужный размер
- Device type: VirtIO disk
- Finish
-
Запустите VM и подключите новый диск:
bash Скопировать
Закрыть блок
# Найти новый диск
lsblk
# Создать раздел
sudo fdisk /dev/vdb
# Нажмите: n → p → 1 → Enter → Enter → w
# Создать файловую систему
sudo mkfs.xfs /dev/vdb1
# Создать папку и примонтировать
sudo mkdir /data
sudo mount /dev/vdb1 /data
# Добавить в автозагрузку
echo "/dev/vdb1 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
🔍 Диагностика проблемы
Проверьте следующее:
bash Скопировать
Закрыть блок
# Статус VM
sudo virsh list --all
# Информация о диске
sudo qemu-img info /var/lib/libvirt/images/ваш-диск.qcow2
# Проверка снапшотов
sudo virsh snapshot-list centos9-vm
⚡ Быстрое решение:
- Полностью выключите VM (не suspend!)
- Удалите все снапшоты если есть
- Перезапустите Virtual Machine Manager
- Попробуйте изменить размер снова
Если поле все еще неактивно, используйте командную строку с `qemu-img resize`.
Проверка состояния диска после увеличения
Шаг 1: Проверить текущее состояние
bash Скопировать
Закрыть блок
# Проверить размер файловой системы
df -h
# Проверить структуру дисков
lsblk
# Детальная информация о дисках
fdisk -l
Вы увидите что-то вроде:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 8:0 0 50G 0 disk # ← диск увеличен до 50GB
├─vda1 8:1 0 1G 0 part /boot
└─vda2 8:2 0 29G 0 part # ← раздел остался 29GB
├─cs-root 253:0 0 27G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
🔧 Расширение раздела (НУЖНО ДЕЛАТЬ!)
Для CentOS 9 с LVM (стандартная установка):
bash Скопировать
Закрыть блок
# 1. Расширить физический раздел
sudo growpart /dev/vda 2
# 2. Проверить что раздел увеличился
lsblk
# 3. Расширить физический том LVM
sudo pvresize /dev/vda2
# 4. Проверить доступное место в группе томов
sudo vgdisplay
# 5. Расширить логический том (корневой раздел)
sudo lvextend -l +100%FREE /dev/cs/root
# 6. Расширить файловую систему XFS
sudo xfs_growfs /
Проверка результата:
bash Скопировать
Закрыть блок
# Проверить новый размер
df -h
# Должно показать примерно 47-48GB вместо 27GB
lsblk
📊 Пошаговая диагностика
1. Установить необходимые утилиты (если нужно):
bash Скопировать
Закрыть блок
# Если growpart не найдена
sudo dnf install cloud-utils-growpart
# Если нужны LVM утилиты
sudo dnf install lvm2
2. Детальная проверка LVM:
bash Скопировать
Закрыть блок
# Информация о физических томах
sudo pvdisplay
# Информация о группах томов
sudo vgdisplay
# Информация о логических томах
sudo lvdisplay
3. Проверка типа файловой системы:
bash Скопировать
Закрыть блок
# Узнать тип ФС
mount | grep " / "
# Или
lsblk -f
🎯 Быстрый скрипт для автоматизации:
bash Скопировать
Закрыть блок
#!/bin/bash
echo "=== DISK EXPANSION SCRIPT ==="
echo "Current disk usage:"
df -h /
echo -e "\nCurrent disk structure:"
lsblk
echo -e "\nExpanding partition..."
sudo growpart /dev/vda 2
echo -e "\nResizing PV..."
sudo pvresize /dev/vda2
echo -e "\nExtending LV..."
sudo lvextend -l +100%FREE /dev/cs/root
echo -e "\nGrowing filesystem..."
sudo xfs_growfs /
echo -e "\nNew disk usage:"
df -h /
echo -e "\nNew disk structure:"
lsblk
Сохраните как `expand_disk.sh` и запустите:
bash Скопировать
Закрыть блок
chmod +x expand_disk.sh
./expand_disk.sh
⚠️ Важные моменты:
- Обязательно нужно расширять - иначе дополнительные 20GB не будут использоваться
- CentOS 9 использует XFS по умолчанию, а не ext4
- Команды безопасны - они только увеличивают размер
- Данные не потеряются при правильном выполнении
🔍 Если что-то пошло не так:
bash Скопировать
Закрыть блок
# Проверить ошибки в логах
sudo journalctl -xe
# Принудительная проверка диска (только если проблемы)
sudo xfs_repair -n /dev/cs/root # только проверка
Начните с команды `df -h` и `lsblk` - покажите результат, чтобы я мог точно сказать, что делать дальше!
[root@nashilocal ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.7M 1.5G 1% /run
/dev/mapper/cs-root 26G 18G 8.3G 69% /
/dev/vda1 960M 249M 712M 26% /boot
tmpfs 750M 4.0K 750M 1% /run/user/0
[root@nashilocal ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 2K 0 rom
vda 252:0 0 50G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 29G 0 part
├─cs-root 253:0 0 26G 0 lvm /
└─cs-swap 253:1 0 3G 0 lvm [SWAP]
[root@nashilocal ~]# fdisk -l
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5fd2cc3d
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 62914559 60815360 29G 8e Linux LVM
Disk /dev/mapper/cs-root: 26 GiB, 27913093120 bytes, 54517760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cs-swap: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@nashilocal ~]#
✅ Отлично! Диск увеличен, но нужно расширить разделы
Вижу что:
- Диск vda: увеличен до 50GB ✅
- Раздел vda2: остался 29GB (нужно расширить)
- Корневая ФС: использует только 26GB из 50GB доступных
🔧 Расширяем до полного размера:
Шаг 1: Расширить раздел vda2
bash Скопировать
Закрыть блок
growpart /dev/vda 2
Шаг 2: Проверить что раздел увеличился
bash Скопировать
Закрыть блок
lsblk
# Должно показать vda2 около 49G вместо 29G
Шаг 3: Расширить физический том LVM
bash Скопировать
Закрыть блок
pvresize /dev/vda2
Шаг 4: Проверить доступное место
bash Скопировать
Закрыть блок
vgdisplay | grep "Free"
Шаг 5: Расширить логический том
bash Скопировать
Закрыть блок
lvextend -l +100%FREE /dev/cs/root
Шаг 6: Расширить файловую систему
bash Скопировать
Закрыть блок
xfs_growfs /
Шаг 7: Проверить результат
bash Скопировать
Закрыть блок
df -h
# Должно показать около 46-47GB вместо 26GB для корневой ФС
🚀 Выполните все команды подряд:
bash Скопировать
Закрыть блок
echo "=== Expanding partition ==="
growpart /dev/vda 2
echo -e "\n=== New partition structure ==="
lsblk
echo -e "\n=== Resizing physical volume ==="
pvresize /dev/vda2
echo -e "\n=== Available space in VG ==="
vgdisplay | grep -E "(VG Name|Free)"
echo -e "\n=== Extending logical volume ==="
lvextend -l +100%FREE /dev/cs/root
echo -e "\n=== Growing XFS filesystem ==="
xfs_growfs /
echo -e "\n=== Final result ==="
df -h /
lsblk
После выполнения у вас должно быть:
- Корневая ФС (/): ~46-47GB вместо 26GB
- Свободное место: ~28GB вместо 8GB
-
🔧 Установим необходимую утилиту
Шаг 1: Установить cloud-utils-growpart
bash Скопировать
Закрыть блок
dnf install -y cloud-utils-growpart
Шаг 2: После установки выполнить расширение
bash Скопировать
Закрыть блок
growpart /dev/vda 2
🛠️ Альтернативный способ через fdisk (если установка не работает):
bash Скопировать
Закрыть блок
# 1. Запустить fdisk
fdisk /dev/vda
# 2. В интерактивном режиме выполнить:
# p # показать разделы
# d # удалить раздел
# 2 # выбрать раздел 2
# n # создать новый раздел
# p # primary
# 2 # номер раздела
# 2099200 # начальный сектор (тот же что был)
# [Enter] #ор (по умолчанию - до конца диска)
# t # изменить тип
# 2 # раздел 2
# 8e # Linux LVM
# w # записать изменения
# 3. Перечитать таблицу разделов
partprobe /dev/vda
🚀 Полная последовательность команд:
bash Скопировать
Закрыть блок
# Установить утилиту
dnf install -y cloud-utils-growpart
# Расширить раздел
growpart /dev/vda 2
# Проверить результат
lsblk
# Продолжить с LVM
pvresize /dev/vda2
lvextend -l +100%FREE /dev/cs/root
xfs_growfs /
# Проверить финальный результат
df -h /
Начните с установки `cloud-utils-growpart` и покажите результат!