Virtualization

FreeNAS 作為虛擬文件伺服器的風險

  • October 17, 2016

關於 FreeNAS 是否可以作為虛擬機執行存在很多爭論。

官方的立場是可以,但是需要額外的配置

如果我不能保證我可以遵循這些建議,我是否比我執行帶有 EXT4/XFS 的 vanilla Linux 系統或帶有 UFS 的 FreeBSD 更容易發生故障 - 尤其是災難性故障?

具體來說,假設我不能進行 PCI 直通,也不能禁用寫記憶體。此外,我將只有一個用於儲存的虛擬磁碟(由硬體 RAID 支持的 VMDK),因此沒有 RAIDZ。顯然,會有備份。

編輯:澄清我為什麼要這樣做 - 我需要一個文件伺服器,這是我必須使用的基礎設施。如果需要,我可以獲得額外的虛擬磁碟來設置 RAIDZ,否則就是這樣。我一直在尋找一個好的文件伺服器解決方案,而 FreeNAS 似乎符合要求。除了所有這些關於虛擬化 ZFS 以及如何失去所有數據和損壞備份的可怕警告。

我意識到在這個基礎設施上部署 FreeNAS 是有風險的。我的問題是:它比替代品風險更大嗎?

EDIT2:我似乎無法傳達我的意圖。帶有 ZFS 的 FreeNAS 是一個堅如磐石的 NAS 平台。但是,從我所閱讀的內容來看,如果您在標準 VM 配置上執行 ZFS,似乎使 ZFS 作為裸機文件伺服器更可靠的功能實際上可能對您不利。如果是這樣,那麼在標準 VM 設置上使用不同的文件系統是更好的選擇(即沒有直接 IO,啟用寫入記憶體)。這是一個正確的評估嗎?

一般回答

如果我不能保證我可以遵循這些建議,我是否比我執行帶有 EXT4/XFS 的 vanilla Linux 系統或帶有 UFS 的 FreeBSD 更容易發生故障 - 尤其是災難性故障?

風險不同,不能直接比較。

  • 我總是更喜歡 ZFS 系統,即使沒有冗餘 vdev,如果只是為了了解數據完整性(即使我必須從備份中恢復,我想知道必須從備份中恢復,而不是靜默損壞我不是甚至知道)。諸如send/recv快照之類的功能也使您的生活更加輕鬆,並且與完整性無關。
  • 說到災難性故障,只有備份才能防止這種情況發生,即使您的正常系統非常可靠,您也需要它們,因此首先從備份開始(就像您已經做過的那樣)以消除這種情況並然後考慮您需要哪些其他服務質量以及您可以忍受哪些缺點。
  • 理論上,更複雜的系統更容易出錯,但由於所有提到的文件系統都超過 10 年,並且被積極使用和維護,我想說大多數錯誤已經被解決(這並不意味著沒有留下, 當然)。
  • 有人可能會爭辯說,寫時復製文件系統本質上更安全,因為它們永遠不會覆蓋實時數據,因此不會破壞它。我認為這種風險更具理論性,並且更多地受到其他事物的影響,例如實際實施和元數據的處理。

具體到您的情況

如果您查看參考的建議並對其進行剖析,您會注意到以下幾點:

  1. 如果您沒有使用 PCI 直通(更多內容見下文),那麼您必須禁用 ZFS 中的清理任務。硬體可能對 ZFS “撒謊”,因此清理可能造成的損害大於好處,甚至可能永久破壞您的 zpool。

Scrub 只是讀取底層 vdev 的每個塊並驗證它們的校驗和。如果您的虛擬磁槃無法解決這個問題,那就是垃圾,您應該關注它,而不是 ZFS。另一方面,如果您的虛擬磁碟已經在 SAN 上進行校驗和,那麼您的額外清理除了會導致額外的 I/O 之外什麼也不會做(它是無用的)。

  1. 第二個預防措施是禁用 SAN、NAS 或 RAID 控制器本身上發生的任何寫入記憶體。寫記憶體很容易讓 ZFS 混淆哪些內容已寫入或尚未寫入磁碟。這種混亂可能導致災難性的池故障。

如果您不信任硬體,這是一個很好的建議。當然,缺點是性能相當低。您可能也無法控制 SAN 設置,因此您需要將其視為從 ebay 購買並安裝到系統中的廉價磁碟 - 至少在理論上,任何事情都可能發生。

  1. 使用單個磁碟會使您容易受到池元數據損壞的影響,這可能會導致池失去。為避免這種情況,您至少需要三個 vdev,無論是條帶化還是 RAIDZ 配置。由於 ZFS 池元數據在可用的三個 vdev 之間進行鏡像,因此使用至少三個 vdev 來建構池比單個 vdev 更安全。理想情況下,首選具有自己冗餘的 vdev。

這可以作為一般建議,但有點吹毛求疵。假設您的 SAN 很糟糕,這將在某些情況下對您有所幫助(至少很幸運)。假設您的 SAN 是好的,這沒有任何作用,只會消耗您的空間和性能。在我看來,確保從物理磁碟到 SAN 到網路到 VM 主機到 VM 來賓的鏈同樣好,這樣您就不必在每一層都重新做所有事情。


FreeNAS 與其他

關於 FreeNAS 建議的一句話——它們當然可以作為建議,即針對普通觀眾的指南或提示。如果你跟隨他們,你不會比其他人更糟,甚至可能會更好。話又說回來,他們措辭嚴厲,這似乎是 FreeNAS 社區的常用語氣(至少從某些論壇海報來看)。我想他們只是想安全一點。我一直更喜歡ZFS 最佳實踐指南,因為它的措辭相當中立,只是呈現事實,由您決定。

同樣有趣的是,根據 FreeNAS 文件和論壇,如果你敢在 OmniOS(或 SmartOS 或 illumos或 Nexenta,我現在不記得了)人們測試了具有 512MB RAM 的系統並分享了他們如何配置它們的建議。總而言之,它更多的是關於細節的知識,選擇權留給每個人,而不是製定你應該遵循的規則。

隨著時間的推移,這個問題也將變得不那麼重要,並且隨著越來越多的系統在普通桌面和伺服器版本上切換到 ZFS,建議也會改變。Ubuntu 已經做到了,其他人肯定會效仿。如果在兩三年內 80% 的發行版使用 ZFS 或 btrfs,它們中的大多數執行虛擬化,所以這是一個有爭議的問題。

引用自:https://serverfault.com/questions/808233