ceph運維硬件規劃技巧

在規劃Ceph集群的硬件配置時,需要綜合考慮性能、成本、冗余、可擴展性以及特殊場景需求等因素。以下是關于Ceph硬件規劃的關鍵技巧和建議,涵蓋存儲設備、網絡、服務器配置、容量規劃、冗余策略等多個方面:


1. 硬件選型建議

存儲設備
  • 存儲節點類型
    根據數據需求選擇節點類型:

    • B<Object Storage Device (OSD) Nodes
      • 數據盤(Data Devices):存放實際數據(HDD或SSD)。
        • HDD: 高容量但IOPS低,適合冷數據存儲。
        • SSD: 高IOPS和吞吐量,適合熱數據或I/O密集型場景。
      • 緩存盤(Cache Devices)(可選,但推薦):
        • 使用NVMe或SATA SSD作為緩存層(例如Ceph的CacheTier),加速讀寫操作。
        • 緩存層需獨立于數據盤,避免與OSD數據混用同一硬盤。
  • 避免RAID控制器
    Ceph本身通過分布式冗余(如Replication/Erasure Coding)提供數據保護,因此硬件RAID(尤其是RAID 5/6)會帶來單點故障風險,并可能削弱性能。建議直接使用裸盤(JBOD)。

網絡設備
  • 專用網絡接口
    為以下流量劃分獨立網卡(或VLAN):

    • 集群內部通信(Mon, OSD, Manager Nodes):用于心跳、PG狀態同步、CRUSH圖更新等(推薦萬兆網卡)。
    • 客戶端訪問(Public Network):用于存儲客戶端(如librados, RBD, CephFS)的訪問(可根據實際流量需求選擇萬兆或以上)。
    • 管理網絡:用于SSH、監控工具、日志收集等。
  • 網絡冗余與帶寬

    • 每個節點至少2塊網卡(Bonding配置為主備或LACP模式),避免單點故障。
    • 監控網絡延遲(Ping)、帶寬(iperf測試),確保低延遲和高吞吐。

    ceph、hbase集群服務最好使用雙網卡bond;目前hbase的集群網絡IO峰值在180M/s,機房內部通信會出現丟包情況;替換較高交換性能的交換機以及做雙網卡bond兩項配合網絡IO峰值可做到10Gb/s;

服務器配置
  • CPU與內存

    • CPU核心數:根據集群規模選擇,最少4核CPU,大規模集群需要更高核心數(如16核或32核)。
    • 內存:至少 64GB RAM(每個OSD消耗2-4GB內存,需預留足夠資源)。
      • 公式參考:內存 = OS + 其他軟件 + (每個OSD消耗內存 × OSD數量) × 1.5倍(冗余)。
    • SSD的緩存層:加速PG的元數據操作(如 journals 分離到SSD)。
  • 電源與散熱

    • 機架級電源冗余(如雙電源)和UPS支持。
    • 保障服務器散熱,避免高溫導致硬盤或節點故障。

2. 容量規劃

總存儲容量計算
  • 可用容量 = (總物理磁盤容量 × 存儲類型比例) / 副本數(如3副本則除以3)。
    • 若使用EC Erasure Coding (例如EC Profile為k+m=12+2),可用容量為:
    \( \text{可用容量} = (\text{總物理容量} \times m/(k+m)) \)  
  • 推薦預留空間
    • 至少預留30%~50%空閑空間,以維持PG/OSD的平衡和性能(新數據的均衡分布需要空間)。
    • 空間不足時,Ceph會觸發 near fullfull 狀態,拒絕寫入。
PG(Placement Groups)規劃
  • 初始PG數量設置
    • 公式參考:每個OSD分攤的PG應控制在 100~200 之間。
    • 推薦公式PGs = (OSD數量 × 100) / 副本數
    • 調整策略:集群擴容后需重新計算并調整PG,在ceph osd pool set <pool> pg_num后運行 ceph osd pool set <pool> pgp_num <value>

