ZFS 常見問題解答 及 ZFS Boot 問題探討

首先我們來看一下上月Snow Leopard Server活動上Apple 對SUN ZFS發表的評論:

綜觀計算機業界的整個歷史,這個行業往往推崇“奇思妙想”,原因在於它似乎喜歡給最新技術賦予近乎神奇的功效。ZFS(Zettabyte File System)常常發現自己被譽爲是這種“神奇子彈”。雖然ZFS可能不像某些人希望的那樣能包治百病,但它確實能以一種優雅的方式解決許多實際問題。

任何管理員發現HFS+、NTFS和UFS等不同的磁盤格式都存在一個問題,那就是它們根本不是爲直接管理的磁盤容量和文件大小而設計的。這倒不是說它們不是出色的工具,但如果開始在數TB、數百TB及更大容量的磁盤上運行HFS+、NTFS和 UFS之類的格式,它們的侷限性就會體現出來。即便採用了日誌(journaling)等方法,要是出了什麼問題,解決起來也很費時間。而文件系統中的文件數量越多,保證修復文件系統的可能性就越小。RAID、快照及其他可靠性方面的改進等機制應用到了這些文件系統上,它們能起到作用。但凡是有組裝車的人都知道,不管你怎樣改動大衆汽車的發動機,它仍不是一輛噴氣式汽車。

Sun在ZFS方面高瞻遠矚,開發的文件系統着眼於未來,所以ZFS能夠從根本上防止破壞出現,取代了chkdsk和fsck等實用程序。從一開始,快照、糾錯和冗餘就成了ZFS設計的一部分,另外還支持存儲池和動態卷擴展。雖然目前大多數文件系統是 64位文件系統,ZFS卻是128位文件系統。沒錯,有一天連128位文件系統也會太小,但這一天不會很快到來,所以管理空間實際上是無限的。

據OpenSolaris ZFS Boot Project的FAQ聲稱,使用ZFS作爲引導/根文件系統仍處於“太先進了,會傷人”的階段。它往往耗用CPU相當多的週期來完成工作。儘管ZFS不適合消費級文件系統,但確實是能夠滿足服務器存儲要求的出色的文件系統: 需要資源的主要是文件和文件系統的完整性,而不是Photoshop或者《魔獸世界》之類的應用。

普通iMac用戶可能不太關心數艾字節(EB,1EB=1000TB)的磁盤卷、支持目錄裏面有數十億個文件的功能。但對支持大量用戶和進程的服務器而言,這些問題正從“飛艇城市”幻想階段進入到“幾年後我們會需要它”的模式,而這些正是ZFS有望解決的幾種問題。



ZFS 常見問題解答

  • 如何獲得 ZFS?
  • ZFS 何時適於<在此處插入操作系統>?
  • ZFS 代表什麼?
  • 爲什麼 ZFS 具有 128 位容量?
  • ZFS 有哪些限制?
  • 爲什麼 ZFS 沒有類似於 fsck(1M) 的實用程序?
  • 爲什麼 du(1) 爲 ZFS 和 UFS 報告的文件大小不同?
  • 如果每次引導時 ZFS 都出現故障,應該怎麼做?
  • ZFS 是否支持熱備件?
  • 能否從 ZFS 存儲池中移除設備?
  • 能否將 ZFS 用作根文件系統?
  • 在羣集環境中是否支持 ZFS?
  • 哪些第三方備份產品支持 ZFS?
  • ZFS 是否可以與 SAN 連接的設備一起使用?
  • 爲什麼 ZFS 沒有用戶或組配額?


如何獲得 ZFS?ZFS 可在以下發行版中獲得:
 

  • OpenSolaris 發行版,內部版本 27a 及更高版本
  • Solaris Express 發行版
  • Solaris 10 6/06 發行版和 Solaris 10 11/06 或更高發行版


ZFS 何時適於<在此處插入操作系統>?

現在有幾個項目正在進行中,這些項目要將 ZFS 移植到 FreeBSDLinux(使用 FUSE)。有關 CDDL 的更多信息,請參見有關許可的常見問答

