ZFS 作為本機儲存有意義嗎?

ZFS 作為本機儲存有意義嗎?

我正在閱讀有關 ZFS 的文章,並一度考慮在我的計算機中使用它,但與閱讀有關其內存要求的內容相比,我三思而後行。

使用 ZFS 作為本機儲存是否有意義,或者對於用作儲存的伺服器更有意義? (即使對於具有其他用途的伺服器來說,這似乎也是一種矯枉過正)。

答案1

ZFS 對記憶體需求不是特別高。

正如評論中指出的那樣,某些特徵ZFS 的功能(特別是重複資料刪除,還有 L2ARC)需要一定程度的記憶體才能發揮作用。

但是,除非您有需要使用這些功能的特定用例,否則您可能不會使用這些功能。

ZFS 及其第一層 ARC(自適應替換快取)並不比其他檔案系統和快取更需要記憶體。因為使用而不是例如最近最少使用快取演算法,在某些工作負載中它能夠更有效地利用可用的快取 RAM。

什麼是ZFS要求是ECC RAM。這在伺服器上無處不在,但在個人系統上很少見(許多低階 Intel CPU 甚至不支援 ECC RAM)。這個要求源自於ZFS的自癒特性,因為RAM 問題可能會破壞您的數據運行 ZFS 時。 ZFS 中沒有程式碼可以檢查這一點,部分原因可能是似乎沒有 100% 確定的方法可以從軟體中辨別出來系統是否使用ECC RAM。

ZFS 是否有意義取決於您想要做什麼,就像 NTFS 是否有意義也取決於您想要做什麼一樣。然而,ZFS 確實提供了其他檔案系統很少或沒有提供的一些功能,而這些功能在某些情況下非常有用。一些其中:

  • 保證端對端資料完整性。您將確定,如果特定讀取成功,它會傳回最初寫入該位置的相同資料。這意味著不存在靜默資料損壞;您要么取回數據,要么收到 I/O 錯誤。
  • 文件系統感知的條帶化和冗餘。普通 RAID 控制器將整個儲存設備視為一大堆區塊,根本不了解任何磁碟上的資料結構。由於ZFS結合了磁碟區管理和檔案系統,因此它能夠在面對錯誤時做出更聰明的決策。它還具有「最重要的優先」重新同步方案,這意味著對檔案系統功能至關重要的資料在發生故障後首先重新同步,而不太重要的資料則需要等待,無論資料位於磁碟上的哪個位置存放。
  • 分層緩存。例如,您可以擁有 RAM ARC,輔以快速 SSD L2ARC,並在旋轉 HDD 上儲存大量資料。對於可以以合理的準確度估計工作資料集的工作負載,這可以以相對較低的成本提供巨大的 I/O 效能改進,當然不需要全部採用 SSD。
  • 幾乎免費的文件系統。使用 ZFS,建立「檔案系統」與在大多數現代檔案系統中建立目錄幾乎沒有什麼不同。文件系統可以有不同的配額,包括最大配額和保證配額。因此,對於 ZFS,通常建議將檔案系統用作管理邊界;例如,在大型伺服器上,每個使用者的主目錄可以是自己的檔案系統。這將目錄樹的各個部分相互隔離,而無需建立單獨的常規分區和檔案系統所帶來的開銷。例如,我使用文件系統來分隔每年的電子郵件檔案或每個月的照片。
  • 幾乎免費的快照。我不知道有多少次,我能夠回到幾個小時前的文件樣子,從而避免了一些令人尷尬的錯誤。備份提供類似的能力(並且仍然需要,因為再多的 RAID 也不是備份),但快照更容易獲得。在 ZFS 中,快照本身只需要幾千位元組的元資料存儲,無論相關檔案系統中的資料量有多少,並且不會產生顯著的效能成本。

不需要僅僅因為您使用 ZFS 就需要使用這些。但它們就在那裡,如果您希望啟用它們,通常只需一個命令即可。

現在,這些是不是「太過分了」?這實際上在很大程度上取決於您想要做什麼。我在我的家庭系統上運行 ZFS(帶有 ECC RAM)。在大多數情況下,它一直在悄悄地運行,不會比任何其他文件系統產生更多的噪音(可能更少),但它實際上至少一次使我免於數據損壞(清理發現了一些扇區)那些出現問題的地方,以及自動、靜默地修復數據不需要我的干預)。就我個人而言,我認為我保存這些數據是有原因的這個原因很可能是我想稍後參考數據。現在考慮一下宇宙討厭你的數據

隨著儲存大小的不斷增加和基本恆定的誤碼率(每個媒體類別),I/O 錯誤不會變得不那麼常見。看看我首選的經銷商,Seagate 和 HGST 都提供 8 TB HDD,價格較高但並不極端,當然在個人可以負擔的範圍內。大約是 6.4×10^13 位。誤碼率為 10^-14,甚至一個完整的媒體讀取通道統計上很有可能遇到導致整個 (4 KiB) 扇區不可讀的 I/O 問題。 (當我們達到 10 TB HDD 時,統計數據顯示一次全盤讀取會遇到至少一個不可讀的磁區.)有研究表明未被發現的讀取錯誤發生的頻率比我們願意承認的要高得多,這讓 HDD 製造商努力改進磁碟 ECC 演算法,儘管我沒有現成的連結。 NTFS、ext4、UFS+、HFS+ 等當代檔案系統還沒有準備好處理這種情況。

這就是 ZFS 和 Btrfs 等檔案系統旨在填補的空白。

相關內容