ZFS:配置建議 1x NVMe 作為 ARC 和 ZIL,4x SSD 用於 zvols 用於虛擬化
所以最近在測試一個 ZoL 系統時,我們發現我們的 SSD 上隨機和順序讀取的性能很差,隨機寫入的性能很差。
我們的系統是 2 個三星 1TB 850Evo SSD 的條帶,用於測試 ZFS 性能,與 LVM 相比,它非常糟糕:讀取速度比 HDD 慢,寫入速度也不及我們在 LVM 上獲得的預期 1.7GB。這很奇怪,因為我們的 FreeBSD 備份伺服器具有速度較慢的 HDD 和較舊類型的 SSD,並且在相同的測試中表現更好。
儘管系統在某種程度上被剝奪了 RAM(zfs 為 arc 獲得 4gb,其他一切都由 VM 佔用)但是沒有記憶體並且沒有同步,性能仍然沒有接近任何東西。
因此,我們正在考慮購買基於 AMD Epyc 的較新系統,並設置完整的 NVMe 或帶有 SSD 的 NVMe,並禁用記憶體以至少從 ZFS 中釋放記憶體(我們希望它最多使用 10GB 的記憶體)。除了校驗和之外,我們真的不需要 ZFS 的所有安全功能(但對於 SSD,它似乎是多餘的,因為 SSD 執行內部校驗和系統),因此 SSD 將是 vdev 的條帶。
我們更喜歡 ZFS for zle on Thin-provisioned zvols 以及對遠端系統(也執行 ZFS)的快照和增量備份的易用性。
然而,性能的鬥爭是艱難的……
非常感謝任何建議
首先,ZFS 校驗和不是多餘的:它是端到端(RAM 到物理介質)校驗和,而 HDD/SSD 校驗和作為“內部介質”錯誤控制。要擁有與經典文件系統類似的東西,您必須使用 SATA 設備所缺乏的與 T10/DIF 兼容的磁碟和控制器(您被迫使用價格更高的 SAS SSD)。
也就是說,ZVOL 的低寫入性能通常是由於非常小的預設 8K 塊大小,它小到足以大大增加元數據成本,但不足以阻止 4K 寫入的讀取-修改-寫入周期。
消費級 SATA SSD 磁碟(如三星 850 EVO)的另一個問題是它們沒有任何斷電保護記憶體,因此 ZFS 不斷刷新它們以進行元數據寫入和同步數據寫入。
無論如何,您確實應該向我們提供有關您的基準測試方法最終實際預期工作量的更多詳細資訊,以獲得準確的答案。
性能很差,因為 ZFS 預設值不適合您正在做的事情。你有東西
/etc/modprobe.d/zfs.conf
嗎?如果沒有,則需要進行一些調整。
- 虛擬機是否會與 ZFS 安裝在同一台伺服器上執行?
- 如果是這樣,則不需要 ZIL;它僅對同步寫入活動有用,例如將 NFS 呈現給 VMware 和某些數據庫。
- 我將 128K 塊大小用於本機磁碟上的 ZFS 儲存。
- 對於 Linux,zvols 需要
volblocksize=128K
- 我將 ashift=13 用於所有 SSD ZFS zpool,將 ashift=12 用於其他所有內容。
- 不要禁用 ARC。如有必要,請限制它,但聽起來您沒有太多 RAM。
- 不要禁用校驗和。
- 務必啟用 LZ4 壓縮!沒有理由不這樣做。
- 你打算用 NVMe + 4xSSD 做什麼?