Ceph

Ceph OSD 和日誌驅動器

  • January 28, 2017

我的每個 ceph OSD 伺服器都有一個單獨的驅動器。每個 OSD 主機有 4 個數據驅動器。一個日誌驅動器是否為 4 個服務?日誌驅動器是否共享?每個數據驅動器都應該有一個分區嗎?

日誌/數據分離

如果每個 OSD 主機只有這四個驅動器,並且所有驅動器都具有相似的性能,那麼通常/推薦的設置是每個磁碟有一個 OSD(即每個伺服器 4 個),每個 OSD 的日誌文件都在同一個磁碟作為數據。

另一種流行的(至少從歷史上看)設置是將日誌放在單獨的驅動器上,這些驅動器針對寫入吞吐量和延遲進行了優化;通常是固態硬碟,最好是具有“斷電保護”功能的固態硬碟,這樣它們就可以快速確認“同步”寫入,而不必寫入快閃記憶體陣列(這可能有點慢)。在此設置中,通常在多個 OSD(數據)驅動器之間共享一個日誌 SSD。例如,我們的 OSD 伺服器有 8 或 10 個用於 Ceph OSD 的 spin-rust 驅動器,並且日誌分佈在兩個 SSD 上。

分區

如果您的數據和日誌在同一個物理磁碟上,我個人會將它們放在同一個分區/文件系統上。主要是因為我擔心如果它們位於單獨的分區上,那麼當 OSD/文件系統在日誌和(後台)數據寫入之間交替時會有很多磁頭移動。我不確定這實際上是一個問題,在 SSD 上肯定不是。一般來說,單獨的分區會給你一些優化機會,即不同的文件系統參數甚至文件系統類型,或者根本沒有文件系統用於日誌。這是以操作複雜性為代價的,例如,當添加或更改日誌的大小時,您需要重新分區磁碟。

在我們將數據放在旋轉磁碟上的數據和(較少)獨立 SSD 上的日誌的設置中,每個旋轉磁碟 (OSD) 有一個分區,每個 SSD 上有一個專用的“日誌”分區;每個分區包含 4-5 個日誌文件。我們的日誌文件大小為每個 6 GiB,因此日誌分區為 40 GB 左右。

買者自負

這種設置是基於幾年的經驗和對 SSD 壽命和文件系統/SSD 效率(延遲、吞吐量)的考慮而發展起來的。它不一定是最佳的,但它是一個棘手的領域…… OSD 日誌有一個特殊的訪問模式:只寫到一個循環緩衝區,經常“同步”。根據使用情況(以及控制器和文件系統的智能性),SSD 的延遲(尤其是寫入)可能會有很大差異;Ceph 僅在 N(通常為 3)寫入已送出到穩定儲存時才確認寫入,這一事實可能會加劇延遲峰值。總的來說,我認為這仍然是一門(黑暗的?)科學,您肯定需要考慮預期的使用模式,因此請謹慎對待所有建議,尤其是這裡的這些建議。

哦,我所說的一切都是針對“經典”Ceph,其中數據儲存在 XFS/ext4/ 等文件系統中……隨著即將到來的“BlueStore”,這些考慮可能不再(全部)適用。

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