TRIM启动器如何工作?


8

我最近购买了第三方(OCZ)SSD,并使用Trim Enabler启用了TRIM。我注意到某些软件更新会导致TRIM被禁用,因此对TRIM启动器的工作方式感到好奇。

  • 它会用自定义的KEXT替换一些默认的KEXT以支持TRIM,还是只是切换一些PLIST设置?
  • 不管哪种方式,是否有一个文件在锁定时可以确保TRIM保持启用状态(没有任何负面影响)?

Answers:


9

Trim Enabler修补了以下Kext文件

/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

它会检查ssd是第三方还是Apple品牌的SSD:

IOAHCI十六进制/ ASCII视图

您还可以通过以下方式手动启用修剪功能:在文件中查找所有出现的“ Apple”,然后在十六进制编辑器中或通过终端对其进行修补:

##1. Backup old file
    $sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original

##2. Patch the file to enable TRIM support
    $sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

##3. Clear the system kernel extension cache

   $sudo kextcache -system-prelinked-kernel

   $sudo kextcache -system-caches

1
您甚至怎么找到这个东西?如果我运行TRIM启动器来“修补”我的IOAHCIBlockStorage文件,然后将其锁定(具有管理员权限),我会遭受任何不利影响吗?当然,我将无法支持新的PCIe SSD(我的MacBook甚至没有),但是这会阻止以后的任何更新都会逆转该补丁吗?
亚历山大-恢复莫妮卡

我最好的猜测:即使您锁定了文件的编辑权限,更新程序也只会将其完全替换为新文件。您必须从完整的文件夹中删除对root的写权限。在那种特定情况下,我假设安装程序将失败,因为它无法写入该文件夹。我认为这不值得麻烦。只需在更新后启动Trim Enabler,然后重新应用补丁即可。
克里斯(Chrisii)2013年

@Chrisii您知道这是否可以在优胜美地使用吗?它会改变kext签名吗?
thepen

@thepen我尚未测试过,但是我可以肯定地说修改文件会更改kext签名,因此要使其完全起作用,您必须首先禁用kext签名验证(有关更多信息,请参见cindori .org / trim-enabler-and-yosemite
克里斯(Chrisii

2

我可以找到的唯一信息是从FAQ /博客文章条目中

答:Trim Enabler修补了本机OSX Trim驱动程序,即使关闭或删除了该应用程序,该驱动程序仍在后台运行。此补丁会在系统更新时重置,因此保留该应用程序可能是一个好主意。


当Apple决定更新提到的内核扩展以例如支持新的ssd驱动器时(通常在WWDC上发布的新ppcie ssds的思考),该路径通常在更新时重置。
克里斯(Chrisii)2013年

2

OCZ SSD使用Sandforce控制器,该控制器具有内置的前台垃圾回收功能,可以延迟擦除块的需求,从而减少但不消除对TRIM支持的需求。修剪可以视为垃圾收集的辅助工具。

修剪VS垃圾收集

为了简短说明,闪存按页面组组织,可以在其中写入数据。写入页面后,除非将其擦除,否则无法重写。但是只能在通常称为块的128个页面组中擦除页面。在随机写入替换先前写入的数据的情况下,写入数据的复杂性实际上开始增加。随机写入将新数据放在先前擦除的页面中的其他位置,并用“无效数据片”添加有效数据块。为了将新数据写入这些补丁,必须擦除整个块(全部128页)。但是,首先必须读取所有具有有效数据的周围页面,然后将其重写为空白页面。然后,新擦除的空白页块准备保存新数据。

[…]所有基于NAND闪存的SSD均使用GC。有些使用前台GC,有些使用后台GC或空闲时间GC。我的博客http://blog.lsi.com/dont-let-ssds-throw-away-your-gold/中介绍了它们之间的区别。简而言之,后台垃圾收集将提高写入放大(WA)并更快地耗尽SSD。前景GC很难实现,我相信今天只有SandForce控制器能够做到

[…]无论使用哪种垃圾收集,TRIM对所有SSD都是有益的。在我的博客http://blog.lsi.com/did-you-know-hdds-do-not-have-a-del上,我谈论了TRIM的产生以及为什么有必要。操作系统将TRIM命令发送到SSD,以标识在垃圾回收期间可以忽略哪些数据页。在OS使用相同的扇区存储新文件之前,SSD无法确定已删除了哪些文件,但是到那时,SSD已经通过垃圾回收浪费了周期,但这些数据对于SS来说是无效的。

您知道硬盘没有删除命令吗?这就是为什么SSD需要TRIM

使您的SSD保持TRIM数年前,存储行业聚集在一起,通过创建一个称为TRIM的新SATA命令在OS和SSD之间开发了一种解决方案。这不是强制SSD像某些人所相信的那样立即擦除数据的命令。实际上,TRIM命令可被视为来自OS的消息,该消息表明SSD上先前使用的地址不再保存有效数据。SSD会获取这些地址并更新其自身的闪存内部映射,以将这些位置标记为无效。有了这些信息,SSD不再在GC流程中移动无效数据,从而消除了将无效数据重写到新的闪存页上所浪费的时间。它还减少了闪存上的写入周期数,从而提高了SSD的耐用性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.