Mac OS X 下与 SSD 相关的优化

最近刚入手一块 Intel X25-M G2 80G SSD,使用效果不错,于是整理了下面这些跟 SSD 有关的优化经验:

安装

因为 SSD 比较小,而有些数据又不是那么需要快速的访问,所以我保留了 MacBook Pro 里自带的 320G 7200 RPM 硬盘,做了如下改动:

  1. 买了一个光驱位硬盘托架,最有名,也是最贵的一种要 $99,但山寨版可以在淘宝找到,对于 Unibody 的机器来说,找 9.5mm 高的那种型号就行,比如 Fenvi 的,建议买 100 以内的。

  2. 把 MBP 拆开,SuperDrive 取下,把原来的硬盘取出,放入光驱位硬盘托架,把 SSD 接在原来的硬盘所接的 SATA 口,然后把硬盘托架安装回原来光驱的位置。这种搭配是为了保证用 SSD 做系统盘 (挂载在 / 上) 时系统能正确的让硬盘休眠。当然,如果你比较奢侈地买两块 SSD,也可以让他们组成 RAID0,这样性能就更夸张了。

  3. 给在 SSD 所在卷分区,只需要分一个区,安装系统。新的系统会把原来那块硬盘也列出来。这时修改 /etc/fstab,加入:

    /dev/disk1s2 /Users/jjgod/Downloads hfs rw
    

    这个做法是把原来那块硬盘挂载在我自己这个用户的 Downloads 目录,这样所有下载的内容都会放在这块比较大的硬盘上 (当然有用的我以后会转移到 SSD 上),考虑到 Downloads 主要起的就是一个临时的缓冲作用,这样还是比较方便的。然后重启机器,就能发现这块硬盘只被挂载在上述目录下了。

  4. 除了下载内容,我还在这个目录放以下内容:

    • VMware Fusion 的虚拟机文件,这是从别的机器复制过来的,直接放在这个卷的 /Virtual Machines 目录下,然后在 VMware Fusion 里打开就行了。需要注意的是以后 VMware 里创建新虚拟机的时候也得记住选择目录,别放在自己的 $HOME/Documents 下面了。

    • iTunes 媒体库,这个可以在 iTunes 的 Preferences -> Advanced -> iTunes Media folder location 选择。我是先在这里选好了,然后从原来的机器里导入以前的 iTunes 数据。

    • 其他下载软件的默认下载位置,包括 uTorrent, Transmission 和 aMule。

    • Steam 的游戏目录,这个可以通过创建符号链接到 $HOME/Documents/Steam Content 实现。

优化

上述安装过程后,系统已经能保证数据各自放在比较合适的地方了,参考 Mac OS X SSD Tweaks 这篇文章的介绍,我们还可以做如下优化:

  1. noatime 方式挂载系统盘,这样可以减少不必要的 I/O 次数,虽然 SSD 做这些操作非常快速,但考虑到最后访问时间这个属性其实很少用到,大家关心的一般都是最后修改时间和创建时间,所以完全可以关闭这个属性,这在 Unix/Linux 下是非常常见的文件系统优化选项。一个简单的方法是,修改 /etc/fstab,加入:

    /dev/disk0s2 / hfs rw,noatime
    

    重启后,系统盘的挂载就带上 noatime 选项了:

    $ mount | grep " / "
    /dev/disk0s2 on / (hfs, local, journaled, noatime)
    
  2. 禁用冬眠 (hibernate) 模式以节省空间。在 Mac 耗尽电池时,会进入“冬眠”模式,将内存中的所有内容写入磁盘,下次唤醒后从这些内容恢复状态。所以系统会在 /var/vm 维护一个和内存等大的 sleepimage 文件,考虑到 SSD 空间宝贵,而一般绝少会遇到耗尽电池的情况,可以禁用掉这个功能以节省空间:

    $ sudo pmset -a hibernatemode 0
    $ sudo rm /var/vm/sleepimage
    
  3. 减少临时文件的读写。

    • RAMDisk 是常见的性能优化手段,对于内存充足的机器,把频繁读写的内容放到一个用内存为存储的虚拟磁盘中,能大大加快速度。虽然 Macintosh Performance Guide 最近的一个研究表明 RAMDisk 并不能很大地提升如 Photoshop 这类软件操作的性能,至少投入产出比不是很经济,但至少用它来保存一些本来就可以随意丢弃的数据是个很好的思路。Mac OS X SSD Tweaks 提供了创建 RAMDisk 的脚本,他的做法是在系统启动时创建一个 256M 的 RAMDisk,挂载在 /private/tmp 上面。他还建议把 ~/Library/Caches 也放到 RAMDisk 里。最大的问题是,如果你长期不重启 (我一般的重启周期是 80 ~ 100 天),那有的临时文件,比如 ~/Library/Caches/com.apple.Safari/Webpage Previews/ 会增长到数百 M 甚至上 G。如果被它占满了 RAMDisk 的空间,那其他缓存数据就写不进去了。

    • 考虑到 RAMDisk 是个比较有风险的优化手段,也可以用以下方法禁用掉 Safari 的 Webpage Previews 以减少临时文件读写。如果你像我一样从来不用 Safari 的“Top Sites”功能,一定会很讨厌它凭空占用大量的空间。

      $ defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
      
    • 关闭 Spotlight 索引也是一个有用的优化手段,如果你像我这样从来不用 Spotlight 的话。

结语

  • Macintosh Performance Guide 还提供了一些更奢侈的优化手段,这里不一一介绍了,因为我自己也没试过,有兴趣可以自己尝试。值得尝试的是它提供的 DiskTester 工具有一个 recondition 功能,通过大量写空白块来优化长时间使用后的 SSD 性能。

  • “安装”部分感谢草莓数码的 iBook 和 MacBook 的帮助。

  • “优化”部分大部分思路来自 Mac OS X SSD Tweaks

Author: jjgod

A software engineer from China, working on text rendering for a fruit company. Interested in typography and science fiction.

17 thoughts on “Mac OS X 下与 SSD 相关的优化”

  1. “禁用掉 Safari 的 Webpage Previews 以减少临时文件读写”这条对我特别有用,让Safari快了很多!谢谢。

  2. 入手了同一款SSD,性能不错,就是太小,看来买个硬盘架把老的硬盘利用起来比较好,换光驱架麻烦不?

  3. @Haoran, @invalid: 换光驱架不麻烦,注意 SuperDriver 侧边有个加固的要取下来装到光驱架上。目前用着还算稳,没有听到怪异的震动或者响声。

  4. 天啊~你把SuperDrive拆了要用光驱怎么办? 外壳上就是一个光驱入口但是插不进去?!

  5. 看到你说从来不用spotlight,感到挺诧异的,请问你是用什么工具/软件代替soptlight功能的?

  6. 除了 禁用冬眠 (hibernate) 有用 其他都不用做 直接将 ~对应目录(甚至更狠一点将 /Users) 下面的东西 搬移 到另外一个硬盘上面的某个目录下面,然后 再用ln 或者mount到 ~或者Users对应的目录 就可以了 呵呵

  7. 原来这么早就开始用SSD,最近我也准备弄,有点不明白的是,弄成FUSHION DRIVER和常规挂载,有哪些区别?还有哪些文件可以扔到SSD哪些文件可以扔到HHD,我还得研究研究~

Leave a Reply

Your email address will not be published. Required fields are marked *