База знаний VMmanager
Режим фокусировки

Не уменьшается размер диска ВМ

Проблема

После удаления данных на виртуальной машине (ВМ) в веб-интерфейсе платформы отображается реальный объём занятого файлового пространства, но размер диска ВМ на узле кластера не изменился. Например, фактический объём диска составляет 7,9 GB, а в веб-интерфейсе платформы отображается 3,1 GB.

Внимание!
Инструкция актуальна только для файлового хранилища.

Причина

Динамическое выделение пространства для виртуальных дисков в файловом хранилище работает только в сторону увеличения. Автоматического уменьшения диска после удаления файлов не происходит. Это ограничение библиотеки libguestfs.

Диагностика

Чтобы подтвердить причину проблемы:

  1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Проверьте фактический размер диска ВМ:
    du -sh /путь/к/диску_ВМ
    Пример команды
    du -sh /vm/8_test-alma8
    7,9G	/vm/8_test-alma8
    Пояснения:
    • /vm/8_test-alma8 — путь к диску ВМ на узле.
  3. Сравните полученное значение с тем, что отображается в платформе:
    1. Перейдите в раздел Виртуальные машины → выберите ВМ → кнопка Параметры.
    2. В разделе Информация откройте вкладку Storage, GB и проверьте значение.

Если вывод команды du показывает большее значение, чем веб-интерфейс платформы, проблема подтверждена. Диск ВМ фактически занимает большее пространство, чем это отображается в веб-интерфейсе платформы.

Решение

Вы можете уменьшить размер файла ВМ вручную с помощью утилиты virt-sparsify. Подробнее об утилите см. в официальной документации libguestfs.

Внимание!
Перед выполнением инструкции создайте резервную копию ВМ. Подробнее см. в статье Создание резервных копий вручную.

Чтобы решить проблему:

  1. Выключите ВМ. Перейдите в раздел Виртуальные машины → выберите ВМ → меню Остановить.
    Внимание!
    Это необходимо, потому что утилита virt-sparsify требует монопольного доступа к файлу диска. Если ВМ останется включённой, она будет постоянно изменять данные на диске во время работы утилиты. Это может привести к повреждению файловой системы внутри ВМ и потере данных.
  2. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  3. Переименуйте файл виртуального диска:

    mv /vm/8_test-alma8 /vm/8_test-alma8.bak

    Пояснения:

    • /vm/8_test-alma8 — исходный файл виртуального диска;
    • /vm/8_test-alma8.bak — новый файл-резервная копия исходного файла.
  4. Создайте сжатый файл диска:
    virt-sparsify /vm/8_test-alma8.bak /vm/8_test-alma8

    virt-sparsify прочитает резервную копию test-1.bak и создаст новый сжатый файл test-1.

    Пояснения:
    • /vm/8_test-alma8.bak — исходный несжатый файл;
    • /vm/8_test-alma8 — новый сжатый файл.
  5. Запустите ВМ. Перейдите в раздел Виртуальные машины → выберите ВМ → меню Запустить.
  6. Проверьте результат. Убедитесь, что ВМ запустилась без ошибок и утилита du показывает корректный размер диска ВМ:
    Пример команды и вывода
    du -sh /vm/8_test-alma8
    3,1G	/vm/8_test-alma8
    

    Пояснения:

    • /vm/8_test-alma8 — путь к диску ВМ на узле.
  7. После успешной проверки удалите резервную копию:
    rm /vm/8_test-alma8.bak