3. 冗余與高可用

  • 最小集群規模

    • 至少3個節點(每個節點部署Mon、OSD、Mgr)以滿足大多數Ceph場景的可靠性需求。
    • 生產環境推薦5-7節點(奇數節點避免仲裁分裂)。
  • 故障域(Failure Domain)劃分
    crush map 中劃分故障域(如 Rack、Host、Chassis),確保副本分散到不同物理位置。例如:

    • 使用 ceph osd crush add-bucket rack1 rack 將節點劃分到不同機架。
  • 備件策略

    • 建議準備至少10%的備件(包括硬盤、電源、網卡等關鍵部件),縮短硬件故障的恢復時間。

4. 網絡隔離與設計

  • 物理網絡拓撲

    • 核心層:采用高速交換機(如ToR交換機),確保集群內通信低延遲。
    • 流量分組:將Mon的通信、OSD的通信、客戶端訪問流量分開,避免帶寬爭用。
  • 存儲網絡配置建議

    • 禁用TCP/IP層優化(如NAPI、巨型幀)可能導致性能問題,需謹慎測試。
    • 使用 ethtool 禁用流量控制 (rx-usecs 設置為0) 并禁用IPv6(如需)。

5. 存儲策略優化

  • 混合存儲池(SSD+HDD)

    • 使用HDD作為主存儲,SSD作為緩存層或Journals,降低延遲。
    • 通過 cache tiering 將熱數據自動遷移到SSD緩存。
  • SSD的RAID與SSD類型

    • 避免SSD上使用硬件RAID(Ceph的分布式機制已足夠),直接用JBOD。
    • Enterprise級SSD:適合頻繁寫入場景(如日志型應用)。
    • Client SSD:讀取密集型可選TLC/QLC SSD以降低成本。

6. 維護與擴展策略

  • 硬件健康監控

    • 部署智能監控工具(如smartd, ceph-bluestore-tool, Prometheus) 監控硬盤SMART值、溫度、錯誤率等。
    • 定期檢查OSD狀態:
      ceph osd stat
      ceph osd df tree
      ceph -s
  • 擴展規劃

    • 新增節點后需運行 ceph osd crush reweight 均衡權重。
    • 使用 ceph osd crush move 將節點分配到特定故障域,避免負載不均。

7. 常見誤區與注意事項

  • 節點數量不足

    • 3節點僅滿足最小配置,建議根據數據量、性能需求擴展(如5節點提供更高可用性)。
  • 忽視網絡延遲

    • 集群內節點延遲應控制在1ms以內,跨機架或遠程部署(如云環境)可能導致性能瓶頸。
  • 不當使用RAID控制器

    • RAID控制器可能隱藏硬盤故障(如壞道切換到備用盤),破壞Ceph的故障定位機制。
  • PG數量過少或過多

    • PG太少導致OSD負載不均,過多則增加元數據管理開銷。

8. 典型場景配置建議

高性能場景(如虛擬化存儲)
  • 硬件配置
    • CPU: 至少24核
    • 內存: 256GB
    • 存儲: NVMe SSD(主OSD)
    • 網絡: 2個萬兆網卡(Bonding)
大容量冷存儲場景
  • 硬件配置
    • 硬盤: SATA NVMe SSD(Cache)+ 10TB HDD(主存儲)
    • EC配置: 使用 EC profile(如k=12+m=2)提升空間利用率。
    • 監控: 監控HDD的旋轉健康度和工作溫度。
混合場景
  • 硬件配置
    • 熱數據: 使用SSD節點+Cache Tier加速
    • 冷數據: 分配到HDD節點并啟用EC(k+m=10+4)。

以下是新增的 日志SSD新OSD權重 兩部分內容的詳細說明,并集成到之前的硬件規劃框架中:


9. 存儲設備優化

日志SSD(Journal SSD)
  • 作用
    在Ceph的存儲后端(如Bluestore)中,日志(Journal)負責記錄數據的同步寫入操作(如刷盤前的寫緩存),單獨使用SSD作為日志盤可以顯著提升寫入性能。

    • 關鍵原理
      • 將隨機寫操作集中到SSD日志盤,通過日志合并減少碎片和延遲。
      • 數據最終會異步刷新到主存儲(如HDD或SSD數據盤)。
  • 配置要求

    1. 日志盤選擇
      • SSD類型:推薦使用 NVMe SSDSATA SSD(PCIe接口優先)。
      • 容量建議:日志盤容量無需很大(例如單獨240GB SSD即可),重點在于IOPS和低延遲。
    2. 部署方式
      • 在創建OSD時使用 - bluestore-db-dev(Bluestore的數據庫盤)和 - bluestore-wal-dev(Bluestore的寫入日志盤)參數。
      ceph-volume lvm prepare --data {主數據盤} --block.db {Bluestore DB SSD} --block.wal {Bluestore WAL SSD}
      
      • 對于純Journal場景(如舊版本FileStore),強制定向日志到SSD:
      ceph-osd -i {osd_id} --osd-journal {journal_ssd_path}
      
  • 優勢與風險

    • 優勢:顯著提升寫吞吐量(尤其在高并發場景)。
    • 風險
      • 日志SSD故障可能導致數據丟失(需配合副本或EC的冗余策略);
      • 需定期監控SSD的健康狀態(如寫入壽命)。

