初识Fusion Drive
全新的Mac mini和iMac可以选择苹果的混合硬盘解决方案Fusion Drive。它只有两个版本:1TB和3TB。 1TB仅适用于iMac和升级的Mac mini(799美元),3TB只适用于27英寸的iMac。
Fusion Drive 是一块1TB或3TB HDD(2.5英寸或3.5英寸)跟一块128GB三星PM830 SSD的组合。在测试中,我使用的是一台27英寸iMac,1TB的 Fusion Drive。
苹果Fusion Drive中SSD的容量远远高于一般的缓存方案(大多数OEM都采用8GB到24GB的NAND)。而且苹果Fusion Drive选用的三星PM830,是我们测试过的SSD中性能和可靠性的最佳组合之一。虽然我个人更喜欢Link A Media 或者Intel S3700,毕竟它们拥有出色、稳定的性能,但对于苹果来说,PM830可能是一个更加实惠的选择。当然Fusion Drive与以往的混合/缓存解决方案不同,但它真正的与众不同之处是软件部分。Fusion Drive没有简单地借用英特尔Smart Response 技术,它涉及到OS X逻辑卷管理器Core Storage的虚拟化存储问题。Core Storage最早出现是在狮子版本中,它可以让操作系统把多个物理磁盘当做一个逻辑卷来对待。苹果最初用Core Storage来加密整个磁盘,但现在,Core Storage的使用已扩大到美洲狮的Fusion Drive中。创建Fusion Drive十分简单。如果你有多个驱动器,你可以自己使用一些简单的终端命令来创建一个Fusion Drive。如果你购买了一台带有Fusion Drive 的Mac,苹果就自动为你做好着一切了。
跟传统的SSD缓存架构不同,Fusion Drive不是真的缓存,它会根据访问频率和可用空间,在SSD和HDD之间移动数据。一个Fusion Drive的容量,实际上是其组成部分的总和。也就是说,一个1TB的Fusion Drive容量实际上是1TB + 128GB;一个3TB 的Fusion Drive容量则是3TB + 128GB。最新版本的“磁盘工具”(Disk Utility)把 Fusion Drive 显示为一个驱动器,标签为Macintosh HD。但是苹果并没有试图隐藏它的Fusion Drive属性:在系统报告中,或者使用像iStat Menus这样的第三方工具,你可以看到两个驱动器的状况:128GB的SSD显示容量为121.33GB。 注意:自OS X 10.6后,苹果公司开始以10为基数显示容量。算一下你就会知道有多少空间被用作了备用区:这个128GiB NAND中约11.7%被预留作为备用区,标准Mac中的128GiB SSD也是一样,但这个比例比通常的6.7%要高。增加备用区比例有助于提升性能的一致性,我个人希望三星SSD能有25%的备用区。你可以在Fusion Drive上创建Boot Camp或其他额外的分区,不过这些分区都是在HDD上。
Fusion Drive 揭秘
我测试用的是一台新的27英寸iMac。最开始,我用了一个128KB的顺序写入操作(队列深度为1),并使用iStat Menus 4来监测两个驱动器的状态,我发现只有SSD接收了最初的写入操作,HDD上没有活动。 SSD的写入速度是322MB / s。但在写入117GB之后,HDD接管了写入活动,最初速度大约为133 到175MB / s。初步测试证实,Fusion Drive确实使用了两个驱动器。最初117GB写入到了SSD,接下来的1TB直接写入到HDD。我觉得它排定优先级的方式是:Fusion Drive假设SSD上有足够的可用空间(后面将详细讨论),首先尝试写入SSD。
接下来,我想进行随机IO测试,因为这才是SSD在性能方面超过HDD的地方,通常也是SSD缓存或混合方案功亏一篑的地方。我首先尝试了最糟糕的情况:涵盖所有的逻辑块地址的随机写入测试。鉴于Fusion Drive的总容量是1.1TB,从这个测试中,我们可以了解苹果如何在这两个驱动器之间映射LBA(逻辑块地址)。结果很有趣的,不过也不算意外。 SSD和HDD都有写入活动,但HDD更多一些(消耗了更大比例的可用LBA)。普通的4KB(QD16)随机写入测试结果大约是0.51MB / s,它受到了Fusion Drive中HDD部分的限制。但在随机写入任务结束之后,HDD和SSD之间出现了直接的数据移动。因为LBA是随机选择的,一些(相同或只是空间上相似的)地址可能被挑选了不止一次,这些逻辑块立即被标记为提升到SSD。这是我第一次看到Fusion Drive主动在驱动器之间移动数据。
对于消费级SSD来说,进行全覆盖的随机写入测试可能有点不公平,对SSD / HDD混合方案来说就更不公平了。要了解Fusion Drive处理随机IO的能力有多强,我把随机写入测试限制在LBA的第一个8GB之内。结果有很大的不同。在第一轮中,平均速度大约是7 到9MB /s,IO绝大部分都发生在SSD上,一小部分在HDD上。 3分钟的测试后,我等着Fusion Drive移动数据,然后又重复了一遍。在第二轮中,速度跳升到了21.9MB / s,更多的IO发生在SSD上,尽管HDD上仍然看得到写入活动。图:大部分的随机写入都发生在SSD上,但仍然有部分到了HDD,移动了一番数据和重映射LBA之后,几乎所有的随机写入都到了SSD上,速度也快了很多在第三次尝试中,几乎所有的随机写入发生在SSD上,速度达到98MB / s的峰值,碎片增多时,速度下降到最低35MB / s。我认为,苹果似乎依据访问频率,把LBA动态地映射到了SSD上,这是一个非常积极的性能提升方法。归根结底,这是通常的SSD缓存方案和Fusion Drive之间存在的重大区别。大多数SSD缓存方案似乎都以读取频率为基础,而Fusion Drive看似(至少部分是)考虑了哪些LBA被频繁写入,并把它们映射到SSD上。
要注意的是,随后的随机写入测试产生的结果大不一样。当我用更多的数据和应用程序填充Fusion Drive(用真实的数据和应用程序填充到80%)时,我没有见到随机写入性能能再次达到这样高的水平。在每次运行中,我看到有很短的时间数据到处移动,但随机IO发生在HDD和SDD的比例约为7:1。鉴于这两种驱动器之间的容量差异,这个比例具有很大意义。 如果你的工作负载包含大量的随机写入,涵盖所有可用空间,Fusion Drive可能就不太适合你。不过这样的工作负载大多出现在企业用户中,所以对你来说这应该不是问题。
数据精细度探究
苹果公司在宣传Fusion Drive时,谈到了文件和应用程序级别的数据移动,但在现实使用中,数据可以以128KB的文件块在SSD和HDD之间移动。使用fs_usage工具,你可以看到苹果Fusion Drive的内部工作原理。 文件以128KB的文件块在驱动器之间移动,这也是由文件块的使用频率来决定的。由于客户工作负载往往是顺序的(在最糟的情况下也是伪随机),我们可以比较有把握地说,如果你在一个 128KB的文件块中访问一个LBA,你实际上会访问同一空间中更多的LBA。数据迁移过程似乎主要是发生在闲置期间,虽然我也看到,在IO负载较轻的时候,驱动器之间也有迁移活动进行。
迁移的快速触发机制十分有趣。一旦文件被复制或者创建出来,应用程序启动,或者其他IO活动完成时,SSD和HDD之间立刻开始进行数据迁移。当你填充Fusion Drive时,在SSD和HDD之间移动的数据量就大幅收缩了。事情本来就应该是这样。不常访问的数据应该放置在HDD 上,真正重要的东西会留在SSD上。当Fusion Drive在写入时,苹果就不会那么积极地释放SSD上的数据。
数据迁移过程本身是非常简单的,数据被标志为promotion和demotion,它被物理复制到新的存储设备上,然后它才移走。在迁移过程中,如果出现电源故障,Fusion Drive不会造成任何数据丢失,只有当一个128KB文件块的两个副本就位之后,源块才会被移除。苹果去年就告诉过我这件事了,但我现在才亲眼看到。
用128KB的文件块在HDD和SSD之间移动数据,苹果可以在写入SSD的时候进行部分碎片整理。尽管Fusion Drive 的所有写入首选目的地都是SSD(可以包括小于128KB的文件块,随机和伪随机写入),任何从HDD到SSD的迁移却都是大块顺序写入的,如果驱动器中有大量碎片,这就会触发垃圾块回收过程。SSD的性能肯定会随着时间的推移降低,但是这个过程有助于保持它的性能,因为SSD几乎一直都是在充满的状况下运行的,而且它会接收各种不相关的写入。我前面提到过,我希望苹果把更多的PM830 NAND空间预留为备用区。我怀疑苹果没有预留更大的备用区是出于成本方面的考虑。
应用体验
在现实使用中,Fusion Drive能给我们带来怎样的体验呢?简单说来,它的效果出乎意料的好。我之前使用过的SSD缓存方案全部都更像是HDD而不是SSD,不过苹果公司的Fusion Drive体验则是几乎处于HDD和SSD的正中间。它在安装几乎所有程序时,都是先用SSD,因此Fusion Drive感觉真的像SSD。不仅是在安装应用程序的时候,复制任何东西时,一般也是先去SSD。似乎到了4GB之后,它才开始用HDD。不过稍加努力,你可以让Fusion Drive仅在1 到 2GB之后就开始写入到HDD。我用Iometer创建了一个顺序测试文件,监测Fusion Drive什么时候停止将文件写入到SSD,在这时停止这个进程,重新命名这个文件,并再次开始创建文件。可以看到,如果你的速度够快,你可以在低于2GB的时候就让HDD接管写操作。我不知道这是不是SSD上的可用空间量,但很有可能就是这样,因为显示121GB的SSD又不充分使用它实在说不通。
在大多数时候,当你不那么积极地写入SSD时,Fusion Drive可以保持至少4GB的SSD可用空间。需要注意的是:当你第一次使用它时,Fusion Drive大部分都是空的,你写入的几乎任何东西,无论大小,都会直接进入SSD。然而,当容量承受一定压力时,苹果就会改变方法:让任何文件最多写入4GB到SSD,其余部分则放到HDD上。通过安装苹果的OS X开发者工具以及Xcode本身,我证实了这一点。后者接近于4GB大,但默认状况下,它的很大部分都到了SSD上。应用程序生成的数据也是如此。我用Xcode创建Adium,一个682MB的项目,整个编译过程都发生在SSD ——机械硬盘一直都没有活动。我试图创建一个更大的项目,近2GB的Firefox。这时出现了短暂的HDD活动,但绝大多数活动都是在SSD上。
我复制了一个很大的视频文件(>10GB)到这台iMac上,现在我把它复制到一个新的位置上,并密切注意Fusion Drive的动向。最初的2GB是从SSD传输到SSD,接下来的2GB是从HDD读取,写入SSD。大约4GB被复制之后,源驱动器和目标驱动器都变成了HDD。在我看来,正确的做法应该是默认情况下把所有的大文件都放入HDD ,除非它们被频繁访问。苹果的做法似乎是一个合理的妥协,但它把文件块放入SSD的方式比我以为的更加积极。
我重复了这个测试,用另一个我从来没有访问过的视频文件,得到的结果完全不同。整个文件都存在HDD 上。我又重复一次这个测试,用我访问了好几次的iPhoto图库,令我惊讶的是,这个iPhoto图库的大部分都在HDD上,但也有一些少许读取来自SSD。但在这两种情况下,复制的目标驱动器当然都是SSD。我Anandtech文件夹的大小超过32GB,含有文字、照片、演示文稿、基准测试结果,以及我做过的几乎所有评测。虽然这个文件夹非常重要,但它其中大部分都没有经常被访问。我在复制这个文件夹时,发现几乎全在HDD上。38GB的“我的文档”文件夹也是如此,这个文件夹中的大部分也是未读过的。
另一方面,应用程序几乎总是放在SSD上。
之前我经常手动把操作系统和应用程序放在SSD,大的媒体文件放在HDD上,Fusion Drive把这个过程自动化了,而且效果还相当不错。我手动整理资料和Fusion Drive自动化之间唯一的区别就是,我把“我的文档”和Anandtech文件夹默认放在SSD。这样做不只存在性能方面的考虑,也是为了可靠性,因为硬盘比SSD更容易出毛病。
Fusion Drive 的性能
对Fusion Drive进行基准测试有点困难,因为它总是写入到SSD。如果你不把Fusion Drive填满,你写入的大量数据可能全部会到SSD上。如果你确实填满了它,但测试的数据集<4GB,那你测量的仍然是SSD性能。我想出了一个相对简单的用例,可以涵盖两个驱动器。现在我的Fusion Drive已经填充了70%,这意味着SSD的容量快要到顶了(除了其4GB的缓冲)。我把含有703张照片的iPhoto图库导出为TIFF格式的照片。生成的文件相当大,当达到297张照片时,4GB的SSD写入缓冲区已经满了,所有后续导出的照片都到了HDD 。我给这个过程计时,然后把它跟iMac上的一个HDD分区做对比,也跟通过USB 3.0连接的一个三星PM830 SSD对比。结果有点偏向于纯HDD 配置,因为这个写操作基本上是顺序的:
上图准确地总结了我的Fusion Drive 体验:它差不多处于HDD 和SSD的正中间。在这个测试中,速度提升不是很大,但这主要是因为我们使用了相对低的队列深度顺序传输。对于比较随机的工作负载,Fusion Drive和HDD差距将拉大。可惜的是,我无法找到好的应用程序用例来生成4GB +的伪随机数据,使其可重复性高到可以进行基准比较的程度。
如果我一直对Fusion Drive进行非常大的顺序写操作(一个文件就高达260GB),最后它会傻掉,不再迁移数据到SSD了,除非你重新启动机器。我怀疑这个bug不是由正常的自动测试触发的,但它确实提供了一个有趣的状况,我可以利用它来开展测试。
启动我频繁使用的iMac预装应用程序,它们仍在SSD上,但一些后来安装的程序却不是这样。特别是Photoshop CS6,它部分在SSD上,部分在HDD上。对于工作负载太大,SSD无法单独处理时的Fusion Drive 伪随机读取性能,这是一个很好的基准测试。我测试Photoshop在Fusion Drive上的启动时间,跟在纯HDD 分区上,以及通过USB 3.0连接的PM830上的情况相比较。比较结果再次反映了我的体验:
相对于纯HDD ,Fusion Drive有明显的改善,启动时间快了40%。然而,纯SSD也快了一半以上。请注意,如果Photoshop是最常用的应用程序之一,它会被完全移动到SSD上。性能跟在纯SSD上差不多。测试中没有出现这样的状况,是因为我的1.1TB Fusion Drive 驱动差不多充满了80%。
Fusion Drive 的实际限制
苹果Fusion Drive 在写入SSD是非常积极的,但你的数据越多,它的算法似乎就变得越保守。这倒并不是很让人震惊,但需要指出的是,在驱动器总使用量较低时,我需要做的几乎一切都是使用的SSD,但当应用程序的需要超过了Fusion Drive 可以轻松应付的范围时,这个平台对于“什么东西可以被移动到SSD”就变得更加挑剔。 要记住的是,如果128GB的存储空间不够存储你所有的常用应用程序、数据和操作系统,你的Fusion Drive体验就更像是HDD了。为了模拟和证明这一点,我把我200GB +的MacBook Pro映像移动到了iMac上。请注意,这200GB中的大部分是我经常使用的应用程序和数据。
测试到最后,我觉得我需要更多的SSD。 Spotlight搜索花费的时间比纯SSD多,并非所有的应用程序都是瞬间启动的,将照片从Safari添加到iPhoto需要的时间也长一点儿…… Fusion Drive 可能是很好,但它不是魔法。如果你确实需要超过128GB以上的SSD,Fusion Drive可能并不适合你。
结束语
苹果Fusion Drive可能是我用过的最好的SSD / HDD混合解决方案。这不是前沿科学,它所做的就是把一个很好的SSD(三星PM830),大量的NAND(128GB)和一些非常积极、聪明的软件(苹果公司的 Core Storage LVM)结合起来。 Fusion Drive 可能算不上具有革新性,但它的方法肯定是正确的。
如果你没有大量应用程序和数据,媒体文件也不太大,那么对于你来说,Fusion Drive 驱动器应该是一个合理的SSD加HDD 配置,媒体大文件放到HDD,所有经常使用的东西都在SSD上。我虽然很想要更大的缓存,但我相信,对于如今的大多数工作负载和使用模式来说,128GB也已经够好了。对我个人来说,Fusion Drive可能需要有256GB缓存才能赢得我的心,但我也明白,我不一定就是它的目标受众。
真正的问题是:它是否物有所值。我个人当然希望全部都用SSD,手动把媒体大文件放到HDD 阵列上。Fusion Drive没有做任何事情来减小“HDD 可能会早于SSD出毛病”的可能性,如果使用内置的SSD和(通过Thunderbolt或USB 3.0)连接的HDD RAID阵列,你将会掌握更大的灵活性。可惜的是,苹果并不总是提供纯SSD版本的iMac。
苹果的iMac限制了你的选择。对于21.5英寸机型,你既可以购买纯HDD 版本,也可以购买 Fusion Drive版本 ,但是没有纯SSD版本。我觉得你当然应该选Fusion Drive版本。如果你不打算自己购买SSD来更换它内置的HDD ,Fusion Drive绝对是一个正确选择。
全新的Mac mini和iMac可以选择苹果的混合硬盘解决方案Fusion Drive。它只有两个版本:1TB和3TB。 1TB仅适用于iMac和升级的Mac mini(799美元),3TB只适用于27英寸的iMac。
Fusion Drive 是一块1TB或3TB HDD(2.5英寸或3.5英寸)跟一块128GB三星PM830 SSD的组合。在测试中,我使用的是一台27英寸iMac,1TB的 Fusion Drive。
苹果Fusion Drive中SSD的容量远远高于一般的缓存方案(大多数OEM都采用8GB到24GB的NAND)。而且苹果Fusion Drive选用的三星PM830,是我们测试过的SSD中性能和可靠性的最佳组合之一。虽然我个人更喜欢Link A Media 或者Intel S3700,毕竟它们拥有出色、稳定的性能,但对于苹果来说,PM830可能是一个更加实惠的选择。当然Fusion Drive与以往的混合/缓存解决方案不同,但它真正的与众不同之处是软件部分。Fusion Drive没有简单地借用英特尔Smart Response 技术,它涉及到OS X逻辑卷管理器Core Storage的虚拟化存储问题。Core Storage最早出现是在狮子版本中,它可以让操作系统把多个物理磁盘当做一个逻辑卷来对待。苹果最初用Core Storage来加密整个磁盘,但现在,Core Storage的使用已扩大到美洲狮的Fusion Drive中。创建Fusion Drive十分简单。如果你有多个驱动器,你可以自己使用一些简单的终端命令来创建一个Fusion Drive。如果你购买了一台带有Fusion Drive 的Mac,苹果就自动为你做好着一切了。
跟传统的SSD缓存架构不同,Fusion Drive不是真的缓存,它会根据访问频率和可用空间,在SSD和HDD之间移动数据。一个Fusion Drive的容量,实际上是其组成部分的总和。也就是说,一个1TB的Fusion Drive容量实际上是1TB + 128GB;一个3TB 的Fusion Drive容量则是3TB + 128GB。最新版本的“磁盘工具”(Disk Utility)把 Fusion Drive 显示为一个驱动器,标签为Macintosh HD。但是苹果并没有试图隐藏它的Fusion Drive属性:在系统报告中,或者使用像iStat Menus这样的第三方工具,你可以看到两个驱动器的状况:128GB的SSD显示容量为121.33GB。 注意:自OS X 10.6后,苹果公司开始以10为基数显示容量。算一下你就会知道有多少空间被用作了备用区:这个128GiB NAND中约11.7%被预留作为备用区,标准Mac中的128GiB SSD也是一样,但这个比例比通常的6.7%要高。增加备用区比例有助于提升性能的一致性,我个人希望三星SSD能有25%的备用区。你可以在Fusion Drive上创建Boot Camp或其他额外的分区,不过这些分区都是在HDD上。
Fusion Drive 揭秘
我测试用的是一台新的27英寸iMac。最开始,我用了一个128KB的顺序写入操作(队列深度为1),并使用iStat Menus 4来监测两个驱动器的状态,我发现只有SSD接收了最初的写入操作,HDD上没有活动。 SSD的写入速度是322MB / s。但在写入117GB之后,HDD接管了写入活动,最初速度大约为133 到175MB / s。初步测试证实,Fusion Drive确实使用了两个驱动器。最初117GB写入到了SSD,接下来的1TB直接写入到HDD。我觉得它排定优先级的方式是:Fusion Drive假设SSD上有足够的可用空间(后面将详细讨论),首先尝试写入SSD。
接下来,我想进行随机IO测试,因为这才是SSD在性能方面超过HDD的地方,通常也是SSD缓存或混合方案功亏一篑的地方。我首先尝试了最糟糕的情况:涵盖所有的逻辑块地址的随机写入测试。鉴于Fusion Drive的总容量是1.1TB,从这个测试中,我们可以了解苹果如何在这两个驱动器之间映射LBA(逻辑块地址)。结果很有趣的,不过也不算意外。 SSD和HDD都有写入活动,但HDD更多一些(消耗了更大比例的可用LBA)。普通的4KB(QD16)随机写入测试结果大约是0.51MB / s,它受到了Fusion Drive中HDD部分的限制。但在随机写入任务结束之后,HDD和SSD之间出现了直接的数据移动。因为LBA是随机选择的,一些(相同或只是空间上相似的)地址可能被挑选了不止一次,这些逻辑块立即被标记为提升到SSD。这是我第一次看到Fusion Drive主动在驱动器之间移动数据。
对于消费级SSD来说,进行全覆盖的随机写入测试可能有点不公平,对SSD / HDD混合方案来说就更不公平了。要了解Fusion Drive处理随机IO的能力有多强,我把随机写入测试限制在LBA的第一个8GB之内。结果有很大的不同。在第一轮中,平均速度大约是7 到9MB /s,IO绝大部分都发生在SSD上,一小部分在HDD上。 3分钟的测试后,我等着Fusion Drive移动数据,然后又重复了一遍。在第二轮中,速度跳升到了21.9MB / s,更多的IO发生在SSD上,尽管HDD上仍然看得到写入活动。图:大部分的随机写入都发生在SSD上,但仍然有部分到了HDD,移动了一番数据和重映射LBA之后,几乎所有的随机写入都到了SSD上,速度也快了很多在第三次尝试中,几乎所有的随机写入发生在SSD上,速度达到98MB / s的峰值,碎片增多时,速度下降到最低35MB / s。我认为,苹果似乎依据访问频率,把LBA动态地映射到了SSD上,这是一个非常积极的性能提升方法。归根结底,这是通常的SSD缓存方案和Fusion Drive之间存在的重大区别。大多数SSD缓存方案似乎都以读取频率为基础,而Fusion Drive看似(至少部分是)考虑了哪些LBA被频繁写入,并把它们映射到SSD上。
要注意的是,随后的随机写入测试产生的结果大不一样。当我用更多的数据和应用程序填充Fusion Drive(用真实的数据和应用程序填充到80%)时,我没有见到随机写入性能能再次达到这样高的水平。在每次运行中,我看到有很短的时间数据到处移动,但随机IO发生在HDD和SDD的比例约为7:1。鉴于这两种驱动器之间的容量差异,这个比例具有很大意义。 如果你的工作负载包含大量的随机写入,涵盖所有可用空间,Fusion Drive可能就不太适合你。不过这样的工作负载大多出现在企业用户中,所以对你来说这应该不是问题。
数据精细度探究
苹果公司在宣传Fusion Drive时,谈到了文件和应用程序级别的数据移动,但在现实使用中,数据可以以128KB的文件块在SSD和HDD之间移动。使用fs_usage工具,你可以看到苹果Fusion Drive的内部工作原理。 文件以128KB的文件块在驱动器之间移动,这也是由文件块的使用频率来决定的。由于客户工作负载往往是顺序的(在最糟的情况下也是伪随机),我们可以比较有把握地说,如果你在一个 128KB的文件块中访问一个LBA,你实际上会访问同一空间中更多的LBA。数据迁移过程似乎主要是发生在闲置期间,虽然我也看到,在IO负载较轻的时候,驱动器之间也有迁移活动进行。
迁移的快速触发机制十分有趣。一旦文件被复制或者创建出来,应用程序启动,或者其他IO活动完成时,SSD和HDD之间立刻开始进行数据迁移。当你填充Fusion Drive时,在SSD和HDD之间移动的数据量就大幅收缩了。事情本来就应该是这样。不常访问的数据应该放置在HDD 上,真正重要的东西会留在SSD上。当Fusion Drive在写入时,苹果就不会那么积极地释放SSD上的数据。
数据迁移过程本身是非常简单的,数据被标志为promotion和demotion,它被物理复制到新的存储设备上,然后它才移走。在迁移过程中,如果出现电源故障,Fusion Drive不会造成任何数据丢失,只有当一个128KB文件块的两个副本就位之后,源块才会被移除。苹果去年就告诉过我这件事了,但我现在才亲眼看到。
用128KB的文件块在HDD和SSD之间移动数据,苹果可以在写入SSD的时候进行部分碎片整理。尽管Fusion Drive 的所有写入首选目的地都是SSD(可以包括小于128KB的文件块,随机和伪随机写入),任何从HDD到SSD的迁移却都是大块顺序写入的,如果驱动器中有大量碎片,这就会触发垃圾块回收过程。SSD的性能肯定会随着时间的推移降低,但是这个过程有助于保持它的性能,因为SSD几乎一直都是在充满的状况下运行的,而且它会接收各种不相关的写入。我前面提到过,我希望苹果把更多的PM830 NAND空间预留为备用区。我怀疑苹果没有预留更大的备用区是出于成本方面的考虑。
应用体验
在现实使用中,Fusion Drive能给我们带来怎样的体验呢?简单说来,它的效果出乎意料的好。我之前使用过的SSD缓存方案全部都更像是HDD而不是SSD,不过苹果公司的Fusion Drive体验则是几乎处于HDD和SSD的正中间。它在安装几乎所有程序时,都是先用SSD,因此Fusion Drive感觉真的像SSD。不仅是在安装应用程序的时候,复制任何东西时,一般也是先去SSD。似乎到了4GB之后,它才开始用HDD。不过稍加努力,你可以让Fusion Drive仅在1 到 2GB之后就开始写入到HDD。我用Iometer创建了一个顺序测试文件,监测Fusion Drive什么时候停止将文件写入到SSD,在这时停止这个进程,重新命名这个文件,并再次开始创建文件。可以看到,如果你的速度够快,你可以在低于2GB的时候就让HDD接管写操作。我不知道这是不是SSD上的可用空间量,但很有可能就是这样,因为显示121GB的SSD又不充分使用它实在说不通。
在大多数时候,当你不那么积极地写入SSD时,Fusion Drive可以保持至少4GB的SSD可用空间。需要注意的是:当你第一次使用它时,Fusion Drive大部分都是空的,你写入的几乎任何东西,无论大小,都会直接进入SSD。然而,当容量承受一定压力时,苹果就会改变方法:让任何文件最多写入4GB到SSD,其余部分则放到HDD上。通过安装苹果的OS X开发者工具以及Xcode本身,我证实了这一点。后者接近于4GB大,但默认状况下,它的很大部分都到了SSD上。应用程序生成的数据也是如此。我用Xcode创建Adium,一个682MB的项目,整个编译过程都发生在SSD ——机械硬盘一直都没有活动。我试图创建一个更大的项目,近2GB的Firefox。这时出现了短暂的HDD活动,但绝大多数活动都是在SSD上。
我复制了一个很大的视频文件(>10GB)到这台iMac上,现在我把它复制到一个新的位置上,并密切注意Fusion Drive的动向。最初的2GB是从SSD传输到SSD,接下来的2GB是从HDD读取,写入SSD。大约4GB被复制之后,源驱动器和目标驱动器都变成了HDD。在我看来,正确的做法应该是默认情况下把所有的大文件都放入HDD ,除非它们被频繁访问。苹果的做法似乎是一个合理的妥协,但它把文件块放入SSD的方式比我以为的更加积极。
我重复了这个测试,用另一个我从来没有访问过的视频文件,得到的结果完全不同。整个文件都存在HDD 上。我又重复一次这个测试,用我访问了好几次的iPhoto图库,令我惊讶的是,这个iPhoto图库的大部分都在HDD上,但也有一些少许读取来自SSD。但在这两种情况下,复制的目标驱动器当然都是SSD。我Anandtech文件夹的大小超过32GB,含有文字、照片、演示文稿、基准测试结果,以及我做过的几乎所有评测。虽然这个文件夹非常重要,但它其中大部分都没有经常被访问。我在复制这个文件夹时,发现几乎全在HDD上。38GB的“我的文档”文件夹也是如此,这个文件夹中的大部分也是未读过的。
另一方面,应用程序几乎总是放在SSD上。
之前我经常手动把操作系统和应用程序放在SSD,大的媒体文件放在HDD上,Fusion Drive把这个过程自动化了,而且效果还相当不错。我手动整理资料和Fusion Drive自动化之间唯一的区别就是,我把“我的文档”和Anandtech文件夹默认放在SSD。这样做不只存在性能方面的考虑,也是为了可靠性,因为硬盘比SSD更容易出毛病。
Fusion Drive 的性能
对Fusion Drive进行基准测试有点困难,因为它总是写入到SSD。如果你不把Fusion Drive填满,你写入的大量数据可能全部会到SSD上。如果你确实填满了它,但测试的数据集<4GB,那你测量的仍然是SSD性能。我想出了一个相对简单的用例,可以涵盖两个驱动器。现在我的Fusion Drive已经填充了70%,这意味着SSD的容量快要到顶了(除了其4GB的缓冲)。我把含有703张照片的iPhoto图库导出为TIFF格式的照片。生成的文件相当大,当达到297张照片时,4GB的SSD写入缓冲区已经满了,所有后续导出的照片都到了HDD 。我给这个过程计时,然后把它跟iMac上的一个HDD分区做对比,也跟通过USB 3.0连接的一个三星PM830 SSD对比。结果有点偏向于纯HDD 配置,因为这个写操作基本上是顺序的:
![](http://static.cnbetacdn.com/newsimg/130123/073746131533364046.jpg)
上图准确地总结了我的Fusion Drive 体验:它差不多处于HDD 和SSD的正中间。在这个测试中,速度提升不是很大,但这主要是因为我们使用了相对低的队列深度顺序传输。对于比较随机的工作负载,Fusion Drive和HDD差距将拉大。可惜的是,我无法找到好的应用程序用例来生成4GB +的伪随机数据,使其可重复性高到可以进行基准比较的程度。
如果我一直对Fusion Drive进行非常大的顺序写操作(一个文件就高达260GB),最后它会傻掉,不再迁移数据到SSD了,除非你重新启动机器。我怀疑这个bug不是由正常的自动测试触发的,但它确实提供了一个有趣的状况,我可以利用它来开展测试。
启动我频繁使用的iMac预装应用程序,它们仍在SSD上,但一些后来安装的程序却不是这样。特别是Photoshop CS6,它部分在SSD上,部分在HDD上。对于工作负载太大,SSD无法单独处理时的Fusion Drive 伪随机读取性能,这是一个很好的基准测试。我测试Photoshop在Fusion Drive上的启动时间,跟在纯HDD 分区上,以及通过USB 3.0连接的PM830上的情况相比较。比较结果再次反映了我的体验:
![](http://static.cnbetacdn.com/newsimg/130123/07374614206175216.jpg)
相对于纯HDD ,Fusion Drive有明显的改善,启动时间快了40%。然而,纯SSD也快了一半以上。请注意,如果Photoshop是最常用的应用程序之一,它会被完全移动到SSD上。性能跟在纯SSD上差不多。测试中没有出现这样的状况,是因为我的1.1TB Fusion Drive 驱动差不多充满了80%。
Fusion Drive 的实际限制
苹果Fusion Drive 在写入SSD是非常积极的,但你的数据越多,它的算法似乎就变得越保守。这倒并不是很让人震惊,但需要指出的是,在驱动器总使用量较低时,我需要做的几乎一切都是使用的SSD,但当应用程序的需要超过了Fusion Drive 可以轻松应付的范围时,这个平台对于“什么东西可以被移动到SSD”就变得更加挑剔。 要记住的是,如果128GB的存储空间不够存储你所有的常用应用程序、数据和操作系统,你的Fusion Drive体验就更像是HDD了。为了模拟和证明这一点,我把我200GB +的MacBook Pro映像移动到了iMac上。请注意,这200GB中的大部分是我经常使用的应用程序和数据。
测试到最后,我觉得我需要更多的SSD。 Spotlight搜索花费的时间比纯SSD多,并非所有的应用程序都是瞬间启动的,将照片从Safari添加到iPhoto需要的时间也长一点儿…… Fusion Drive 可能是很好,但它不是魔法。如果你确实需要超过128GB以上的SSD,Fusion Drive可能并不适合你。
结束语
苹果Fusion Drive可能是我用过的最好的SSD / HDD混合解决方案。这不是前沿科学,它所做的就是把一个很好的SSD(三星PM830),大量的NAND(128GB)和一些非常积极、聪明的软件(苹果公司的 Core Storage LVM)结合起来。 Fusion Drive 可能算不上具有革新性,但它的方法肯定是正确的。
如果你没有大量应用程序和数据,媒体文件也不太大,那么对于你来说,Fusion Drive 驱动器应该是一个合理的SSD加HDD 配置,媒体大文件放到HDD,所有经常使用的东西都在SSD上。我虽然很想要更大的缓存,但我相信,对于如今的大多数工作负载和使用模式来说,128GB也已经够好了。对我个人来说,Fusion Drive可能需要有256GB缓存才能赢得我的心,但我也明白,我不一定就是它的目标受众。
真正的问题是:它是否物有所值。我个人当然希望全部都用SSD,手动把媒体大文件放到HDD 阵列上。Fusion Drive没有做任何事情来减小“HDD 可能会早于SSD出毛病”的可能性,如果使用内置的SSD和(通过Thunderbolt或USB 3.0)连接的HDD RAID阵列,你将会掌握更大的灵活性。可惜的是,苹果并不总是提供纯SSD版本的iMac。
苹果的iMac限制了你的选择。对于21.5英寸机型,你既可以购买纯HDD 版本,也可以购买 Fusion Drive版本 ,但是没有纯SSD版本。我觉得你当然应该选Fusion Drive版本。如果你不打算自己购买SSD来更换它内置的HDD ,Fusion Drive绝对是一个正确选择。