优化 Mac OS X SSD 性能的十个技巧(上集)

随着SSD(固态硬盘)价格的走低,越来越多人都给自己的电脑配置了SSD,甚至苹果早已经开始应用到Macbook上。但Mac OS X虽好,但仍然存在一些未对SSD进行彻底优化的细节。这里总结了一些SSD的优化技巧,希望各位既能把SSD的性能压榨到极致,也能使它更加长寿。

1. 避免在SSD上进行跑分测试

大部分人都喜欢在装上SSD后马上进行读写测试,看到抛开机械硬盘几条街的分数会感到莫名的兴奋,但这是SSD在电脑里哭泣呢!

由于技术的原因,现阶段固态硬盘均采用MLC作为主力闪存芯片,平均擦写次数为5000-10000次,而且,别看MLC的理论寿命有5000-10000 P/E,实际上不同批次芯片之间的体质差异可以很大,寿命远低于5000P/E。刚好这些硬盘测试软件的原理就是瞬间向硬盘写入/读取大量数据,从而测出性能数值。所以,别没事就跑分找乐。

2. 开启TRIM支持

TRIM是针对SSD固态硬盘所研发的技术。原因是在原本的机械硬盘上写入数据时,系统会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,系统只会在此处做个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。而这样一来,磁盘需要更多的时间来执行以上操作,速度当然会慢下来。

而当系统识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。

在OS X上有个叫做Trim Enabler的软件,可以一键开启TRIM支持,但我并不推荐大家使用软件去修改重要的设置。打开终端窗口,按着下面的步骤做,你可以手动开启/关闭TRIM支持:

备份需要修改的文件

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

修补文件开启TRIM支持

OS X 10.8.1 和 10.7.5 或更新的版本

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

OS X 10.8.0 和 10.7.4 或更低的版本

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

强制刷新系统内核扩展缓存,使设置生效

sudo touch /System/Library/Extensions/

重启!

如果电脑产生了不良反应,下面还有两剂后悔药:

a. 只是想关闭TRIM支持

如果是OS X 10.8.1 和 10.7.5 或更新的版本,运行下面这句命令

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x4D)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

如果是OS X 10.8.0 和 10.7.4 或更旧的版本,运行下面这句命令

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

sudo touch /System/Library/Extensions/

b. 系统发生了严重的问题,要恢复备份

sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
评论 7 条

  • Jun

    期待下集的出现。修改玩休眠之后设置内存的指令不太懂。 sudo rm /var/vm/sleepimage 这应该不是完整的指令,我16G内存的15年15尺寸PRO.输入的数值应该是多少??

    2015-06-13 00:28 回复

  • lubin

    00

    2014-04-08 16:42 回复

  • lubin

    。。

    2014-04-08 16:41 回复

  • Bryan

    Good! 有提升效能!

    2013-02-21 09:55 回复

  • xqiushi

    亲,期待下集哦

    2013-02-05 09:13 回复

  • leon

    没有下集了吗?

    2012-11-16 22:23 回复

    • 玩儿法

      等等吧,我们的特邀作者Bolo最近好像很忙的样子

      2012-11-16 23:06 回复