10. OSD管理

新OSD權重調整(New OSD Weights)
  • 背景
    當新增一個OSD到集群中時,默認權重可能過低,導致數據再平衡緩慢(新OSD的存儲空間未被充分利用)。需手動調整OSD的權重,使其盡快分擔集群負載。

  • 權重計算與配置

    1. OSD權重定義

      • 權重(osd_weight)表示OSD的存儲容量占比,數值越高,分配到的PG越多。
      • 公式示例:
        osd_weight = (OSD的存儲容量) / (集群總容量) × 調整系數  
        
        示例:如果新OSD的容量是其他節點平均容量的150%,則應分配更高權重。
    2. 調整步驟

      • 查詢當前權重
        ceph osd tree  # 查看各OSD的weight值
        
      • 設置新OSD的初始權重
        # 直接設置OSD的權重(可能需要多次調整)
        ceph osd reweight {osd_id} {新權重值(0-1之間)}# 通過CRUSH Bucket調整(推薦全局平衡)
        ceph osd crush reweight osd.{osd_id} {新權重值(如1.0)}
        
      • 強制快速平衡(謹慎操作)
        ceph osd pool set {pool_name} pg_autobalancing_mode upmap
        ceph osd pool set {pool_name} pg_autoscale_mode on
        
    3. 注意事項

      • 初始權重不宜過高:若權重設置過高可能導致其他OSD負載陡增,引發性能抖動。
      • 動態調整:根據集群負載監控逐步調整,避免單次修改過大的權重。
      • 對比工具:用 ceph osd df detail 或監控工具(如Grafana)觀察OSD數據分布。
  • 擴展場景示例

    # 新增一個10TB HDD的OSD,集群總容量為90TB
    osd_new_weight = (10 / 90)0.11 → *1.05(預留擴展空間)
    ceph osd reweight 20 0.115
    

補充操作建議

日志SSD的監控與維護
  • 監控工具集成
    使用 Prometheus + Ceph Exporter 監控日志SSD的IOPS、延遲、寫入速率等指標。
  • 故障場景處理
    如果日志SSD損壞,需優先替換并重建OSD的Bluestore journal,或使用 ceph_osd_mkjournal工具恢復。
權重管理的自動化
  • Ansible腳本:編寫自動化腳本,在新OSD加入時自動計算并分配權重。
    # Ansible任務示例
    - name: Set OSD weight based on storage sizeshell: |osd_id="{{ item.id }}"capacity="{{ item.size }}GB"total_capacity="{{ cluster_total }}"weight=$(awk "BEGIN {print {{ capacity }}/{{ total_capacity }}/1.1}")ceph osd reweight {{ osd_id }} {{ weight }}"with_items: "{{ new_osds }}"
    

總結

Ceph的硬件規劃需結合業務場景、預算、可擴性等因素。核心原則是:

  1. 選擇合適的存儲介質(SSD作為緩存層,HDD用于大容量),避免硬件單點故障。
  2. 網絡劃分明確且冗余,確保低延遲和高吞吐。
  3. 規劃合理的PG數量和副本策略,平衡性能與成本。
  4. 預留充足空閑空間和監控資源健康狀態,避免集群過載。
  5. 日志SSD:通過分離日志到高性能SSD,緩解寫放大問題,尤其適用于高吞吐場景(如虛擬化)。
  6. OSD權重管理:確保新節點快速分擔數據負載,減少人工干預,提升集群擴縮容的靈活性。

