WAL/DB 該配多大,不同 Ceph 版本的建議不同,實際配置前請對照當版官方文件。

從 VMware vSAN 轉到 Proxmox 加 Ceph 的人,常卡在一個問題:建 OSD(Ceph 的儲存單位,通常一顆硬碟一個)時,WAL 和 DB 到底要不要設、設在哪裡?

先講結論:它們是「寫入快取」和「索引」

現在 Ceph 預設的儲存引擎 BlueStore,把中繼資料存在一個叫 RocksDB 的資料庫裡:

  • WAL(Write Ahead Log):寫入資料時先寫進這份日誌,再慢慢落到資料碟,確保資料一致。
  • DB:存放中繼資料的資料庫,也就是「資料放在哪裡」的索引。

把這兩樣搬到快速的硬碟(例如 NVMe),就等於幫慢速的傳統硬碟加上寫入快取+索引加速。

用 vSAN 的觀念對照

Ceph vSAN 對應
WAL 寫入緩衝(快取層)
DB(RocksDB 中繼資料) 中繼資料層

差別在於:Ceph 把 DB 明確放在你指定的硬碟上,vSAN 則比較依賴記憶體和快取層。

為什麼不設就會慢

建 OSD 時如果沒指定獨立的 WAL/DB 碟,Ceph 會直接在資料碟上切一塊來放。資料碟如果是傳統硬碟,寫入和查詢索引都要在同一顆慢速碟上進行,這正是很多 Ceph 叢集「怎麼這麼慢」的主因。Proxmox 官方的 Ceph 文件,也把「用更快的硬碟放 DB/WAL」列為加速的主要方法。

要注意的風險

用一顆 NVMe 承載好幾個 OSD 的 WAL/DB 很常見,但要記得:那顆快速碟一壞,掛在它上面的所有 OSD 會一起失效。 一顆快速碟要帶幾個 OSD,要在效能和風險之間取得平衡。

小結

WAL/DB 不是可有可無的進階選項。如果你的 Ceph 資料碟是傳統硬碟,把它們放到快速碟上,通常是改善效能最直接的一步——只是別把太多雞蛋放在同一顆 NVMe 裡。

資料來源

  • 本人超融合架構研究筆記(2026-01;未標註 Ceph 版本)
  • Proxmox VE 官方 Ceph 部署文件

封面圖由 AI 生成。