我最近购买了第三方(OCZ)SSD,并使用Trim Enabler启用了TRIM。我注意到某些软件更新会导致TRIM被禁用,因此对TRIM启动器的工作方式感到好奇。
- 它会用自定义的KEXT替换一些默认的KEXT以支持TRIM,还是只是切换一些PLIST设置?
- 不管哪种方式,是否有一个文件在锁定时可以确保TRIM保持启用状态(没有任何负面影响)?
我最近购买了第三方(OCZ)SSD,并使用Trim Enabler启用了TRIM。我注意到某些软件更新会导致TRIM被禁用,因此对TRIM启动器的工作方式感到好奇。
Answers:
Trim Enabler修补了以下Kext文件
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
它会检查ssd是第三方还是Apple品牌的SSD:
您还可以通过以下方式手动启用修剪功能:在文件中查找所有出现的“ 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
我可以找到的唯一信息是从FAQ /博客文章条目中
答:Trim Enabler修补了本机OSX Trim驱动程序,即使关闭或删除了该应用程序,该驱动程序仍在后台运行。此补丁会在系统更新时重置,因此保留该应用程序可能是一个好主意。
OCZ SSD使用Sandforce控制器,该控制器具有内置的前台垃圾回收功能,可以延迟擦除块的需求,从而减少但不消除对TRIM支持的需求。修剪可以视为垃圾收集的辅助工具。
为了简短说明,闪存按页面组组织,可以在其中写入数据。写入页面后,除非将其擦除,否则无法重写。但是只能在通常称为块的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数年前,存储行业聚集在一起,通过创建一个称为TRIM的新SATA命令在OS和SSD之间开发了一种解决方案。这不是强制SSD像某些人所相信的那样立即擦除数据的命令。实际上,TRIM命令可被视为来自OS的消息,该消息表明SSD上先前使用的地址不再保存有效数据。SSD会获取这些地址并更新其自身的闪存内部映射,以将这些位置标记为无效。有了这些信息,SSD不再在GC流程中移动无效数据,从而消除了将无效数据重写到新的闪存页上所浪费的时间。它还减少了闪存上的写入周期数,从而提高了SSD的耐用性。