ZFS 代表什麼?
最初,ZFS 是 "Zettabyte File System" 的首字母縮寫。我們喜歡的最大 SI 前綴("yotta" 是不可能的)是 "zetta"。由於 ZFS 是一個 128位文件系統,這表示 ZFS 可以存儲 256 x 1015 ZB(其中,每個 ZB 是 270 字節)。隨着時間的推移,除了 128 位容量之外,ZFS 還具備許多其他功能,如穩定的數據完整性、易於管理和用於數據管理的簡化模型。

爲什麼 ZFS 具有 128 位容量?
業已證實,文件系統的生命週期比大多數傳統軟件各部分的生命週期長得多,原因在某種程度上是盤上格式非常難以更改。考慮到 UFS 的當前格式(大部分)已沿用了將近 20 年,因此讓 ZFS至少在未來 30 年內保持格式的一成不變也是合理的期望。就這一點,摩爾定律開啓了存儲領域的新紀元,我們可以預測,將能夠在單個文件系統中存儲超過 64 位的數據。有關此主題的更詳細說明以及 128位足夠使用的原因,請參見 Jeff 的博客文章

ZFS 有哪些限制?

ZFS 的限制如此寬泛,以至於在任何實際的操作中都不會遇到任何限制。ZFS 可在每個存儲池、文件系統、文件或文件屬性中存儲 16 百億億字節。ZFS 可存儲幾十億個名稱:目錄中的文件或目錄、文件系統中的文件系統,或文件系統中的快照。ZFS 可存儲幾萬億個項目:文件系統中的文件、文件系統、卷或存儲池中的快照。

爲什麼 ZFS 沒有類似於 fsck(1M) 的實用程序?
需要具有類似於 fsck(1M) 的實用程序的基本原因有兩個。
 

  • 驗證文件系統完整性-很多時候,管理員只想要確保其文件系統中沒有出現盤上損壞。對於大多數文件系統而言,當文件系統處於脫機狀態時,就需要運行 fsck(1M)。這可能既耗時,成本又高。ZFS 在系統運行時提供了“清理”存儲池中所有數據的功能,從而可在該過程中查找並修復任何壞數據。根據將來計劃,會增強此功能以便實現後臺清理,並精確跟蹤哪些文件包含無法更正的錯誤。
  • 修復盤上狀態-如果機器崩潰,有些文件系統的盤上狀態將不一致。添加的日誌記錄功能已解決了其中一部分問題,但無法滾動日誌仍可能導致文件系統需要修復。在這種情況下,就會出現已知的異常錯誤(如在更新父鏈接之前創建目錄條目),不過這些錯誤能夠可靠地修復。ZFS 不會遇到此問題,因爲盤上數據總是一致的。
    如果硬件或軟件出現故障,則會引發更具危害性的問題。即使那些文件系統或卷管理器具有基於塊的校驗和功能,也易於出現各種其他異常,進而生成有效但損壞的數據。在這種情況下,故障模式本質上是隨機的,大多數文件系統將出現故障(如果是元數據),或無提示地將壞數據返回到應用程序。在上述任意一種情況下,使用 fsck(1) 實用程序幾乎沒有作用。由於這種損壞與已知異常不符,因此它可能無法修復。如果使用ZFS,從統計學意義上講,上述錯誤在冗餘配置中是不存在的。在非冗餘配置中,會正確地檢測到這些錯誤,但在嘗試讀取塊時會導致 I/O 錯誤。理論上可以編寫一個工具來修復此類損壞,但進行這樣的嘗試可能要使用特殊的一次性工具。當然,ZFS 同樣易於受軟件錯誤的影響,但這些錯誤所導致的一致性損壞模式使用普通工具即可修復。在 5 年的 ZFS 開發過程中,還沒有出現過這樣的模式。
  •  

爲什麼 du(1) 爲 ZFS 和 UFS 報告的文件大小不同?
在 UFS 中,du(1) 報告文件內數據塊的大小。在 ZFS 中,du(1) 報告磁盤中存儲的文件的實際大小,其中包括元數據和壓縮數據。這確實有助於回答此問題:“如果刪除此文件,將釋放出多少額外空間?”。因此,即使在壓縮處於關閉狀態時,您仍會看到 ZFS 和 UFS 之間的不同結果。

