discard / TRIMを使用したWindowsホスト上のDebianゲスト。
私は問題ではなく問題に取り組んでいるので、これはそれ自体は直接的な答えではありません。このソリューションでは、イメージを定期的に圧縮する代わりに、廃棄を使用して、ホストのVMディスクイメージ内の未使用のブロックを自動的に削除します。
このソリューションには、継続的なTRIMをサポートするゲストファイルシステムが必要です。Arch Linux wikiには、TRIM操作をサポートするファイルシステムのリストがあります。
FDEと暗号ルートは、セキュリティ上の懸念があり、この質問に対する他の解決策のいずれも圧縮を許可しないため、特に対象外です。Arch Linux wikiには、TRIMおよびdm-cryptデバイスに関する情報があります。
理論的には、これはVDIストレージを使用するVBoxホスト上のすべてのLinuxゲストで機能します。
ホスト構成
VBoxが終了し、何のVMが動作していないと、両方を設定することで、あなたのディスクに廃棄サポートを追加discard
し、nonrotational
VMのための設定ファイル内の各ディスクのために。現時点discard
ではGUIにはありませんがnonrotational
、「ソリッドステートドライブ」チェックボックスとして公開されています。(参照:vboxフォーラム、サポートを破棄)
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
VMを起動し、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 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は、TRIMの疑わしいサポートがある物理SSDに推奨されますが、基礎となるSSDはホストOSによって処理されるため、ここでは関係ありません。ssdtrim warningを参照してください)。
fstrim /
fstrim /build
この時点で、VM内のファイルシステムのサイズとVMイメージのサイズはかなり近い値になっているはずです。
テスト済み:
- ゲスト1:Debian 8.7、カーネル:バックポートからのLinux 4.8 grsec、ファイルシステム:ext4
- Guest2:Debian 9 RC2、カーネル:linux 4.9、ファイルシステム:ext4
- ホスト1:VBox 5.1.14、Win7、イメージfmt:VDI
- Host2:VBox 5.1.14、Win8.1、image fmt:VDI