Гость Debian на хосте Windows с помощью disk/TRIM.
Это не прямой ответ как таковой, так как я решаю проблему, а не вопрос. Вместо того, чтобы периодически сжимать образ, это решение использует диск для автоматического удаления неиспользуемых блоков в образе VM-диска хоста.
Это решение требует гостевой файловой системы, которая поддерживает непрерывный TRIM. В Arch Linux wiki есть список файловых систем, поддерживающих операции TRIM .
FDE и cryptoroot специально не рассматриваются, так как есть проблемы безопасности, и ни одно из других решений этого вопроса не позволит выполнить сжатие. В Arch Linux wiki есть информация о TRIM и dm-crypt устройствах .
Теоретически, это будет работать для всех гостей Linux на хостах VBox, использующих хранилище VDI.
Host configuration
С выходом VBox и отсутствием VM, добавьте поддержку дисков, установив discard
и nonrotational
для каждого диска в конфигурационном файле для ВМ. На данный момент discard
не находится в графическом интерфейсе, но nonrotational
выставлена флажком как “Solid-state Drive” (полупроводниковый диск). (ссылки: vbox forums, disard support )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Загрузите ВМ и убедитесь, что включена поддержка TRIM:
sudo hdparm -I /dev/sda | grep TRIM
Guest Configuration
Если используется LVM, измените настройки диска в /etc/lvm/lvm.conf
. (ref: debian wiki, lvm.conf example )
devices {
...
issue_discards = 1
}
В fstab добавьте опцию discard
в файловые системы, которые вы хотите автоматически списать (ref: debian wiki, fstab example )
UUID=8db6787f-1e82-42d8-b39f-8b7491a0523c / ext4 discard,errors=remount-ro 0 1
UUID=70bfca92-8454-4777-9d87-a7face32b7e7 /build ext4 discard,errors=remount-ro,noatime 0 1
Удалить файловые системы, чтобы они забрали свои новые опции.
sudo mount -o remount /
sudo mount -o remount /build
Теперь вручную обрезать свободные блоки с помощью fstrim
. fstrim
использует смонтированную файловую систему, а не блок-устройство, поддерживающее её. Вместо установки непрерывной отбраковки в fstab
, это можно сделать на еженедельном cron. (Еженедельная cron рекомендуется для физических SSD, которые могут иметь сомнительную поддержку TRIM, но это не относится к данному вопросу, так как основные SSD обрабатываются операционной системой хоста. см: На данный момент размер файловых систем внутри ВМ и размер образов ВМ должны быть довольно близки по значению.
- Guest1: Debian 8.7, ядро: linux 4.8 grsec из бэкспортов, файловая система: ext4
- Guest2: Debian 9 RC2, ядро: linux 4.9, файловая система: ext4
- Host1: VBox 5.1.14, Win7, образ fmt: VDI
- Host2: VBox 5.1.14, Win8.1, образ fmt: VDI