Проблема
После удаления данных на виртуальной машине (ВМ) в веб-интерфейсе платформы отображается реальный объём занятого файлового пространства, но размер диска ВМ на узле кластера не изменился. Например, фактический объём диска составляет 7,9 GB, а в веб-интерфейсе платформы отображается 3,1 GB.
Причина
Динамическое выделение пространства для виртуальных дисков в файловом хранилище работает только в сторону увеличения. Автоматического уменьшения диска после удаления файлов не происходит. Это ограничение библиотеки libguestfs.
Диагностика
Чтобы подтвердить причину проблемы:
- Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Проверьте фактический размер диска ВМ:
du -sh /путь/к/диску_ВМПояснения:Пример командыdu -sh /vm/8_test-alma8 7,9G /vm/8_test-alma8/vm/8_test-alma8— путь к диску ВМ на узле.
- Сравните полученное значение с тем, что отображается в платформе:
Если вывод команды du показывает большее значение, чем веб-интерфейс платформы, проблема подтверждена. Диск ВМ фактически занимает большее пространство, чем это отображается в веб-интерфейсе платформы.
Решение
Вы можете уменьшить размер файла ВМ вручную с помощью утилиты virt-sparsify. Подробнее об утилите см. в официальной документации libguestfs.
Чтобы решить проблему:
- Выключите ВМ. Перейдите в раздел Виртуальные машины → выберите ВМ → меню
→ Остановить.
Внимание!Это необходимо, потому что утилита virt-sparsify требует монопольного доступа к файлу диска. Если ВМ останется включённой, она будет постоянно изменять данные на диске во время работы утилиты. Это может привести к повреждению файловой системы внутри ВМ и потере данных. - Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
-
Переименуйте файл виртуального диска:
mv /vm/8_test-alma8 /vm/8_test-alma8.bakПояснения:
/vm/8_test-alma8— исходный файл виртуального диска;/vm/8_test-alma8.bak— новый файл-резервная копия исходного файла.
- Создайте сжатый файл диска:
virt-sparsify /vm/8_test-alma8.bak /vm/8_test-alma8virt-sparsify прочитает резервную копию
Пояснения:test-1.bakи создаст новый сжатый файлtest-1./vm/8_test-alma8.bak— исходный несжатый файл;/vm/8_test-alma8— новый сжатый файл.
- Запустите ВМ. Перейдите в раздел Виртуальные машины → выберите ВМ → меню
→ Запустить. - Проверьте результат. Убедитесь, что ВМ запустилась без ошибок и утилита du показывает корректный размер диска ВМ: Пример команды и вывода
du -sh /vm/8_test-alma8 3,1G /vm/8_test-alma8Пояснения:
/vm/8_test-alma8— путь к диску ВМ на узле.
- После успешной проверки удалите резервную копию:
rm /vm/8_test-alma8.bak
Связанные статьи:
