数据精细度探究
苹果公司在宣传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空间预留为备用区。我怀疑苹果没有预留更大的备用区是出于成本方面的考虑。
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 尾页