如果每次引導時 ZFS 都出現故障,應該怎麼做?
根據設計,ZFS 通過使用冗餘(鏡像或 RAID-Z)技術在發生任意硬件故障時保持完好。遺憾的是,非複製配置中的某些故障可能導致在嘗試裝入存儲池時 ZFS 出現故障。這是一個錯誤,將在不久的將來得以修復(還會增強其他幾個很好的功能,如後臺清理以及查看已損壞文件列表的能力)。同時,如果發現您自己遇到因存儲池損壞而無法引導的情況,請執行以下命令:
 

  • boot using '-m milestone=none'
  • # mount -o remount /
  • # rm /etc/zfs/zpool.cache
  • # reboot

這將從系統中刪除有關存儲池的所有信息。您將必須重新創建存儲池,並從備份恢復。

ZFS 是否支持熱備件?
支持,ZFS 熱備件功能可用於 Solaris Express Community Release(內部版本 42)、Solaris Express July 2006 發行版和Solaris 10 11/06 及更高發行版。有關熱備件的更多信息,請參見 ZFS 管理指南。

能否從 ZFS 存儲池中移除設備?
ZFS 支持通過 "zpool detach" 從鏡像中移除設備。當前不支持移除頂級 vdev(如整個 RAID-Z 組或未鏡像的磁盤)。計劃在將來的發行版中增加此功能。

能否將 ZFS 用作根文件系統?
ZFS 文件系統當前不能用作根文件系統,但將來支持此功能!ZFS Boot 項目的目的就是提供 ZFS 文件系統的引導和安裝支持。敬請等待 ZFS Boot 發行計劃的消息!

在羣集環境中是否支持 ZFS?
SunCluster 3.2 支持本地 ZFS 文件系統在 Solaris 10 11/06 發行版中用作高可用性 (highly available, HA) 系統。此支持允許在系統間進行實時故障轉移,以及在系統間自動導入存儲池。

如果使用 SunCluster 3.2 將本地 ZFS 文件系統配置爲高可用性,請留意一下以下注意事項:
不要將已配置的仲裁設備添加到 ZFS 存儲池。如果將已配置的仲裁設備添加到存儲池,將重新標記磁盤,仲裁配置信息將丟失。這意味着磁盤不再向羣集提供法定票數。將磁盤添加到存儲池之後,您可以將該磁盤配置爲仲裁設備。或者,可以取消該磁盤的配置,將它添加到存儲池,然後將該磁盤重新配置爲仲裁設備。

建議不要在 Nevada 發行版中將 SunCluster 3.2 與 HA-ZFS 一起使用。
ZFS 不是本機羣集,也不是分佈式文件系統或並行文件系統,因此不能提供來自多臺不同主機的併發訪問。當在分佈式 NFS 環境中共享時,ZFS 表現優異。

從長遠觀點來看,我們打算就 ZFS 作爲本機羣集文件系統進行研究,以便實現併發訪問。目前還未開展這項工作。

哪些第三方備份產品支持 ZFS?

  • EMC Networker 7.3.2 可備份和恢復 ZFS 文件系統,包括 ZFS ACL。
  • Veritas Netbackup 將在 6.5 版中提供 Netbackup 支持,該版本計劃在 2007 下半年發行。當前版本的 Netbackup 可備份和恢復 ZFS 文件系統,但不保留 ZFS ACL。
  • IBM Tivoli Storage Manager 可藉助 CLI 工具備份和恢復 ZFS 文件系統,但 GUI 可能會排除 ZFS 文件系統。就像 Netbackup 產品一樣,不保留重要的 ZFS ACL。
  • Computer Associates 的 BrightStor ARCserve 產品可備份和恢復 ZFS 文件系統,但不保留 ZFS ACL。


ZFS 是否可以與 SAN 連接的設備一起使用?

