當效果可觀、價格適度的SSD在2008年首次出現時,人們覺得這個技術相當神奇。隨著時間的推移,NAND和SSD的性價比提高了,但機械硬盤的價格還是比它低一個數量級。AnandTech的Anand Lal Shimpi表示:我一直主張把SSD和HDD相結合的解決方案。你可以買一塊足夠大的SSD來裝操作系統、應用程序、甚至再裝一兩個游戲,然后把其他一切放在HDD RAID-1陣列中。這種方法用在臺式機上效果很好,但你必須手動管理文件去向。
OEM是如何處理這個問題?我一直都感到好奇。因為教育用戶自己動手,把較大的、不經常使用的文件放在一個驅動器上,把其他東西放在另一個驅動器上,似乎不太可行。英特爾6系列芯片組采用了Smart Response混合硬盤技術,將一塊20GB SLC SSD作為傳統硬盤的緩存,希望實現速度的提升。
自那以后,其他一些SSD緩存解決方案也紛紛出現。然而,它們中的大多數采用的是便宜的、小容量、效果不佳的mSATA SSD。近來,OEM跟SSD緩存供應商合作,以勉強滿足超極本認證的最低要求。一般說來,這種方式帶來的體驗非常差。
HDD 制造商也在試圖解決這個問題,但它們的方式是添加少量NAND到機械硬盤中。這通常會讓HDD 的速度變得更快,但跟SSD還是相去甚遠。實際上NAND存儲設備的容量已經大到足以容納你的所有數據,所以上述做法就好像是:你堅持使用8MB L3 緩存,其實你本來可以多加幾百美元,買一個16GB。一旦你了解后者的好處,前者似乎就是毫無意義的妥協了。
蘋果是最早意識到這個問題的OEM之一。該公司所有主流移動設備都只用NAND(iPhone,iPad和MacBook Air)。最近,蘋果的專業筆記本電腦甚至也開始朝著純SSD的方向邁進了(配Retina 顯示屏的MacBook Pro)。蘋果Mac確實有不參與低價競爭的資本,因此要拋棄HDD 也容易了很多。即便如此,蘋果現在出貨的6款Mac(MBA、rMBP、MBP、Mac mini,iMac和Mac Pro)中,也只有兩款的默認配置不帶HDD 。其余的都配備了老式機械硬盤。
把iMac這樣的設備改成純SSD比較困難。雖然筆記本電腦用戶(尤其是超極本用戶)已經習慣了沒有太多存儲空間的設備,用慣臺式機的人并不一定受得了有限的存儲量。
對于這個問題,蘋果的辦法跟其他SSD / HDD混合解決方案也沒有太大不同。區別只是在SSD組成部分的大小以及軟件層上。
初識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絕對是一個正確選擇。
對于27英寸的iMac來說,蘋果提供了一個純SSD版本,但它的容量只有768GB,升級價格1300美元。突然之間,250美元的 Fusion Drive 升級聽起來就合理多了。
下圖中黑體部分,是我推薦的選配方案。請注意,前提是你不打算自己DIY(如果你決定DIY,那就買你能找到的最大SSD,用外部大容量存儲器來放那些不常用的東西):
當NAND變得夠便宜夠大的時候,iMac會徹底拋棄HDD嗎?或者我們電腦上最終會有足夠多的NAND,可以存儲除了大型媒體文件以外的一切東西嗎?在一年之內,蘋果可以把Fusion Drive中的NAND翻一番,而成本保持不變。如果看得更遠一些,在后NAND時代,存儲層次(memory hierarchy)可能會出現一些真正具有革命性的東西。
評論
查看更多