我在 VirtualBox 5.1.12 中运行 FreeBSD 11 amd64。
我已经在 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
...
它运行良好,当我在虚拟机中添加或删除文件时,.VDI 图像会增大和缩小。
但是我启用了TRIM后安装 FreeBSD,我猜测文件系统上有一些在我启用 TRIM 之前未使用的块。
所以我的问题是 - 是否有一个命令可以 TRIM 整个分区,以便释放所有未使用的块?
答案1
您可以使用fsck_ffs -E
:
清除未分配的块,通知底层设备它们未被使用并且其内容可能会被丢弃。这对于安装在不支持 TRIM 或禁用 TRIM 支持的系统上的文件系统以及从一个设备复制到另一个设备的文件系统非常有用。
参见的
-E
和旗帜,以及的旗帜。-t
newfs(8)
-t
tunefs(8)
它还会检查文件系统,因此性能会比在 Linux 上差很多fstrim
。