Proxmox. Сжимаем место занимаемое QCOW2 дисками

У вас Гипервизор Proxmox и вы создали образ диска для гостевой виртуальной машины больше чем нужно. Со временем машина стала разрастаться, но вы вовремя это заметили и удалили данные внутри нее. Теперь задачка стоит как “сжать контейнер qcow2 виртуального диска”. Не проблема.

Дисклеймер: всегда делайте резервные копии, мало ли что!

Со временем файлы гоcтевых *.qcow2 дисков могут начать занимать больше места чем фактические данные, которые они хранят. Это происходит потому, что гостевые системы при удалении файлов обычно просто помечают их нулями, но не удаляют их по факту (по причинам производительности). Поэтому в содержащим данные qcow2 файле не видно разницы между распределенным и используемым и распределенным и неиспользуемым пространством.

Для того чтобы сжать *.qcow2 файл есть два выхода: включить поддержку TRIM или пометить нулями все свободное пространство гостевой системы, а затем переконвертировать образ диска с помощью qemu-img.

Рекомендуемый план действий:

  • Добиваетесь, чтобы нужный диск был корректно подключен в Proxmox
  • Запускаете на гостевой машине TRIM вместе с оптимизацией пространства
  • PROFIT!

Рекомендуемое решение через использование TRIM

Решать проблему рекомендуется передачей команд TRIM (которые используются при работе с SSD) из VM в хранилище гипервизора. Преимущества такого подхода в том, что он работает в автоматическом режиме, не требует перезаписи всех свободных разделов всех дисков и настраивается только единожды.

Конфигурация PVE

Требования:

  • Хранилище гипервизора должно быть thin-provisioned, то есть это должен быть qcow2 диск или thin-lvm или zfs …
  • Диск должен быть подключен на гостевую систему через Virtio-SCSI контроллер
  • На гостевых scsi* дисковых контейнерах должна быть включена опция discard

Нужны подробности? Посмотрите: Qemu trim/discard and virtio scsi

Еще раз. Чтобы все сработало, ваш диск должен быть подключен к гипервизору по шине SCSI к контроллеру Virtio SCSI и для него должна быть включена опция Discard:

Конфигурирование гостевых ОС Linux

Для того чтобы запустить TRIM и освободить все неиспользуемое пространство в современных ОС Linux используется распространенная команда:

fstrim -av

Большинство современных дистрибутивов Linux изначально имеют преднастроенный таймер cron, который выполняет TRIM примерно раз в неделю.

Конфигурирование гостевых ОС Windows

Для систем которые поддерживаю TRIM (Win7/2008R2 и позднее) ничего настраивать не нужно. Windows сама периодически запускает TRIM

Проверить, включен ли TRIM в ОС Windows

Можно командой:

fsutil behavior query DisableDeleteNotify

Она должна возвратить 0 если TRIM включен:

fsutil behavior set DisableDeleteNotify 0

Ручной запуск TRIM на ОС Windows

Запустить TRIM и очистку Windows вручную возможно через Powershell командой:

Optimize-Volume -DriveLetter БУКВА_ВАШЕГО_ДИСКА -ReTrim -Verbose

Где вместо БУКВА_ВАШЕГО_ДИСКА надо подставить соответственно букву диска который вы хотите оптимизировать.

Решение вручную

Этот путь больше не рекомендуется и может использоваться для устаревших систем типа Windows XP и более ранних и старых дистрибутивов Linux которые не поддерживают fstrim.

За ручным вариантом решения прочитайте официальную документацию Proxmox: https://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files

Возможные проблемы и их решение

Виртуальный диск гостевой системы Proxmox всегда можно отключить и подключить заново с нужными параметрами. Для этого придется погасить виртуальную машину.

Ваш виртуальный диск был изначально подключен не по шине SCSI

В этом случае после включения гостевая ОС Windows может не загрузиться, так как не найдет драйверов SCSI.

Вам потребуется выключить машину, подключить новый SCSI диск любого размера и скачать и подключить диск с Virtio драйверами для гостевых систем. Затем нужно загрузить гостевую ОС в работающем режиме и установить SCSI драйвер для нового подключенного SCSI диска. После этого снова выключить гостевую машину, перевести “боевой” диск на SCSI и гостевая Windows запустится.

Ссылки

https://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files

https://winaero.com/trim-ssd-windows-10/

Оставьте ответ

Ваш адрес email не будет опубликован.

64 ÷ = 8