蘋(píng)果Fusion Drive混合磁盤(pán)方案深度解析
當(dāng)效果可觀、價(jià)格適度的SSD在2008年首次出現(xiàn)時(shí),人們覺(jué)得這個(gè)技術(shù)相當(dāng)神奇。隨著時(shí)間的推移,NAND和SSD的性價(jià)比提高了,但機(jī)械硬盤(pán)的價(jià)格還是比它低一個(gè)數(shù)量級(jí)。AnandTech的Anand Lal Shimpi表示:我一直主張把SSD和HDD相結(jié)合的解決方案。你可以買一塊足夠大的SSD來(lái)裝操作系統(tǒng)、應(yīng)用程序、甚至再裝一兩個(gè)游戲,然后把其他一切放在HDD RAID-1陣列中。這種方法用在臺(tái)式機(jī)上效果很好,但你必須手動(dòng)管理文件去向。
本文引用地址:http://m.butianyuan.cn/article/201967.htmOEM是如何處理這個(gè)問(wèn)題?我一直都感到好奇。因?yàn)榻逃脩糇约簞?dòng)手,把較大的、不經(jīng)常使用的文件放在一個(gè)驅(qū)動(dòng)器上,把其他東西放在另一個(gè)驅(qū)動(dòng)器上,似乎不太可行。英特爾6系列芯片組采用了Smart Response混合硬盤(pán)技術(shù),將一塊20GB SLC SSD作為傳統(tǒng)硬盤(pán)的緩存,希望實(shí)現(xiàn)速度的提升。
自那以后,其他一些SSD緩存解決方案也紛紛出現(xiàn)。然而,它們中的大多數(shù)采用的是便宜的、小容量、效果不佳的mSATA SSD。近來(lái),OEM跟SSD緩存供應(yīng)商合作,以勉強(qiáng)滿足超極本認(rèn)證的最低要求。一般說(shuō)來(lái),這種方式帶來(lái)的體驗(yàn)非常差。
HDD 制造商也在試圖解決這個(gè)問(wèn)題,但它們的方式是添加少量NAND到機(jī)械硬盤(pán)中。這通常會(huì)讓HDD 的速度變得更快,但跟SSD還是相去甚遠(yuǎn)。實(shí)際上NAND存儲(chǔ)設(shè)備的容量已經(jīng)大到足以容納你的所有數(shù)據(jù),所以上述做法就好像是:你堅(jiān)持使用8MB L3 緩存,其實(shí)你本來(lái)可以多加幾百美元,買一個(gè)16GB。一旦你了解后者的好處,前者似乎就是毫無(wú)意義的妥協(xié)了。
蘋(píng)果是最早意識(shí)到這個(gè)問(wèn)題的OEM之一。該公司所有主流移動(dòng)設(shè)備都只用NAND(iPhone,iPad和MacBook Air)。最近,蘋(píng)果的專業(yè)筆記本電腦甚至也開(kāi)始朝著純SSD的方向邁進(jìn)了(配Retina 顯示屏的MacBook Pro)。蘋(píng)果Mac確實(shí)有不參與低價(jià)競(jìng)爭(zhēng)的資本,因此要拋棄HDD 也容易了很多。即便如此,蘋(píng)果現(xiàn)在出貨的6款Mac(MBA、rMBP、MBP、Mac mini,iMac和Mac Pro)中,也只有兩款的默認(rèn)配置不帶HDD 。其余的都配備了老式機(jī)械硬盤(pán)。
把iMac這樣的設(shè)備改成純SSD比較困難。雖然筆記本電腦用戶(尤其是超極本用戶)已經(jīng)習(xí)慣了沒(méi)有太多存儲(chǔ)空間的設(shè)備,用慣臺(tái)式機(jī)的人并不一定受得了有限的存儲(chǔ)量。
對(duì)于這個(gè)問(wèn)題,蘋(píng)果的辦法跟其他SSD / HDD混合解決方案也沒(méi)有太大不同。區(qū)別只是在SSD組成部分的大小以及軟件層上。
全新的Mac mini和iMac可以選擇蘋(píng)果的混合硬盤(pán)解決方案Fusion Drive。它只有兩個(gè)版本:1TB和3TB。 1TB僅適用于iMac和升級(jí)的Mac mini(799美元),3TB只適用于27英寸的iMac。
Fusion Drive 是一塊1TB或3TB HDD(2.5英寸或3.5英寸)跟一塊128GB三星PM830 SSD的組合。在測(cè)試中,我使用的是一臺(tái)27英寸iMac,1TB的 Fusion Drive。
蘋(píng)果Fusion Drive中SSD的容量遠(yuǎn)遠(yuǎn)高于一般的緩存方案(大多數(shù)OEM都采用8GB到24GB的NAND)。而且蘋(píng)果Fusion Drive選用的三星PM830,是我們測(cè)試過(guò)的SSD中性能和可靠性的最佳組合之一。雖然我個(gè)人更喜歡Link A Media 或者Intel S3700,畢竟它們擁有出色、穩(wěn)定的性能,但對(duì)于蘋(píng)果來(lái)說(shuō),PM830可能是一個(gè)更加實(shí)惠的選擇。
當(dāng)然Fusion Drive與以往的混合/緩存解決方案不同,但它真正的與眾不同之處是軟件部分。Fusion Drive沒(méi)有簡(jiǎn)單地借用英特爾Smart Response 技術(shù),它涉及到OS X邏輯卷管理器Core Storage的虛擬化存儲(chǔ)問(wèn)題。Core Storage最早出現(xiàn)是在獅子版本中,它可以讓操作系統(tǒng)把多個(gè)物理磁盤(pán)當(dāng)做一個(gè)邏輯卷來(lái)對(duì)待。
蘋(píng)果最初用Core Storage來(lái)加密整個(gè)磁盤(pán),但現(xiàn)在,Core Storage的使用已擴(kuò)大到美洲獅的Fusion Drive中。創(chuàng)建Fusion Drive十分簡(jiǎn)單。如果你有多個(gè)驅(qū)動(dòng)器,你可以自己使用一些簡(jiǎn)單的終端命令來(lái)創(chuàng)建一個(gè)Fusion Drive。如果你購(gòu)買了一臺(tái)帶有Fusion Drive 的Mac,蘋(píng)果就自動(dòng)為你做好著一切了。
跟傳統(tǒng)的SSD緩存架構(gòu)不同,F(xiàn)usion Drive不是真的緩存,它會(huì)根據(jù)訪問(wèn)頻率和可用空間,在SSD和HDD之間移動(dòng)數(shù)據(jù)。一個(gè)Fusion Drive的容量,實(shí)際上是其組成部分的總和。也就是說(shuō),一個(gè)1TB的Fusion Drive容量實(shí)際上是1TB + 128GB;一個(gè)3TB 的Fusion Drive容量則是3TB + 128GB。
最新版本的“磁盤(pán)工具”(Disk Utility)把 Fusion Drive 顯示為一個(gè)驅(qū)動(dòng)器,標(biāo)簽為Macintosh HD。但是蘋(píng)果并沒(méi)有試圖隱藏它的Fusion Drive屬性:在系統(tǒng)報(bào)告中,或者使用像iStat Menus這樣的第三方工具,你可以看到兩個(gè)驅(qū)動(dòng)器的狀況:
128GB的SSD顯示容量為121.33GB。 注意:自O(shè)S X 10.6后,蘋(píng)果公司開(kāi)始以10為基數(shù)顯示容量。算一下你就會(huì)知道有多少空間被用作了備用區(qū):
這個(gè)128GiB NAND中約11.7%被預(yù)留作為備用區(qū),標(biāo)準(zhǔn)Mac中的128GiB SSD也是一樣,但這個(gè)比例比通常的6.7%要高。增加備用區(qū)比例有助于提升性能的一致性,我個(gè)人希望三星SSD能有25%的備用區(qū)。
你可以在Fusion Drive上創(chuàng)建Boot Camp或其他額外的分區(qū),不過(guò)這些分區(qū)都是在HDD上。
Fusion Drive揭秘
我測(cè)試用的是一臺(tái)新的27英寸iMac。最開(kāi)始,我用了一個(gè)128KB的順序?qū)懭氩僮?隊(duì)列深度為1),并使用iStat Menus 4來(lái)監(jiān)測(cè)兩個(gè)驅(qū)動(dòng)器的狀態(tài),我發(fā)現(xiàn)只有SSD接收了最初的寫(xiě)入操作,HDD上沒(méi)有活動(dòng)。 SSD的寫(xiě)入速度是322MB / s。但在寫(xiě)入117GB之后,HDD接管了寫(xiě)入活動(dòng),最初速度大約為133 到175MB / s。
初步測(cè)試證實(shí),F(xiàn)usion Drive確實(shí)使用了兩個(gè)驅(qū)動(dòng)器。最初117GB寫(xiě)入到了SSD,接下來(lái)的1TB直接寫(xiě)入到HDD。我覺(jué)得它排定優(yōu)先級(jí)的方式是:Fusion Drive假設(shè)SSD上有足夠的可用空間(后面將詳細(xì)討論),首先嘗試寫(xiě)入SSD。
接下來(lái),我想進(jìn)行隨機(jī)IO測(cè)試,因?yàn)檫@才是SSD在性能方面超過(guò)HDD的地方,通常也是SSD緩存或混合方案功虧一簣的地方。我首先嘗試了最糟糕的情況:涵蓋所有的邏輯塊地址的隨機(jī)寫(xiě)入測(cè)試。鑒于Fusion Drive的總?cè)萘渴?.1TB,從這個(gè)測(cè)試中,我們可以了解蘋(píng)果如何在這兩個(gè)驅(qū)動(dòng)器之間映射LBA(邏輯塊地址)。
結(jié)果很有趣的,不過(guò)也不算意外。 SSD和HDD都有寫(xiě)入活動(dòng),但HDD更多一些(消耗了更大比例的可用LBA)。普通的4KB(QD16)隨機(jī)寫(xiě)入測(cè)試結(jié)果大約是0.51MB / s,它受到了Fusion Drive中HDD部分的限制。
但在隨機(jī)寫(xiě)入任務(wù)結(jié)束之后,HDD和SSD之間出現(xiàn)了直接的數(shù)據(jù)移動(dòng)。因?yàn)長(zhǎng)BA是隨機(jī)選擇的,一些(相同或只是空間上相似的)地址可能被挑選了不止一次,這些邏輯塊立即被標(biāo)記為提升到SSD。這是我第一次看到Fusion Drive主動(dòng)在驅(qū)動(dòng)器之間移動(dòng)數(shù)據(jù)。
對(duì)于消費(fèi)級(jí)SSD來(lái)說(shuō),進(jìn)行全覆蓋的隨機(jī)寫(xiě)入測(cè)試可能有點(diǎn)不公平,對(duì)SSD / HDD混合方案來(lái)說(shuō)就更不公平了。要了解Fusion Drive處理隨機(jī)IO的能力有多強(qiáng),我把隨機(jī)寫(xiě)入測(cè)試限制在LBA的第一個(gè)8GB之內(nèi)。
結(jié)果有很大的不同。在第一輪中,平均速度大約是7 到9MB /s,IO絕大部分都發(fā)生在SSD上,一小部分在HDD上。 3分鐘的測(cè)試后,我等著Fusion Drive移動(dòng)數(shù)據(jù),然后又重復(fù)了一遍。在第二輪中,速度跳升到了21.9MB / s,更多的IO發(fā)生在SSD上,盡管HDD上仍然看得到寫(xiě)入活動(dòng)。
圖:大部分的隨機(jī)寫(xiě)入都發(fā)生在SSD上,但仍然有部分到了HDD,移動(dòng)了一番數(shù)據(jù)和重映射LBA之后,幾乎所有的隨機(jī)寫(xiě)入都到了SSD上,速度也快了很多
在第三次嘗試中,幾乎所有的隨機(jī)寫(xiě)入發(fā)生在SSD上,速度達(dá)到98MB / s的峰值,碎片增多時(shí),速度下降到最低35MB / s。我認(rèn)為,蘋(píng)果似乎依據(jù)訪問(wèn)頻率,把LBA動(dòng)態(tài)地映射到了SSD上,這是一個(gè)非常積極的性能提升方法。歸根結(jié)底,這是通常的SSD緩存方案和Fusion Drive之間存在的重大區(qū)別。大多數(shù)SSD緩存方案似乎都以讀取頻率為基礎(chǔ),而Fusion Drive看似(至少部分是)考慮了哪些LBA被頻繁寫(xiě)入,并把它們映射到SSD上。
要注意的是,隨后的隨機(jī)寫(xiě)入測(cè)試產(chǎn)生的結(jié)果大不一樣。當(dāng)我用更多的數(shù)據(jù)和應(yīng)用程序填充Fusion Drive(用真實(shí)的數(shù)據(jù)和應(yīng)用程序填充到80%)時(shí),我沒(méi)有見(jiàn)到隨機(jī)寫(xiě)入性能能再次達(dá)到這樣高的水平。在每次運(yùn)行中,我看到有很短的時(shí)間數(shù)據(jù)到處移動(dòng),但隨機(jī)IO發(fā)生在HDD和SDD的比例約為7:1。鑒于這兩種驅(qū)動(dòng)器之間的容量差異,這個(gè)比例具有很大意義。如果你的工作負(fù)載包含大量的隨機(jī)寫(xiě)入,涵蓋所有可用空間,F(xiàn)usion Drive可能就不太適合你。不過(guò)這樣的工作負(fù)載大多出現(xiàn)在企業(yè)用戶中,所以對(duì)你來(lái)說(shuō)這應(yīng)該不是問(wèn)題。
數(shù)據(jù)精細(xì)度探究
蘋(píng)果公司在宣傳Fusion Drive時(shí),談到了文件和應(yīng)用程序級(jí)別的數(shù)據(jù)移動(dòng),但在現(xiàn)實(shí)使用中,數(shù)據(jù)可以以128KB的文件塊在SSD和HDD之間移動(dòng)。
使用fs_usage工具,你可以看到蘋(píng)果Fusion Drive的內(nèi)部工作原理。 文件以128KB的文件塊在驅(qū)動(dòng)器之間移動(dòng),這也是由文件塊的使用頻率來(lái)決定的。由于客戶工作負(fù)載往往是順序的(在最糟的情況下也是偽隨機(jī)),我們可以比較有把握地說(shuō),如果你在一個(gè) 128KB的文件塊中訪問(wèn)一個(gè)LBA,你實(shí)際上會(huì)訪問(wèn)同一空間中更多的LBA。數(shù)據(jù)遷移過(guò)程似乎主要是發(fā)生在閑置期間,雖然我也看到,在IO負(fù)載較輕的時(shí)候,驅(qū)動(dòng)器之間也有遷移活動(dòng)進(jìn)行。
遷移的快速觸發(fā)機(jī)制十分有趣。一旦文件被復(fù)制或者創(chuàng)建出來(lái),應(yīng)用程序啟動(dòng),或者其他IO活動(dòng)完成時(shí),SSD和HDD之間立刻開(kāi)始進(jìn)行數(shù)據(jù)遷移。當(dāng)你填充Fusion Drive時(shí),在SSD和HDD之間移動(dòng)的數(shù)據(jù)量就大幅收縮了。事情本來(lái)就應(yīng)該是這樣。不常訪問(wèn)的數(shù)據(jù)應(yīng)該放置在HDD 上,真正重要的東西會(huì)留在SSD上。當(dāng)Fusion Drive在寫(xiě)入時(shí),蘋(píng)果就不會(huì)那么積極地釋放SSD上的數(shù)據(jù)。
數(shù)據(jù)遷移過(guò)程本身是非常簡(jiǎn)單的,數(shù)據(jù)被標(biāo)志為promotion和demotion,它被物理復(fù)制到新的存儲(chǔ)設(shè)備上,然后它才移走。在遷移過(guò)程中,如果出現(xiàn)電源故障,F(xiàn)usion Drive不會(huì)造成任何數(shù)據(jù)丟失,只有當(dāng)一個(gè)128KB文件塊的兩個(gè)副本就位之后,源塊才會(huì)被移除。蘋(píng)果去年就告訴過(guò)我這件事了,但我現(xiàn)在才親眼看到。
評(píng)論