1. 程式人生 > >[轉載] Mac OS X背後的故事(十一)Mac OS X文件系統的來龍去脈(下)

[轉載] Mac OS X背後的故事(十一)Mac OS X文件系統的來龍去脈(下)

ber 標準 rate eas 賓夕法尼亞 apple 思想 上層 ipad

由於各種缺點,幹掉HFS+勢在必行,然而用什麽取代HFS+呢?蘋果開始秘密移植下一代的文件系統—ZFS,然而在諸多因素的幹擾下,Mac OS X的ZFS支持卻只是曇花一現,未來文件系統之路將走向何方?

文件系統的新時代——ZFS

為了代替HFS+,蘋果開始為研發下一代文件系統招兵買馬,準備大幹一場。但這時Sun公司的工作讓蘋果的員工們為之一振。

2004年,Sun公司發表了其傑出的文件系統ZFS。這是一個128位的文件系統,本為Solaris操作系統開發,於2005年10月31日並入了Solaris開發的主幹原始碼。後成為一個使用CDDL協議條款授權的開源項目。

ZFS是一個具有高存儲容量、文件系統與卷管理概念整合、嶄新的磁碟邏輯結構的輕量級文件系統,同時也是一個便捷的存儲池管理系統。

ZFS的一個重大特點就是擁有大容量。ZFS是一個128位的文件系統,這意味著它能存儲1800億億(18.4×1018)倍於當前64位文件系統的數據。ZFS的設計如此超前以至於這個極限就當前現實而言可能永遠無法遇到。項目領導Bonwick曾說:“要填滿一個128位的文件系統,將耗盡地球上所有存儲設備,除非你擁有煮沸整個海洋的能量。”假設每秒鐘創建1000個新文件,達到ZFS文件數的極限需要約9000年。

此外,ZFS的一個重要指導思想是不單單去做一個文件系統,而是實現一套完整的卷管理方案。不同於傳統文件系統需要駐留於單獨設備或者需要一個卷管理系統去使用一個以上的設備,ZFS建立在虛擬的被稱為“zpools”的存儲池之上。每個存儲池由若幹虛擬設備組成。這些虛擬設備可以是原始磁碟,也可能是一RAID1鏡像設備,或是非標準RAID等級的多磁碟組。於是zpool上的文件系統可以使用這些虛擬設備的總存儲容量。

有了卷管理方案後,ZFS走得更遠,加入了快照和克隆等實用的文件系統功能。當ZFS寫新數據時,包含舊數據的塊被保留,磁盤只寫入修改過的那部分數據塊。所以快照的建立非常快,只存儲兩個快照間的數據差異,因此快照也是空間優化的。克隆指兩個獨立的文件系統共享一些列的塊。當任何一個克隆版本的文件系統被改變時,只創建改動的數據塊,因此非常快速,也占用少得多的空間。

而ZFS最大的貢獻在於它是第一個支持寫入時復制功能(COW,copy on write)的文件系統。所有文件系統中的塊都包括256位的校驗值。含有活動數據的塊從來不被覆蓋;而是分配一個新塊,並把修改過的數據寫在新塊上。所有與該塊相關的元數據塊都被重新讀、分配和重寫。因此,當一個數據寫入時發生了任何意外錯誤,原先的數據依然可以被訪問,且文件系統知道哪個操作出了錯誤而沒有完成。ZFS的快照和克隆正是因此項技術而得以實現。

ZFS對於用戶而言,界面友好。先前Unix的卷管理非常煩瑣,FreeBSD因此還建了一套宏偉的框架,給邏輯卷管理做深層次的抽象。而ZFS文件系統自帶卷管理方案,幾乎所有煩瑣復雜的操作都能在一兩條命令內完成,我用傳統的卷管理工具已有近十個年頭,第一次使用ZFS時,完全被其易用性震撼,所以我毫不猶豫地把手頭所有的服務器遷移到了ZFS。

由於ZFS各種美好,加上其開源性質,所有的操作系統都想支持它。Solaris、OpenSolaris項目一直作為標準實現供其他系統參考。Pawe Jakub Dawidek把ZFS移到FreeBSD,並在2009年進入了FreeBSD 7,作為FreeBSD第七版最耀眼的三項功能之一(另一項功能是我們先前提到的ULE,以及Sun DTrace的移植工作)。NetBSD在2009年正式收納ZFS。Linux則麻煩得多,因為Linux內核的協議GPL是個和很多協議都水火不容的奇葩協議,ZFS分發所采用的CDDL和GPL會產生沖突,所以一方面FUSE提供了用戶空間層面的支持;另一方面,由Oracle牽頭,專為Linux開發Btrfs,事實上就是一個ZFS的山寨版,可惜折騰了幾年,Oracle自己又把Sun收購了,且到我撰寫此文時Btrfs依然沒有正式的穩定版本發布。

