私はVirtualBoxで動的に割り当てられたイメージを使用するのが好きです。
これは、イメージをデプロイしたい場合に好ましい方法です(Vagrantを覚えていますか?)。
動的に割り当てられたイメージを使用すると、どのLinux FSがVirtualBoxで使用されていないブロックを回収できますか?
以下を実行しているユーザーが表示されます。
sudo dd if=/dev/zero of=/EMPTY bs=1M || : ; rm -f /EMPTY
VDI画像を縮小します。
私たちは皆、SSDドライブのTRIM ATAコマンド(discard
オプション)も知っていますmount
。
ベストアンサー1
公式文書には次のように記載されています。https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach
VBoxManage storageattach <UUID> --nonrotational
:
このスイッチを使用すると、仮想ハードディスクの回転防止フラグを有効にできます。一部のクライアント(Windows 7+など)はこれらのディスクをSSDとして扱い、そのメディアに対してディスクの最適化を実行しません。
VBoxManage storageattach <UUID> --discard
:
このスイッチを使用すると、仮想ハードディスクを自動的に削除できます。これは、ゲストオペレーティングシステムのクリーンアップコマンドに応答してVDIイメージが縮小されることを指定します。次の要件を満たす必要があります。
ディスクフォーマットはVDIでなければなりません。
削除された領域のサイズは少なくとも1 MB以上でなければなりません。
VirtualBox は 1MB ブロック全体を切り捨てます。 VDI自体は1MBブロックで構成されているため、TRIMスペースが1MB境界で少なくとも1MBの連続ブロックである場合にのみ機能します。 Windowsでは、時々デフラグ("defrag.exe / D"を使用)を実行したり、Linux上でバックグラウンドcron操作で "btrfsファイルシステムのデフラグ"を実行したりすることができます。
注:クリーンアップコマンドを実行するようにゲストオペレーティングシステムを設定する必要があります。これは通常、ゲストオペレーティングシステムがディスクをSSDに「処理」することを意味します。 Ext4 は -o drop マウントフラグをサポートします。 OSXでは追加の設定が必要な場合があります。 Windowsは、少なくともバージョン7、8、10でSSDを自動的に検出してサポートする必要があります。 Linux exFATドライバ(Samsungが提供)はTrimコマンドをサポートしています。
ファイルシステムは元々フラッシュメモリ用に設計されていましたが、MicrosoftのexFAT実装がこの機能をサポートしているかどうかは不明です。
また、util-linuxパッケージの一部であるLinux fstrimコマンドなど、Trimを実行する特別な方法があります。初期のソリューションでは、ユーザーが使用していない領域を空にし(例:Zerofreeを使用)、ディスクを明示的に圧縮する必要がありました。これは、VMがオフラインの場合にのみ可能でした。
したがって、ストレージは次のように定義されます。
<AttachedDevice discard="true" nonrotational="true" type="HardDisk">
FSと同じExt4/Btrfs/JFS/XFS/F2FS/VFATインストールが-o discard
機能するはずです...
修正するVirtualBoxのTRIMサポートは依然として不安定です。https://www.virtualbox.org/ticket/16795
また、見ることができますhttps://superuser.com/questions/646559/virtualbox-and-ssds-trim-command-support