Назад | Перейти на главную страницу

Несоответствие между размером VHDX и тем, что сообщает ОС

У меня есть виртуальная машина ubuntu 16.04 на сервере Server 2012 R2 Hyper-V.

Размер VHDX (динамически расширяемый VHD) составляет 1,8 ТБ, но внутренняя виртуальная машина сообщает, что используется только 3% диска.

Я не понимаю, почему HV считает, что диск заполнен. С чем может быть связано?

Виртуальный диск имитирует любой установленный вами размер, о чем сообщит гость.

Если резервное физическое хранилище заполняется, запись должна прекратиться или повреждение обязательно. Использование гостевой файловой системы не обязательно указывает, когда это происходит из-за удаленных файлов или других операций записи в «свободное» пространство. Это классическая проблема с разреженными файлами или тонким выделением ресурсов.

Итак, вот что я пробовал, но наполовину успешно:

https://helgeklein.com/blog/2016/11/faster-trimming-compacting-hyper-v-ubuntu-vms/

sudo fstrim -v / -> On the VM

gci -File -Filter *.vhd* -Path D:\VMs -Recurse | % {Mount-VHD $_.FullName -ReadOnly; Optimize-VHD $_.FullName -Mode full; Dismount-VHD $_.FullName} --> On the HV Host

Размер VHDX уменьшился примерно на 1,5 ТБ, и это здорово. Но я не могу допустить, чтобы это происходило постоянно, есть несколько серверов с одинаковой / похожей работой, и я не вижу такого поведения ни на одном из них. Буду обновлять позже.

Логика?

  • Когда-то он был заполнен, и содержимое было удалено.
  • ОС всегда выделяет новые блоки (стратегия копирования при записи), увеличивая размер VHDX.
  • Кто-то запустил какой-то инструмент очистки в виртуальной машине, случайным образом перезаписав весь диск

Вроде того.

Hyper-V считает, что диск не заполнен. Он выделяет новые блоки по мере их написания - а затем вообще не заботится о них. Логически это небольшое отличие от фактического отслеживания того, заполнен ли диск или нет.