2008-12-05

[转]Apple 的 Mac OSX 要內建 ZFS?

听说zfs也不是一两天的事了,也看过对它的一些介绍,今天无意虽看到这一篇 ,比以前看到的好多了。发表时间是07年,文中说的zfs的问题应该解决了吧?

原文

--------------------------------------------------------

今天突然有在用 Mac 的人問我 ZFS 怎麼樣,說 Mac 下一版的作業系統要內建 ZFS 作為預設的檔案系統 ….


「Mac?你什麼時候開始玩 Mac 了?」認識我的人也許會這樣問。我當然是不會 Mac,只不過用了這麼一段時間的 ZFS,對這東西總是可以說幾句話的。

ZFS 到底是什麼東東?簡單的說,ZFS 就是 Sun 在 Solaris 10 裡所採用的一種新技術,是一種新的檔案系統,也是一種新的檔案系統管理軟體。

1. 以一般使用 PC 的人來說,買了一台電腦,裡面可能有一個硬碟,但是劃分成兩個區域,一個是 C 碟,一個是 D 碟;
2. 相信大家也有聽過所謂的 mirror (raid 1),就是把兩顆硬碟看成一顆,所有的資料會分別寫到這兩顆硬碟裡,容量跟一顆硬碟相同,但是可以保持資料安全;
3. 也有所謂的 stripe (raid 0),把兩顆硬碟結合成一顆大硬碟,這樣就有雙倍的容量,但是資料比較危險;
4. 更進一步的,很多人也都知道 raid 5,就是把至少三顆硬碟結合在一起,變成兩顆硬碟的容量,但是多了資料保護

這種劃分硬碟的技術我們稱為 volume management。

而每一個切出來的硬碟,通常在使用之前要先在上面做格式化,像是 FAT、FAT32、NTFS、UFS 之類的,才方便我們存放資料,這種東西叫做 file system。

也就是說,當我們要使用硬碟之前,要先用 volume management 之類的軟體劃分好硬碟的空間,再在上面格式化成我們想要的 file system,接下來才能儲存我們的資料。這個意思有點像我們要先買地,可能需要買好幾塊地拼成一大塊地(volume management),然後在地上蓋房子(file system),這樣才能住人(儲存資料)。

以前的 Solaris 用的 volume management 軟體是 disksuite,file system 是 ufs,但是說真的,不是非常強,功能也比較受限,一旦遇到不正常的重開機就要 fsck,耗時耗力資料又不夠安全,結果讓 veritas 的 volume manager 和 file system 大行其道,賣得比機器還貴,沒辦法,veritas 在這上面的技術真的比較好。

不過在 ZFS 出來之後,這種情形改變了,ZFS 身兼 volume management 和 file system 的功能,比以往的軟體都更強悍,而且完全免費,只要裝了 Solaris 10 就可以擁有 ZFS,不需要再花任何一毛錢!

在 volume management 的方面,ZFS 使用 pool 的觀念。可以想像一下我們使用記憶體(RAM),插 512 MB 的 RAM 機器可以運作,插 2GB 的記憶體,機器還是可以運作,我們不需要去劃分這 100MB 的記憶體給這個程式用、那 287 MB 給另一個程式,反正就是程式需要多少記憶體,就像系統要,如果還有足夠的空間,系統就會自動分配給應用程式,使用者不必操心,這就是 pool。

再想像一下,電腦裡只有一顆 80GB 的硬碟,但是想分成 C: 和 D: ,首先就得先決定兩個分割區分別為多大,可能是 C: 50GB D: 30GB 或是 C: 和 D: 都是40GB。這樣的分法有一個危險,就是如果 C: 的空間用完,明明 D: 還有很多空間,C: 卻完全用不到,在使用上會造成浪費與管理的困難度。

但是如果用了 ZFS,情形就會變成 C: 和 D: 合用這 80GB 的空間,而且不需要事先劃分好,這兩個分割區會自己瓜分 80GB 的空間,所以不會造成磁碟空間的浪費,也能達到將資料分開的目的。實際上,ZFS 可以使用 mirror、stripe、或是 raid z(類似於 raid 5 但是更強)或 raid z2 的技術把一堆硬碟合在一起,再劃分出不同的分割區,而這些分割區可以共用這一堆硬碟的空間,如果空間不夠,就再買硬碟加進這個 pool 就好,功能強大、管理簡單、使用上又很有彈性,這是 ZFS pool 的優點所在。

而在 file system 方面,ZFS 保證資料的一致性,如果硬碟出問題的話,也能線上修復資料,所以 ZFS 不再需要 fsck (請注意,連 veritas file system 都還需要 fsck),就算遇到斷電或不正常重開機,也可以保證資料的安全。我都跟同事開玩笑說,以後要回家了就直接拔電源,第二天上班再插上電源就好,不必再下什 麼 poweroff 或是 init 5 這種指令了。

當然,不需要 fsck 除了資料安全的考量,同時也會讓修復檔案系統的時間變成 0,不然一次不正常重開機之後,常常要做好幾個小時的 fsck ,不然檔案系統就不能用,這誰受得了呀!像 PTT 這兩天硬碟掛了,就貼一個告示

目前尚有一組硬碟檔案系統需要重建,一組未檢查,估計今天晚上(?)會好。

看到這種訊息,幾乎可以猜得出來,要嘛是磁碟陣列裡面在做硬體上的修復、要嘛是在作資料還原、不然就是在作 fsck,這三者都是超級花時間的。ZFS 能把 fsck 的時間降到 0,對使用者來說真是功德無量!在網路上看到有些人認為 ZFS 不是給窮人用的,因為要買很多硬碟,這是絕對錯誤的觀念,會說這種話的人只有從 volume management 的角度來講,認為要有很多硬碟才需要用到 volume management。實際上就算只有兩顆硬碟也可以用 ZFS,因為 ZFS 還有 file system 的功能,不用 fsck 與保證資料安全是在硬碟少的時候也很需要的。

當然,ZFS 也不是完美無瑕,現在它最大的問題是還不能當做開機硬碟的檔案系統,這很可惜!Sun 的目標是在下一版的 Solaris 10,也就是 Solaris 10 update 4 裡面加進這個功能,而 Solaris 10 update 4 預計在八月發行,所以再過兩個月就可以知道這個目標能不能達成了。

當然,很多網站提到 ZFS 都會先講這是一個 128 bit 的檔案系統,可以支援到很大很大很大很大的檔案系統!有多大?有 288 個 TB 這麼大。這樣說吧,我們電腦裡用的硬碟通常都是都不到 100GB,了不起就是 500GB,就說 500GB 好了,以一個硬碟厚兩公分來計算,把 500GB 的硬碟疊起來,從地球疊到太陽,也不過是 288 個 TB 的九牛一毛而已!只是我自己覺得這個功能一點都不重要,因為我不可能用到這麼大的硬碟容量,事實上就算科技進步得再快,我相信到我死的時候也不會有一顆硬碟可以達到這個容量的。

其實除了 Mac OSX 之外,FreeBSD 和 Linux 也有將 ZFS 移植過去的計劃,相信未來那些系統的使用者在用到 ZFS 的時候,也會像當初的我一樣,有驚艷的感覺。

以下是一些 ZFS 相關的網頁,有興趣的人可以去看看,
ZFS FAQ
ZFS admin guide
Sun CEO: ZFS will be the Leopard filesystem
一些 Apple users 的討論

没有评论:

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。