I just read an article that Apple is disabling the TRIM function for third-party SSDs in the Yosemite OS update. I have installed third-party SSD drives (in my case Samsung) and until I saw the article was thinking about updating from Mavericks. Should I hold off and what does this mean in the long run?
Let’s start with some words of explanation.
About SSDs and LBA
An SSD writes small bits data to ‘pages,’ and multiple pages make up blocks. The SSD uses something called Logical Block Addressing (LBA) to keep track of which pages and blocks have information on them. This is a kind of map that details which pages and blocks are and aren’t occupied with ‘good’ data. When you delete information from an SSD, that information isn’t really deleted. Rather, a reference to it is removed from the LBA and it’s marked as invalid data. When the drive can’t find any remaining open pages, it looks for the pages that contain invalid data to erase to make room for the fresh stuff.
The difficulty is that the drive can’t erase individual pages. It has to overwrite blocks. So if you have a block where half the data is good and half invalid, you have to move the good data to another location before you can erase the block. This takes time and slows down the drive’s performance.
The controllers within SSDs have a technology called ‘garbage collection’ that moves the data within pages – both the good and invalid data – to new blocks and then erases the old ones. TRIM works at the operating system level and ensures that only the good data is moved. Invalid data is erased when the drive is otherwise idle. In sum, the two technologies speed up the drive’s performance so that it’s not performing a lot of needless move and erase actions.
Where Yosemite fits in
If you purchase a Mac with an SSD or Fusion drive built in, the TRIM technology is working away in the background to keep your drive running at its peak. However, if you’ve installed a third-party SSD, that drive doesn’t use TRIM because Apple’s TRIM technology is not built to support it. Instead, you’d do some Terminal work or use a third-party tool such as Cindori Software’s Trim Enabler to make TRIM work with your drive.
This worked perfectly well with Mavericks. Yosemite, however, introduced a twist. With Yosemite, kernel extension (kext) files must be ‘signed’ (or approved) by Apple for security reasons. And there’s the issue. The workarounds that allow TRIM to function with third-party SSDs require that kext files are modified. If Yosemite encounters such a modified kext file, it won’t run. In cases where you have such a modified extension installed, your Mac won’t be able to boot from the drive. Without it, you can boot from the SSD but it won’t run with the benefit of TRIM.
What options do you have?
The only way to allow TRIM to work with third-party drives under Yosemite is to disable kext signing. Unfortunately, you can’t do this on an extension-by-extension basis. Instead, you have to turn it off globally. And when you do, this opens the security hole that Apple has attempted to close. Because I think it’s a terrible idea to disable this security measure I won’t provide you with the steps necessary to make it happen. (There’s a big wide internet out there that will guide you if you want to pursue this course.)
Another option is to get an SSD that uses the SandForce processor, which some claim makes TRIM unnecessary. OWC’s Mercury line of SSDs use this processor.
You could also take your Mac to Apple and ask them to install an SSD that will work with their driver.
And finally, you can send Apple feedback and suggest that in a future update they make Yosemite compatible with TRIM and third-party SSDs.