通過上述策略,可有效規劃一個高性能、高可靠、可擴展的Ceph存儲集群。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73991.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73991.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73991.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows主機、虛擬機Ubuntu、開發板,三者之間文件互傳

以下內容源于日常學習的整理&#xff0c;歡迎交流。 下圖是Windows主機、虛擬機Ubuntu、開發者三者之間文件互傳的方式示意圖&#xff1a; 注意&#xff0c;下面談及的所有方式&#xff0c;都要求兩者的IP地址處于同一網段&#xff0c;涉及到的軟件資源見felm。 一、Windows主…

Softmax溫度調節與注意力縮放:深度神經網絡中的平滑藝術

Softmax溫度調節與注意力縮放&#xff1a;深度神經網絡中的平滑藝術 在深度學習的精密機械中&#xff0c;有些細微的調整機制往往被視為理所當然&#xff0c;卻實際上蘊含著深刻的數學洞察和巧妙的工程智慧。今天&#xff0c;我們將探討兩個看似獨立卻本質相通的機制&#xff…

RIP路由欺騙攻擊與防御實驗詳解

一、基礎網絡配置 1. 路由器R1配置 interface GigabitEthernet0/0/0ip address 192.1.2.254 255.255.255.0 ! interface GigabitEthernet0/0/1ip address 192.1.3.254 255.255.255.0 ! router rip 1version 2network 192.1.2.0network 192.1.3.0 2. 路由器R2配置 interface…

阿里云平臺Vue項目打包發布

目錄&#xff1a; 1、vue項目打包2、通過ngixn發布vue的打包文件 1、vue項目打包 在你的vue項目下執行npm run build命令進行打包。 2、通過ngixn發布vue的打包文件 直接將打包的dist文件拷貝到nginx目錄下即可。 修改nginx.conf的配置文件的相關配置&#xff0c;如端口或者ro…

《基于Spring Boot+Vue的智慧養老系統的設計與實現》開題報告

個人主頁:@大數據蟒行探索者 一、研究背景及國內外研究現狀 1.研究背景 根據1982年老齡問題世界大會聯合國制定的標準,如果一個國家中超過65歲的老人占全國總人口的7%以上,或者超過60歲的老人占全國總人口的10%以上,那么這個國家將被定義為“老齡化社會”[1]。 隨著國…

SpringCache @Cacheable 在同一個類中調用方法,導致緩存不生效的問題及解決辦法

由于項目需要使用SpringCache來做一點緩存&#xff0c;但自己之前沒有使用過&#xff08;其實是沒有聽過&#xff09;SpringCache&#xff0c;于是&#xff0c;必須先學習之。 顯然&#xff0c;就是在同一個類中&#xff0c;MethodA 調用了 MethodB&#xff0c;那么 MethodB 上…

2025-03-20(DS復習):詳細介紹一下Databricks 的Delta Lake

Delta Lake 是 Databricks 推出的一種開源存儲層&#xff0c;它構建在現有數據湖&#xff08;如 Amazon S3、Azure Data Lake Storage、Google Cloud Storage&#xff09;之上&#xff0c;為數據湖提供了數據倉庫級別的可靠性、性能和管理功能。Delta Lake 解決了傳統數據湖的許…

在VMware上部署【Ubuntu】

鏡像下載 國內各鏡像站點均可下載Ubuntu鏡像&#xff0c;下面例舉清華網站 清華鏡像站點&#xff1a;清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 具體下載步驟如下&#xff1a; 創建虛擬機 準備&#xff1a;在其他空間大的盤中創建存儲虛擬機的目錄&#xff0c…

初入ARM,點燈,按鍵與中斷相結合

與MCU不同&#xff0c;ARM屬于功能更復雜&#xff0c;更強大的SOC&#xff0c;是可以移植操作系統的&#xff0c;但是在最開始學習arm&#xff0c;需要了解arm的運行方式&#xff0c;所以現在使用的是裸機開發。arm系統有多種工作模式&#xff0c;分別是User&#xff0c;IRQ&am…

Moonlight-16B-A3B: 變革性的高效大語言模型,憑借Muon優化器打破訓練效率極限