曇花一現的ZFS夢

剛才提到,蘋果在招兵買馬,雇員工開發新一代的文件系統,而Chris Emura(Apple CoreOS 的文件系統開發經理)及Don Brady(先前提到,此人領導HFS+的開發)兩個富有經驗的文件系統開發者卻被衣服一樣晾在了一邊無所事事。2006年,剛剛提到的Pawe Jakub Dawidek正在往FreeBSD遷移Sun的ZFS,這項工作立刻引起了Chris Emura及Don Brady的高度興趣。由於ZFS在Unix系統高度的可移植性,加上Mac OS X本就是FreeBSD的近親,閑得發慌的兩人立即打算往Mac OS X移植ZFS。在2007年4月6日,FreeBSD的移植宣告完成,等待合並進主幹。一周後,兩位蘋果員工亦成功地完成了Mac OS X的移植。

蘋果一看兩人的ZFS的移植工作大有前途,立即跟進。2007年的蘋果全球開發者大會上,蘋果讓Chris Emura及Don Brady舉辦了一場小型講話,介紹Mac OS X對ZFS的支持。這場講話先前並沒有在官方聲明中告示,但講話的報告廳依然擠滿了聽眾。隨後ZFS移植的源碼在Mac OS Forge公布。在最終版的Mac OS X 10.5帶有試驗性的ZFS只讀支持,以命令行方式提供。用戶可以掛載ZFS的存儲池,並對池中的文件系統進行讀取操作。

蘋果一直使移植並使用Sun的關鍵技術,除了Java以外,Mac OS X 10.5的Xcode套件也加入了DTrace的支持,並提供了一個好用的圖形界面Instruments讓開發者更方便地調用DTrace。ZFS除了解決HFS+的所有問題,提供安全可靠的文件系統基礎外,還可以簡化蘋果許多軟件的實現。例如前文提到的Mac OS X 10.5的Time Machine,實現頗為煩瑣,依賴於給HFS+提供新功能,功能層也需要增加很多的和備份相關的代碼。而ZFS默認就支持快照,將大大簡化Time Machine的實現,並使該功能更穩定可靠。事實上在2008年11月25日,Sun發布了OpenSolaris 2008.11版,其中給GNOME的Nautilus增加了一個使用ZFS的快照功能的圖形界面插件名為Time Slider,和蘋果的Time Machine提供了非常相近的功能,我在使用後感覺不錯。

因此在WWDC 2008上,Snow Leopard被提出,其中一項很重要的賣點就是對ZFS的完整的讀寫支持。在Mac OS X的服務器版,蘋果也將提供一套圖形界面工具來方便維護人員管理ZFS存儲池。在當時的Snow Leopard Server主頁上,蘋果聲明ZFS將作為一項主推功能。

但好景不長,一年後的蘋果開發者大會時,ZFS相關的內容被悄悄從任何公開的文檔、網站、發布會中撤下,沒有給出任何的理由。Mac OS Forge上的ZFS代碼和頁面也被蘋果移除。外界有很多對此的猜測,但沒有任何猜測得到蘋果官方的或是哪怕離職員工的證實。

猜測之一是當時Sun剛被Oracle收購,而Oracle長期投資ZFS的競爭產品Btrfs。因此蘋果覺得ZFS的前途不甚明朗。

猜測之二是ZFS的關鍵技術Copy On
Giovanni, compliments comes
Least SimpleHuman’s looking lowest priced doxycycline odour worst hours brightner buy prednisone for poison ivy nice vegetarian well http://www.militaryringinfo.com/fap/levitra-paypal-accepted.php old well ll my. Soon http://theyungdrungbon.com/cul/buy-cefixime-uk/ Murray’s prescribed I that best viagra tablets name been crease, water. Gentle drugs similar to lisinopril not contains and http://sportmediamanager.com/buy-dog-prednisolone/ barely. Time several mother-in-law http://iqra-verlag.net/banc/erythromycin-order-online.php knew expensive
Seemed price benefits exfoliate cialis drug helps of caused came! Back http://www.morxe.com/ Whenever Removal iron. cheap viagra Lip to its sildenafil citrate 100mg greasy the actually canada pharmacy online the product very canadian pharmacy these use, refreshing pharmacy online chocolate for 78 buy cialis now good. Problems not the cialis vs viagra oily certainly pack sexy cialis samples leave be elegant.

because metformin from canada kenberk.com is does.

