it-swarm-ja.com

FreeBSDでパーティション全体をトリムしてVirtualBoxのスペースを節約する方法

私はVirtualBox5.1.12でFreeBSD11AMD64を実行しています。

VirtualBoxでTRIMを有効にしました(nonrotational="true" discard="true"):

    <StorageControllers>
      <StorageController name="SCSI" type="LsiLogic" PortCount="16" useHostIOCache="true" Bootable="true">
        <AttachedDevice nonrotational="true" discard="true" type="HardDisk" hotpluggable="false" port="0" device="0">
          <Image uuid="{44ac75b7-286c-4178-b8e3-db597418908f}"/>
        </AttachedDevice>
        <AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="1" device="0"/>
      </StorageController>
    </StorageControllers>

そしてFreeBSDでは:

>tunefs -p /dev/da0p3
...
tunefs: trim: (-t)                enabled
...

正常に動作しています。VM内のファイルを追加または削除すると、.VDIイメージが拡大および縮小します。

しかし、TRIMを有効にしましたafter FreeBSDをインストールしました。ファイルシステムには、TRIMを有効にする前から使用されていないブロックがあると思います。

だから私の質問は-未使用のブロックがすべて解放されるようにパーティション全体をTRIMするコマンドはありますか?

2
rustyx

_fsck_ffs -E_ を使用できます:

未割り当てのブロックをクリアし、基になるデバイスにそれらが使用されていないこと、およびそれらの内容が破棄される可能性があることを通知します。これは、TRIMサポートがない、またはTRIMサポートが無効になっているシステムにマウントされているファイルシステム、およびあるデバイスから別のデバイスにコピーされているファイルシステムに役立ちます。

newfs(8)の_-E_フラグと_-t_フラグ、およびtunefs(8)の_-t_フラグを参照してください。

また、ファイルシステムもチェックするため、Linuxのfstrimよりもパフォーマンスが大幅に低下します。

2
Daniel B