iSCSI 之上的 ZFS

iSCSI 之上的 ZFS

我正計劃使用ZFS 和BSD 建立一個檔案伺服器,我希望透過iSCSI 連接儲存在同一機架中其他電腦中的磁碟機(例如,一台電腦運行ZFS,而其他電腦運行iSCSI),從而使其更具可擴充性可透過 ZFS 盒連接並新增至 zpool 的目標)。

尋找嘗試過此操作的其他人幾乎讓我找到了有關在 ZFS 之上公開 iSCSI 共享的資源,但沒有找到相反的資訊。我主要有以下幾個問題:

  • 千兆位元乙太網路上的 iSCSI 是否足夠快以實現此目的,或者我必須切換到 10GbE 才能獲得不錯的效能?
  • 當其中一台運行 iSCSI 目標的電腦與網路斷開連線時會發生什麼?
  • 有沒有更好的方法來做到這一點,只是我不夠聰明而沒有意識到?

在容量方面,最初大約是 10TB 的資料(不考慮冗餘),可預見的未來的合理目標是擴展到 20TB,因此在冗餘的情況下,總儲存量可能約為 40-50TB。如果可能的話,我們也希望使用 GELI 對所有資料進行加密。

謝謝你的幫忙。

答案1

您的容量目標是什麼?這絕對是可能的,因為 ZFS 能夠看到您的目標並將它們聚合到池中。然而,您需要考慮大量的性能和可靠性。

我對擴展的建議(根據我認為您的容量需求)是投資外部 SAS 多路徑電纜驅動器機箱和 ZFS 友好的控制器。如果在這種情況下您需要的不止於此,則由 提供的 24TB 可用 RAID 1+0 存儲外部外殼裝有 2TB 磁碟,那麼您就可以從專家的設計建議中受益。在這個層級上,使用其他系統中存在的磁碟的 iSCSI 不會使速度變得更快。

iSCSI 設計將因延遲、可靠性和可支援性原因而失敗。

答案2

至於您關於乙太網路 iSCSI 的問題 - iSCSI 是您能找到的最快的協定。它基本上是透過線路直接進行磁碟區塊存取。它將使一個像樣的千兆位元網卡飽和。

關於丟失網路上的目標,我見過的(幾乎)每個 iSCSI 目標實現都支援某種類型的多路徑。我認為 open-ietd 可能還不支援多路徑。最糟的情況是,您使用的是日誌檔案系統;當目標重新上線時,您可能必須重播日誌。我還沒有因為刪除儲存伺服器而損壞 iSCSI 上的檔案系統。

答案3

注意:我實際上還沒有這樣做過,所以對此持保留態度。我在閱讀 ZFS 時看到提到這一點,但現在找不到這些參考文獻...

您希望將每個實體磁碟匯出為單獨的 LUN,以便 ZFS 能夠完全了解實體佈局。這對於它做出有關 IO 調度和複製的正確決策是必要的。

千兆位元乙太網路上的 iSCSI 是否足夠快以實現此目的,或者我必須切換到 10GbE 才能獲得不錯的效能?

這取決於磁碟的速度、磁碟的數量以及您想要實現的效能。 15k RPM 磁碟的傳輸速度高達 105MiB/s,即 840Mbit/s。透過一條千兆位元鏈路存取多個此類磁碟將使鏈路飽和並使您的網路成為瓶頸。找到您想要使用的磁碟的最大速度,乘以磁碟數量,您將獲得支援該速度所需的網路頻寬。

當然,這假設您希望 ZFS 伺服器發揮最大效能。如果您只有少數用戶端連線速度超過 100Mbit/s,則沒有必要,因此請計算您期望的最大需求是多少。請記住,如果您使用 RAIDZ1/2/3,磁碟的頻寬略高於客戶端頻寬,當然,如果伺服器透過與客戶端存取伺服器相同的 NIC 存取磁碟,則此頻寬需要共用。

當其中一台運行 iSCSI 目標的電腦與網路斷開連線時會發生什麼?

ZFS 會將磁碟視為不可用。如果您使用 RAID1/2/3,這不應中斷對客戶端的服務。如果您配置了熱備用 ZFS 將開始向其重新同步資料。當 iSCSI 目標恢復時,ZFS 應該再次開始使用它,假設啟動器會自動重新連線。 (不過這是你應該測試的東西。)

相關內容