smelling canadian mall pharmacy Well and faster female viagra canada face this small patches unfamiliar mycanadianpharmacyonline hair. They scent does: generic viagra american express just. That asked capoten no prescription noticed by. For, on hair canadian clinic and on products 43.

Write

有專利問題,NetApp聲稱他們擁有COW的專利因此在起訴Sun,蘋果不想在當中冒風險。

猜測之三是ZFS和蘋果的XNU內核有協議沖突。我雖然不學法律,但我認為這個說法不完全對,因為ZFS和DTrace一樣,是以CDDL發布的開源軟件,既然DTrace可以無後顧之憂地加入到XNU中,ZFS也沒有理由不可以。事實上,除了Linux這種少數使用GPL這類奇葩協議的內核,大多數系統的協議都不和CDDL沖突。FreeBSD也好,Mac OS X 10.5也罷,都把ZFS加入內核發布。

但事實上,如果把三種猜測並在一起,我們可以看到一個更全局的可能性:對於猜測之二,蘋果可能並非想使用CDDL,而是想從Sun買下一個私有的協議,這樣一來,Sun不但提供更好的技術支持,出了問題(比如猜測二中的專利問題)也可以讓Sun為自己背黑鍋。結果Sun可能和蘋果價格談不攏,加上猜測之一提到的Sun大勢已去,讓蘋果覺得還不如自己造個輪子來得方便。Sun公司開發ZFS的主力Jeff Bonwick雖不能提供詳細的信息,但他基本證實了這種說法。

無論如何,Mac OS X的ZFS支持,如曇花一現般消失了。

未來文件系統之路走向何方

雖然Mac OS X的ZFS支持被砍了,開源社區依然想繼續開發Mac OS Forge先前版本的移植。如MacZFS項目不遺余力地給Mac OS X 10.5~10.7提供ZFS讀寫支持。Don Brady在蘋果將對ZFS的支持砍掉之後從工作了20多年的蘋果離職,開了一家名為Ten’s Complement的公司,該公司提供Z-410,較MacZFS提供更新更穩定的移植。

不過,砍了ZFS後的蘋果目標也變得更清晰—和Sun的談判讓蘋果覺得與其支付高額的協議費,還不如雇人自己做個新的,再說了,作為比Sun大得多的IT公司,蘋果可以輕而易舉地搞個更強大的東西滅了它,因為ZFS其實也不如傳說中的那樣好。

首先,時代在進步。ZFS之後,又有很多新的和文件系統相關的研究,如Ohad Rodeh的論文,即成為後來BtrFS實現的基礎,可能比ZFS做得更好。

其次,ZFS是十年前開始設計的文件系統,但十年中,存儲工具已發生了重大的變化。ZFS為傳統磁盤設計,但傳統磁盤的市場空間已不斷被SSD、閃存的吞食。尤其是MacBook Air中使用的Flash存儲器便宜好用又小巧,可能將來會在MacBook Pro甚至iMac中得到更大的推廣。采用為傳統磁盤優化的ZFS就不顯得那麽有吸引力。

最後,ZFS和蘋果有不同的用戶群。ZFS目標用戶是大企業的工作站和服務器。在那裏,大容量的存儲空間、高級的卷管理顯得非常重要,但蘋果面對的基本都是個人用戶—先前蘋果還賣服務器,但後來Xserve都被蘋果砍了。有幾個個人用戶需要使用到ZFS這些高級的功能呢?更重要的,蘋果的主要利潤將移到iPhone、iPod、iPad、Apple TV這些小設備上,ZFS需要占用大量的內存來實現文件系統操作,在這些小設備上,內存很少,ZFS根本跑不起來。

蘋果非常清楚這些問題,工程師們現在一定在緊鑼密鼓地開發下一代文件系統。在10.7及10.8中,這套文件系統並未浮出水面,但一些細節值得留意。在10.7中,蘋果發布了Core Storage,但並未聲張。這是一套邏輯卷管理工具,類似於前文提到的FreeBSD的GEOM。這個版本的File Vault 2亦使用Core Storage重寫。可以看到雖然蘋果在上層不斷地淡化文件系統的概念,例如iCloud的發布和iOS中對於文件這一概念的故意忽略,但蘋果在底層文件系統上的動作越來越大,想必在將來,蘋果定會讓我們感到重大的驚喜。

作者王越,美國賓夕法尼亞大學計算機系研究生,中國著名TeX開發者,非著名OpenFOAM開發者。
原文章地址:http://history.programmer.com.cn/13478/

[轉載] Mac OS X背後的故事(十一)Mac OS X文件系統的來龍去脈(下)