Эта функция замедляет удаление файлов на родной ОС без причины, однако особенно полезна для компактных образов виртуальных машин. Некоторые форматы, например VirtualBox ' .vdi
позволяют не только динамически расти на основе распределения пространства после создания файла изображения, но также заменять блоки, состоящие исключительно из нулей, ссылками, которые уменьшают изображение до минимального размера, который лишь немного больше, чем пространство, фактически занимаемое гостевой ОС.
Поскольку гостевая ОС не знает и не должна знать, что она работает на виртуальной машине, она оставляет освобожденные блоки заполненными неиспользованными ненулевыми байтами. Это может привести к тому, что в файле образа будет выделено большое количество блоков, но не файловая система гостевой ОС, которая представляет собой большую часть ненужных данных, содержащихся в одном файле.
Нужно использовать такие инструменты, как zerofree
для ext2/3/4 или другие способы, которые полностью заполняют файл изображения до того, как компактирование с помощью обнаружения нулевых блоков может иметь место на хосте. Если хост-система не поддерживает внутреннюю дедупликацию, это очень хлопотно. В конце концов, виртуальная машина не может использоваться в течение некоторого времени, вплоть до часов, потому что обнуление требует эксклюзивного или только для чтения доступа к данным.
Можно сжать файл образа виртуальной машины без выполнения команд внутри виртуальной машины, уменьшив блоки или экстенты, которые содержат только 0, потому что они никогда не были затронуты или стали равными 0 по другим несистематическим (и невероятным) причинам. Я ищу максимизацию эффекта. И, конечно же, потребности в памяти для образов виртуальных машин можно уменьшить с помощью дедупликации, что, однако, является другой вещью.