可以,ZFS 可以與直接連接的設備或 SAN 連接的設備一起使用。但是,如果存儲池不包含鏡像或 RAID-Z 頂級設備,則 ZFS 只能報告校驗和錯誤,但不能更正這些錯誤。如果存儲池由鏡像或RAID-Z 設備(使用 SAN 連接的設備中的存儲構建)組成,則 ZFS 可報告校驗和錯誤,還可以對這些錯誤進行更正。

例如,考慮一個 SAN 連接的硬件 RAID 陣列,設置該陣列以便向基於其內部鏡像磁盤的 SAN Fabric(結構)提供 LUN。如果使用此陣列中的一個 LUN 來構建單磁盤池,則該存儲池將不包含 ZFS 更正檢測到的錯誤所需的副本數據。在這種情況下,ZFS 無法更正該陣列引入的錯誤。
如果使用此陣列中的兩個 LUN 來構建鏡像存儲池,或使用三個 LUN 來創建 RAID-Z 存儲池,則 ZFS 將擁有可用於更正檢測到的錯誤的副本數據。在這種情況下,ZFS通常可更正該陣列引入的錯誤。

在 ZFS 存儲池缺少鏡像或 RAID-Z 頂級虛擬設備的所有情況下,存儲池的生存能力完全取決於基礎存儲設備的可靠性。
如果 ZFS 存儲池僅包含單個設備,不管它是來自 SAN 連接的存儲還是直接連接的存儲,您都無法利用 RAID-Z、動態條帶化、I/O 負載平衡等功能。
ZFS 總是可以檢測到無提示數據損壞。有些存儲陣列可以檢測到校驗和錯誤,但無法檢測到以下種類的錯誤:
 

  • 意外覆寫或虛寫
  • 錯誤定向讀寫
  • 數據路徑錯誤
  •  

總的來說,ZFS 的設計考慮到與 SAN 連接的設備協同使用,但如果爲 ZFS 呈現更簡單的設備,則可以更好地利用所有可用功能。
總之,如果將 ZFS 與 SAN 連接的設備一起使用,可通過在 ZFS 存儲池中配置冗餘(即使冗餘在較低硬件級別上可用),來充分利用 ZFS 的自我修復功能。

爲什麼 ZFS 沒有用戶或組配額?
ZFS 文件系統可用作邏輯管理控制點,這樣,您便可以查看使用情況、管理屬性、執行備份、捕獲快照等等。對於起始目錄服務器,ZFS 模型使您可以輕鬆地基於每個用戶設置一個文件系統。ZFS配額並不特意與特定用戶關聯,因爲文件系統是管理控制點。
可以在能夠代表用戶、項目、組等的文件系統上設置 ZFS 配額,也可以針對文件系統分層結構的整個部分設置 ZFS 配額。這樣,便能以一些方式合併配額,而這些方式是傳統按用戶配額所無法實施的。之所以引入按用戶配額,是因爲多個用戶必須共享同一個文件系統。
ZFS 文件系統的配額非常靈活,而且易於設置。在創建文件系統時,即可應用配額。例如:
#
zfs create -o quota=20g tank/home/users
在此文件系統中創建的用戶文件系統會自動繼承在父文件系統中設置的 20 GB 配額。例如:
#
zfs create tank/home/users/user1

#
zfs create tank/home/users/user2

#
zfs list -r tank/home/users

NAME                    USED  AVAIL  REFER  MOUNTPOINT

tank/home/users        76.5K  20.0G  27.5K  /tank/home/users

tank/home/users/user1  24.5K  20.0G  24.5K  /tank/home/users/user1

tank/home/users/user2  24.5K  20.0G  24.5K  /tank/home/users/user2
如果在文件系統處於活動狀態時增大了 ZFS 存儲池中的磁盤空間,則可以增大 ZFS 配額,而不需要任何停機時間。
ZFS 小組正致力於改進多文件系統的管理,而不是嘗試使基於用戶的配額適合基於文件系統的管理模型,讓該模型用作控制點。
對於需要包含郵件所用磁盤空間的、基於用戶的配額,另一種方法是使用具備配額功能的郵件服務器軟件,如 Sun Java System Messaging Server。此軟件提供了用戶郵件配額、配額警告消息、配額到期和清除功能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章