Гость Debian на хосте Windows с использованием discard / TRIM.
Это не прямой ответ сам по себе, так как я решаю проблему, а не вопрос. Вместо того, чтобы периодически сжимать образ, это решение использует Discard для автоматического удаления неиспользуемых блоков в образе диска виртуальной машины.
Это решение требует гостевой файловой системы, которая поддерживает непрерывную TRIM. Вики Linux Arch содержит список файловых систем, поддерживающих операции TRIM .
FDE и cryptoroot конкретно не рассматриваются, так как существуют проблемы безопасности, и ни одно из других решений этого вопроса также не позволит сжать. Вики Linux Arch содержит информацию об устройствах TRIM и dm-crypt .
Теоретически, это будет работать для всех гостей Linux на хостах VBox, использующих хранилище VDI.
Конфигурация хоста
Когда VBox завершен, а виртуальные машины не запущены, добавьте поддержку Discard на свои диски, указав оба discard
и nonrotational
каждый диск в файле конфигурации для VM. В настоящее время discard
отсутствует в графическом интерфейсе, но nonrotational
отображается как флажок «Твердотельный накопитель». (ссылка: форумы vbox, поддержка отмены )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Загрузите виртуальную машину и убедитесь, что включена поддержка TRIM:
sudo hdparm -I /dev/sda | grep TRIM
Гостевая конфигурация
Если LVM используется, измените настройку сброса в /etc/lvm/lvm.conf
. (ссылка: Debian Wiki, пример lvm.conf )
devices {
...
issue_discards = 1
}
В fstab добавьте discard
опцию к файловым системам, которые вы хотите автоматически отбрасывать (ref: debian wiki, пример fstab )
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 рекомендуется для физических твердотельных накопителей, которые могут иметь сомнительную поддержку TRIM, но здесь это не актуально, поскольку базовые твердотельные накопители обрабатываются операционной системой хоста. См .: предупреждение об ssd trim ).
fstrim /
fstrim /build
На этом этапе размер файловых систем внутри ВМ и размер образов ВМ должны быть довольно близки по значению.
Протестировано с:
- Гость1: Debian 8.7, ядро: linux 4.8 grsec от backports, файловая система: ext4
- Гость 2: Debian 9 RC2, ядро: linux 4.9, файловая система: ext4
- Host1: VBox 5.1.14, Win7, образ fmt: VDI
- Host2: VBox 5.1.14, Win8.1, образ fmt: VDI