近日&#xff0c;由Moonshot AI團隊推出的Moonlight-16B-A3B模型&#xff0c;再次在AI領域引發了廣泛關注。這款全新的Mixture-of-Experts (MoE)架構的大型語言模型&#xff0c;憑借其創新的訓練優化技術&#xff0c;特別是Muon優化器的使用&#xff0c;成功突破了訓練效率的極…

風尚云網|前端|JavaScript性能優化實戰:從瓶頸定位到高效執行

JavaScript性能優化實戰&#xff1a;從瓶頸定位到高效執行 JavaScript性能優化 在移動優先和Web應用日益復雜化的今天&#xff0c;JavaScript性能優化已成為前端工程師的必修課。本文將通過真實場景案例&#xff0c;深入解析從性能瓶頸定位到具體優化策略的完整閉環&#xff…

強大的AI網站推薦(第一集)—— Devv AI

網站&#xff1a;Devv AI 號稱&#xff1a;最懂程序員的新一代 AI 搜索引擎 博主評價&#xff1a;我的大學所有的代碼都是使用它&#xff0c;極大地提升了我的學習和開發效率。 推薦指數&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x…

使用 .NET Core 的本地 DeepSeek-R1

使用 .NET 在我的 MacBook Pro 上與當地 LLM 聊天的歷程。 如今&#xff0c;只需使用瀏覽器即可輕松使用 ChatGPT 或其他 genAI。作為開發人員&#xff0c;我們可以通過直接集成 OpenAI API 等來做更復雜的事情。如果我們想在自己的機器上運行 LLM&#xff0c;只是為了找人聊天…

將 VOC 格式 XML 轉換為 YOLO 格式 TXT

目錄 1. 導入必要的模塊 2. 定義類別名稱 3. 設置文件路徑 完整代碼 1. 導入必要的模塊 import os import xml.etree.ElementTree as ET os&#xff1a;用于文件和目錄操作&#xff0c;例如創建目錄、遍歷文件等。 xml.etree.ElementTree&#xff1a;用于解析XML文件&#…

Visual Studio調試的技巧

1.什么是bug&#xff1f; bug&#xff1a;程序漏洞&#xff0c;也就是程序中存在的問題。 2.什么是調試&#xff1f; 當我們發現了程序中的問題后就會解決問題&#xff0c;前提是要找到問題&#xff0c;那么進行調試&#xff08;debug&#xff09;以此來找到問題。 3.debug…

C++ 各種map對比

文章目錄 特點比較1. std::map2. std::unordered_map3. std::multimap4. std::unordered_multimap5. hash_map&#xff08;SGI STL 擴展&#xff09; C 示例代碼代碼解釋 特點比較 1. std::map 底層實現&#xff1a;基于紅黑樹&#xff08;一種自平衡的二叉搜索樹&#xff09…

fontTools工具的使用介紹

前言 python工具庫fontTools&#xff0c;我是用來壓縮前端字體的&#xff0c;優化前端請求速度的&#xff1b;使用的過程中&#xff0c;遇到了不少的坑&#xff0c;把這個過程記錄下來&#xff0c;防止再犯。 安裝 # fontTools 4.56.0 pip install fontTools提取子字體集 方…

利用大語言模型生成的合成數據訓練YOLOv12:提升商業果園蘋果檢測的精度與效率

之前小編分享過關于《YOLO11-CBAM集成&#xff1a;提升商業蘋果園樹干與樹枝分割的精準度》&#xff0c;改進YOLO11算法后&#xff0c;進行蘋果樹的實例分割。本期文章我們將分享關于最新的YOLO12算法改進的蘋果目標檢測。 論文題目&#xff1a;Improved YOLOv12 with LLM-Gen…

設計模式 二、創建型設計模式

GoF是 “Gang of Four”&#xff08;四人幫&#xff09;的簡稱&#xff0c;它們是指4位著名的計算機科學家&#xff1a;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他們合作編寫了一本非常著名的關于設計模式的書籍《Design Patterns: Elements of Reusable…

redis,tar.gz安裝后,接入systemctl報錯解決

1. WARNING Memory overcommit must be enabled! 這種報錯&#xff0c;有兩種解決方法 1.1 修改系統參數 編輯 /etc/sysctl.conf 文件&#xff0c;設置 overcommit_memory 為 1 vm.overcommit_memory 11.2 修改redis的最大使用內存 修改配置文件 redis.conf maxmemory 1g…