混合硬件架構方案建議
考慮成本,選擇SSD與HDD混合硬件架構
- 方案一:使主本數據放在SSD OSD,副本數據放在HDD OSD,編寫新的crush rule
- 方案二:存儲池分配優先級,通過編寫crush rule來實現,冷熱數據分離
- 方案三:分層存儲,ceph緩存代理技術
- 方案四:SSD固態盤分配block_db和block_wal分區做加速
Ceph最佳實踐
節點硬件配置
OSD節點配置
針 IOPS 密集型場景,服務器配置建議如下:
OSD:每個 NVMe SSD 上配置四個 OSD(lvm)。
Controller:使用 Native PCIe 總線。
網絡:12osd/萬兆口
內存:16G + 2G/osd
CPU:5c/ssd
針對高吞吐量型,服務器配置建議如下:
OSD: HDD/7200轉
網絡:12osd/萬兆口
內存:16G + 2G/osd
CPU:1c/hdd
針對高容量型,服務器配置建議如下:
OSDs: HDD/7200轉
網絡:12osd/萬兆口
內存:16G + 2G/osd
CPU:1c/hdd
CPU中的1C = 1GHz
其它各節點配置:
MDS:4C/2G/10Gbps
Monitor:2C/2G/10Gbps
Manager:2C/2G/10Gbps
Bluestore 下:slow、 DB 和 WAL 的配比
slow(SATA):DB(SSD):WAL(NVMe SSD)=100:1:1
ceph集群實踐方案
硬件推薦
以1PB為例,高吞吐量型
OSD節點
數量:21
CPU:16c
內存:64G
網絡:10Gbps * 2
硬盤:7200轉HDD/4T * 12 (12個OSD + 1個系統)
系統:Ubuntu 18.04
Monitor節點
數量:3
CPU:2c
內存:2G
網絡:10Gbps * 2
硬盤:20G
系統:Ubuntu 18.04
Manager節點
數量:2
CPU:2c
內存:2G
網絡:10Gbps * 2
硬盤:20G
系統:Ubuntu 18.04
MDS(對於cephFS)
數量:2
CPU:4c
內存:2G
網絡:10Gbps * 2
硬盤:20G
系統:Ubuntu 18.04
Intel硬件方案白皮書
PCIe/NVMe固態盤: 機械硬盤 1:12。英特爾PCIe/NVMe P3700用作日志盤
SATA固態盤: 機械硬盤 1:4。英特爾SATA P3700用作日志盤
良好配置 | 更好配置 | 最好配置 | ||
---|---|---|---|---|
CPU | 英特爾至強處理器 E5-2650v3 | 英特爾至強處理器 E5-2690 | 英特爾至強處理器 E5-2699v3 | |
網卡 | 10GbE | 10GbE * 2 | 10GbE*4 + 2 * 40GbE | |
驅動器 | 1 * 1.6TB P3700 + 12 * 4T SAS(1:12)(P3700用於日志和高速緩存驅動器) | 1 * 800GB P3700 + 4*1.6TB S510(P3700用於日志和高速緩存驅動器) | 4-6 個 2TB P3700 | |
內存 | 64GB | 128GB | >=128GB |
PCIe/NVMe固態盤可用作日志驅動器,大容量低成本SATA固態盤用作OSD數據驅動器。對於需要較高性能、尤其使需要較高IOPS和SLA且具有中等存儲容量要求的用例/應用,該配置最為經濟高效
參考: 面向Ceph部署的英特爾解決方案
redhat官網給出不同應用場景時,其推薦的Ceph集群服務器硬件配置(包括CPU/Memory/Disk/Network)。僅作為服務器配置選擇時參考,不做推薦使用。
場景包含如下:
場景:一側重IOPS的(IOPS低延遲),例如實時性要求高的,但數據量不大的。比如訂單的生成。
場景二:側重Throughput的 (吞吐量優先),吞吐量大,但IOPS延時性要求適當。例如,實時流。
場景三:側重容量和價格Cost/Capacity的(大存儲量),例如大文件的存儲。
企業ceph 應用版本選擇以及采用ssd+sata 應用bulestore引擎的建議
(1)一般LTS版本是當前年份往過去退2年左右,所以,現在的穩定版是M版mimic。
(2)wal 是 RocksDB 的write-ahead log, 相當於之前的 journal 數據,db 是 RocksDB 的metadata 信息。在磁盤選擇原則是 block.wal > block.db > block。當然所有的數據也可以放到同一塊盤上。
(3)默認情況下, wal 和 db 的大小分別是 512 MB 和 1GB, 官方建議調整block.db 是主設備 4% ,而block.wal分為6%左右,2個加起來10%左右。
ceph 分布式存儲硬件規划以及運維的考慮
https://www.talkwithtrend.com/Question/433987?order=rec
關於Ceph性能優化與硬件選型|萬字長文
http://vlambda.com/wz_x6mXhhxv3M.html
SSD固態硬盤的接口類型
- SATA
- PCI-E
- NVMe
https://blog.csdn.net/shuai0845/article/details/98330290
推薦SSD型號
- Seagate Nytro 1351/1551
- HGST SN260
- Intel P4500
- Intel P3700
- Intel S3500
- Intel S4500
- Intel SSD 730 series
- Intel D3-S4510 SSD
- Micron 5100/5200和soon 5300
Intel S37系列或者S46系列,有錢上Intel P系列
配置表1
為了使ceph集群運行的更穩定,綜合性價比,做出如下的硬件配置:
名稱 | 數量 | 說明 |
---|---|---|
OS Disk | 2*600G SAS (SEAGATE 600GB SAS 6Gbps 15K 2.5英寸) | 根據預算選擇SSD、SAS、SATA。RAID 1 ,防止系統盤故障,引發ceph集群問題 |
OSD Disk | 8*4T SAS (SEAGATE 4T SAS 7200) | 根據預算選擇SAS或者SATA盤,每台物理機配置8塊4T磁盤,用於存放數據。NoRAID |
Monitor Disk | 1*480G SSD (Intel SSD 730 series) | 用於monitor 進程的磁盤,選擇ssd,速度更快 |
Journal Disk | 2*480G SSD (Intel SSD 730 series) | ssd磁盤,每塊分4個區,對應4個osd,一台節點總計8個journal分區,對應8個osd。NoRAID |
CPU | E5-2630v4 * 2 | 綜合預算,選擇cpu,越高越好 |
Memory | >=64G | 綜合預算,不差錢上128G內存 |
NIC | 40GB * 2 光口 + 公網IP | 40GB網卡可以保證數據同步速度(前端網絡和后端網絡) |
CPU
每一個osd守護進程至少有一個cpu核
計算公式如下:
((cpu sockets * cpu cores per socket * cpu clock speed in GHZ)/No. of OSD) >= 1
Intel Xeon Processor E5-2630 V4(2.2GHz,10 core)計算:
1 * 10 * 2.2 / 8 = 2.75 #大於1, 理論上能跑20多個osd進程,我們考慮到單節點的osd過多,引發數據遷移量的問題,所以限定了8個osd進程
內存
1個osd進程至少需要1G的內存,不過考慮到數據遷移內存占用,建議1個osd進程預配2G內存。
在作數據恢復時1TB數據大概需要1G的內存,所以內存越多越好
磁盤
系統盤
根據預算選擇ssd、sas、sata磁盤,必須做raid,以防因為磁盤引發的宕機
OSD 磁盤
綜合性價比,選擇sas或者sata磁盤,每塊大小4T。如果有io密集型的業務,也可單獨配備性能更高的ssd作為osd磁盤,然后單獨划分一個region
Journal 磁盤
用於日志寫入,選擇ssd磁盤,速度快
Monitor 磁盤
用於運行監控進程的磁盤,建議選擇ssd磁盤。如果ceph的monitor單獨運行在物理機上,則需要2塊ssd磁盤做raid1,如果monitor與osd運行在同一個節點上,則單獨准備一塊ssd作為monitor的磁盤
NIC
一個osd節點是配置2塊10GB網卡,一個作為public網絡用於管理,一個作為cluster網絡用於osd之間的通信
參考:
ceph 硬件選型、性能調優
1、應用場景挑選
- IOPS低延遲——塊存儲
- 吞吐量優先——塊存儲、文件系統、對象存儲
- 大存儲量——對象存儲、文件系統
2、硬件選型建議與調優
-
CPU:一個OSD進程分配一個CPU核【((cpu sockets * cpu cores per soket * cpu clock speed in GHZ) /No.Of OSD)>=1】
-
內存:一個OSD進程至少分配1GB,恢復數據時1TB占1GB內存,所以最好是分配2G RAM;節點上有mon和mds進程需要考慮分配2GB以上或更多的內存空間。RAM越高,cephfs性能越好
-
網卡:大型集群(數十個節點)應使用萬兆網卡。數據恢復和重新平衡期間,網絡很重要,如果有10G的網絡會縮短集群恢復的時間。集群節點內,建議使用雙網卡,考慮分離cilent和cluster網絡
-
硬盤:SSD做日志盤,10-20GB;建議4個OSD數據盤配一個SSD;SSD選擇:Intel SSD DC S3500 Series。
在sata/sas ssd上獲取高性能,ssd和osd的比例應該為1:4,也就是說4個OSD數據硬盤可共享一個ssd
PCIe或者NVMe閃存設備的情況取決也設備性能,ssd和osd壁壘可以達到1:12或者1:18
-
OSD節點密度。osd數據分區Ceph osd節點的密度也是影響集群性能、可用容量和TCO的一個重要因素,一般來說大量的小容量量節點比少量的大容量節點要好
-
BIOS開啟VT和HT;關閉節能;關閉NUMA
3、操作系統調優
- read_ahead, 通過數據預讀並且記載到隨機訪問內存方式提高磁盤讀操作
- 最大進程數調整
- 關閉交換分區
- SSD的IO調度使用:NOOP 機械的IO調度使用:deadline
- CPU頻率
- cgroups——使用cgroup綁定ceph的CPU,以及限制內存
4、網絡調優
- MTU設置9000
- 手動設置中斷親和或者使用irqbalance
- 打開TOE:ethtool -K ens33 tso on
- RDMA
- DPDK
5、ceph調優
-
PG數調整【Total_PGs=(Total_numbers_of_OSD * 100) / max_replication_count】
-
client參數
-
OSD參數
-
-recovery tuning參數
配置表2
適用場景:熱數據應用/虛擬化場景
設備 | 具體配置 | 數量 |
---|---|---|
CPU | Intel Xeon E5-2650 v3 | 2 |
內存 | 64G DDR4 | 4 |
OS盤 | 2.5英寸Intel S3500系列 240GB SSD(RAID1) | 2 |
SSD盤 | Intel S3700 400GB | 12 |
萬兆網卡 | Intel 雙口萬兆 (含多模模塊) | 2 |
選型考慮
Ceph軟件版本對比
版本號具有三個組成部分xyz。 x標識釋放周期(例如,模仿為13)。 y標識發布類型:
- x.0.z-開發版本(面向早期測試者)
- x.1.z-候選發布版(對於測試集群用戶)
- x.2.z-穩定/錯誤修正版本(針對用戶)
luminous 12 | mimic 13 | nautilus 14 | Octopus 15 | |
---|---|---|---|---|
date | 2017.10 | 2018.5 | 2019.3 | 2020.3 |
version | 12.2.x | 13.2.x | 14.2.x | 15.2.x |
dashboard | v1 沒有管理功能 | v2 具有基本的管理功能 | v2 具備更多的管理功能 | Restful-API需要Python3支持 |
bluestore | 支持 | 穩定支持 | 穩定支持 | 有改進和性能提升 |
kernel | 4.4.z 4.9.z | 4.9.z 4.14.z | 4.9.z 4.14.z | CentOS8 4.14以上 |
注:每一個Ceph社區穩定版本(TLS版本)的發布更新周期一般為當前年份往過去退2年左右,也就是說2020年最新的穩定版本應該為mimic 13版本。生成環境建議使用mimic 13.2.x
硬件選型方案1
以服務器PowerEdge R720為例
設備 | 配置 | 數量 | 說明 |
---|---|---|---|
CPU | Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 | 2 | 英特爾至強系列處理器 每個OSD守護進程分配1 cores |
Memory | >=64G | 每個OSD守護進程分配1G-2G,進程占用和數據遷移恢復占用內存,內存越大越好 | |
OS Disk | Intel DC S3500 240GB 2.5英寸 | 2 | RAID1(系統盤鏡像冗余,防止系統盤故障,引發ceph集群問題 |
OSD Disk | Intel DC S4500 1.9TB 2.5英寸 | 12 | NORAID bluestore部署 |
NIC | 千兆網卡+雙口萬兆(多模光纖) | 3 | 1個公網IP+前端網絡(Public Network)+后端網絡(Cluster Network) |
注:針 IOPS 密集型場景,全部基於SSD進行構建,保證性能最優的同時並充分發揮bluestore針對於SSD的特性優化,而且利於部署和后期集群的維護,且有效降低運維的難度。另外全閃存的應用場景還必須考慮使用到更高性能的CPU。不過因為全部用SSD固態硬盤部署,預算的硬件成本會很高
硬件選型方案2
設備 | 配置 | 數量 | 說明 |
---|---|---|---|
CPU | Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 | 2 | 英特爾至強系列處理器 每個OSD守護進程分配1 cores |
Memory | >=64G | 每個OSD守護進程分配1G-2G,守護進程和數據遷移恢復占用內存,內存越大越好 | |
OS Disk | SSD / HDD 240GB 2.5英寸 | 2 | RAID1(系統盤的鏡像冗余) |
SSD Disk | Intel DC P3700 2TB (1:12) | 2 | bulestore日志和高速緩存驅動器;cache pool緩沖存儲池 |
HDD Disk | 4T SAS / SATA HDD 2.5英寸 | 12 | NORAID,用於OSD的數據存儲 |
NIC | 千兆網卡+雙口萬兆(多模光纖) | 3 | 1個公網IP+前端網絡(Public Network)+后端網絡(Cluster Network) |
注:針 IOPS 密集型場景,由於使用選擇SSD與HDD混合硬件方案,硬件成本會降低,但是性能上由於是混合硬盤方案,bluestore帶來的性能優化特性可能不會很明顯,還需要考慮混合架構的優化。且使用PCIe物理接口的固態硬盤,后期的硬件更換也是一個問題,也會導致Ceph集群運維難度的大大增加。
硬件選型方案3
設備 | 配置 | 數量 | 說明 |
---|---|---|---|
CPU | Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 | 2 | 英特爾至強系列處理器 每個OSD守護進程分配1 cores |
Memory | >=64G | 每個OSD守護進程分配1G-2G,進程占用和數據遷移恢復占用內存,內存越大越好 | |
OS Disk | Intel DC S3500 240GB 2.5英寸 | 2 | RAID1(系統盤鏡像冗余,防止系統盤故障,引發ceph集群問題 |
HDD Disk | 7200轉 4T SAS / SATA HDD 2.5英寸 | 12 | NORAID,組成OSD的數據存儲 |
NIC | 千兆網卡+雙口萬兆(多模光纖) | 3 | 1個公網IP+前端網絡(Public Network)+后端網絡(Cluster Network) |
注:以1PB為例,高吞吐量型。OSD全部用HDD部署,系統盤SSD做RAID1保障冗余
硬件選型方案4
設備 | 配置 | 數量 | 說明 |
---|---|---|---|
CPU | Intel Xeon E5-2650 v3/E5-2630v4/E5-2690 | 2 | 英特爾至強系列處理器 每個OSD守護進程分配1 cores |
Memory | >=64G | 每個OSD守護進程分配1G-2G,進程占用和數據遷移恢復占用內存,內存越大越好 | |
OS Disk | Intel DC S3500 240GB 2.5英寸 | 2 | RAID1(系統盤鏡像冗余,防止系統盤故障,引發ceph集群問題 |
SSD Disk | PCIe/NVMe 4T | 2 | 一塊用於創建cache pool,另一塊分區用於給osd disk分配wal和db |
HDD Disk | 7200轉 4T SAS / SATA HDD 2.5英寸 | 12 | NORAID,組成data pool。用於OSD的數據存儲 |
NIC | 千兆網卡+雙口萬兆(多模光纖) | 3 | 1個公網IP+前端網絡(Public Network)+后端網絡(Cluster Network) |
注:使用混合硬盤方案,SSD 盤組成cache pool,HDD組成data pool。利用SSD性能優勢,還可以用於部署bluestore時指定wal和db,給HDD osd disk提升性能。
硬件選型方案5
數據參考:鯤鵬分布式存儲解決方案
Linux塊層SSD cache方案:Bcache
bcache技術+bluestore引擎提升HDD+SSD混合存儲的最大性能
- 安裝bcache-tool
- Linux升級到4.14.x內核
- 創建后端設備 make-bcache -B /dev/sdx
- 格式化bcache0
- 創建前端設備 make-bcache -C /dev/sdx
- 建立映射關系
OSD存儲池啟用壓縮功能
ceph osd pool set compression_
硬件調優
NVMe SSD調優
-
目的
為減少數據跨片開銷。
-
方法
將NVMe SSD與網卡插在統一Riser卡。
內存插法調優
-
目的
內存按1dpc方式插將獲得最佳性能,即將DIMM0插滿,此時內存帶寬最大。
-
方法
優先插入DIMM 0,即插入DIMM 000、010、020、030、040、050、100、110、120、130、140、150插槽。三位數字中,第一位代表所屬CPU,第二位代表內存通道,第三位代表DIMM,優先將第三位為0的插槽按內存通道從小到大依次插入。
系統調優
OS配置參數
參數名稱 | 參數含義 | 優化建議 | 配置方法 |
---|---|---|---|
vm.swappiness | swap為系統虛擬內存,使用虛擬內存會導致性能下降,應避免使用。 | 默認值:60修改完后是否需要重啟:否現象:用到swap時性能明顯下降修改建議:關閉swap內存的使用,將該參數設定為0。 | 執行命令sudo sysctl vm.swappiness=0 |
MTU | 網卡所能通過的最大數據包的大小,調大后可以減少網絡包的數量以提高效率。 | 默認值:1500 Bytes修改完后是否需要重啟:否現象:可以通過ip addr命令查看修改建議:網卡所能通過的最大數據包的大小設置為9000 Bytes。 | 執行命令vi /etc/sysconfig/network-scripts/ifcfg-$(Interface),並增加MTU="9000"****說明:${Interface}為網口名稱。完成后重啟網絡服務。service network restart |
pid_max | 系統默認的“pid_max”值為32768,正常情況下是夠用的,但跑重量任務時會出現不夠用的情況,最終導致內存無法分配的錯誤。 | 默認值:32768修改完后是否需要重啟:否現象:通過cat /proc/sys/kernel/pid_max查看修改建議:設置系統可生成最大線程數為4194303。 | 執行命令echo 4194303 > /proc/sys/kernel/pid_max |
file-max | “file-max”是設置系統所有進程一共可以打開的文件數量。同時一些程序可以通過setrlimit調用,設置每個進程的限制。如果得到大量使用完文件句柄的錯誤信息,則應該增加這個值。 | 默認值:13291808修改完后是否需要重啟:否現象:通過cat /proc/sys/fs/file-max查看修改建議:設置系統所有進程一共可以打開的文件數量,設置為cat /proc/meminfo | grep MemTotal | awk '{print $2}' 所查看到的值。 | 執行命令echo ${file-max} > /proc/sys/fs/file-max****說明:${file-max}為cat /proc/meminfo | grep MemTotal | awk '{print $2}' 所查看到的值。 |
read_ahead | Linux的文件預讀readahead,指Linux系統內核將指定文件的某區域預讀進頁緩存起來,便於接下來對該區域進行讀取時,不會因缺頁(page fault)而阻塞。鑒於從內存讀取比從磁盤讀取要快很多,預讀可以有效的減少磁盤的尋道次數和應用程序的I/O等待時間,是改進磁盤讀I/O性能的重要優化手段之一。 | 默認值:128 kb修改完后是否需要重啟:否現象:預讀可以有效的減少磁盤的尋道次數和應用程序的I/O等待時間。通過/sbin/blockdev --getra /dev/sdb查看修改建議:通過數據預讀並且記載到隨機訪問內存方式提高磁盤讀操作,調整為8192 kb。 | 執行命令/sbin/blockdev --setra /dev/sdb****說明:此處以“/dev/sdb”為例,對所有服務器上的所有數據盤都要修改。 |
I/O Scheduler | Linux I/O 調度器是Linux內核中的一個組成部分,用戶可以通過調整這個調度器來優化系統性能。 | 默認值:CFQ修改完后是否需要重啟:否現象:要根據不同的存儲器來設置Linux I/O 調度器從而達到優化系統性能。修改建議:I/O調度策略,HDD設置為deadline,SSD設置為noop。 | 執行命令echo deadline > /sys/block/sdb/queue/scheduler****說明:此處以“/dev/sdb”為例,對所有服務器上的所有數據盤都要修改。 |
nr_requests | 在Linux系統中,如果有大量讀請求,默認的請求隊列或許應付不過來,幸好Linux 可以動態調整請求隊列數,默認的請求隊列數存放在“/sys/block/hda/queue/nr_requests”文件中 | 默認值:128修改完后是否需要重啟:否現象:通過適當的調整nr_requests 參數可以提升磁盤的吞吐量修改建議:調整硬盤請求隊列數,設置為512。 | 執行命令echo 512 > /sys/block/sdb/queue/nr_requests****說明:此處以“/dev/sdb”為例,對所有服務器上的所有數據盤都要修改。 |
網絡性能參數調優
注意具體的網卡型號來進行適度調優
- irqbalance:關閉系統中斷均衡服務;網卡中斷綁核
- rx_buff
- ring_buff:增加網卡吞吐量
- 查看當前buffer大小:ethtool -g <網卡名稱>
- 調整buffer大小:ethtool -G rx 4096 tx 4096
- 打開網卡lro功能
網卡中斷綁核的步驟
# 查詢網卡歸屬於哪個numa節點
cat /sys/class/net/<網口名>/device/numa_node
# lscpu命令查詢該numa節點對應哪些CPU core
# 查看網卡中斷號
cat /proc/interrupts | grep <網口名> | awk -F ':' '{print $1}'
# 將軟中斷綁定到該numa節點對應的core上
echo <core編號> > /proc/irq/<中斷號>/smp_affinity_list
注:NUMA的功能最好一開始就在BIOS設置中關閉,可減少不必要的綁核操作!
Ceph調優
Ceph配置調優
ceph.conf
[global]#全局設置
fsid = xxxxxxxxxxxxxxx #集群標識ID
mon host = 10.0.1.1,10.0.1.2,10.0.1.3 #monitor IP 地址
auth cluster required = cephx #集群認證
auth service required = cephx #服務認證
auth client required = cephx #客戶端認證
osd pool default size = 3 #最小副本數 默認是3
osd pool default min size = 1 #PG 處於 degraded 狀態不影響其 IO 能力,min_size是一個PG能接受IO的最小副本數
public network = 10.0.1.0/24 #公共網絡(monitorIP段)
cluster network = 10.0.2.0/24 #集群網絡
max open files = 131072 #默認0#如果設置了該選項,Ceph會設置系統的max open fds
mon initial members = node1, node2, node3 #初始monitor (由創建monitor命令而定)
##############################################################
[mon]
mon data = /var/lib/ceph/mon/ceph-$id
mon clock drift allowed = 1 #默認值0.05#monitor間的clock drift
mon osd min down reporters = 13 #默認值1#向monitor報告down的最小OSD數
mon osd down out interval = 600 #默認值300 #標記一個OSD狀態為down和out之前ceph等待的秒數
##############################################################
[osd]
osd data = /var/lib/ceph/osd/ceph-$id
osd journal size = 20000 #默認5120 #osd journal大小
osd journal = /var/lib/ceph/osd/$cluster-$id/journal #osd journal 位置
osd mkfs type = xfs #格式化系統類型
osd max write size = 512 #默認值90 #OSD一次可寫入的最大值(MB)
osd client message size cap = 2147483648 #默認值100 #客戶端允許在內存中的最大數據(bytes)
osd deep scrub stride = 131072 #默認值524288 #在Deep Scrub時候允許讀取的字節數(bytes)
osd op threads = 16 #默認值2 #並發文件系統操作數
osd disk threads = 4 #默認值1 #OSD密集型操作例如恢復和Scrubbing時的線程
osd map cache size = 1024 #默認值500 #保留OSD Map的緩存(MB)
osd map cache bl size = 128 #默認值50 #OSD進程在內存中的OSD Map緩存(MB)
osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默認值rw,noatime,inode64 #Ceph OSD xfs Mount選項
osd recovery op priority = 2 #默認值10 #恢復操作優先級,取值1-63,值越高占用資源越高
osd recovery max active = 10 #默認值15 #同一時間內活躍的恢復請求數
osd max backfills = 4 #默認值10 #一個OSD允許的最大backfills數
osd min pg log entries = 30000 #默認值3000 #修建PGLog是保留的最大PGLog數
osd max pg log entries = 100000 #默認值10000 #修建PGLog是保留的最大PGLog數
osd mon heartbeat interval = 40 #默認值30 #OSD ping一個monitor的時間間隔(默認30s)
ms dispatch throttle bytes = 1048576000 #默認值 104857600 #等待派遣的最大消息數
objecter inflight ops = 819200 #默認值1024 #客戶端流控,允許的最大未發送io請求數,超過閥值會堵塞應用io,為0表示不受限
osd op log threshold = 50 #默認值5 #一次顯示多少操作的log
osd crush chooseleaf type = 0 #默認值為1 #CRUSH規則用到chooseleaf時的bucket的類型
filestore xattr use omap = true #默認false#為XATTRS使用object map,EXT4文件系統時使用,XFS或者btrfs也可以使用
filestore min sync interval = 10 #默認0.1#從日志到數據盤最小同步間隔(seconds)
filestore max sync interval = 15 #默認5#從日志到數據盤最大同步間隔(seconds)
filestore queue max ops = 25000 #默認500#數據盤最大接受的操作數
filestore queue max bytes = 1048576000 #默認100 #數據盤一次操作最大字節數(bytes
filestore queue committing max ops = 50000 #默認500 #數據盤能夠commit的操作數
filestore queue committing max bytes = 10485760000 #默認100 #數據盤能夠commit的最大字節數(bytes)
filestore split multiple = 8 #默認值2 #前一個子目錄分裂成子目錄中的文件的最大數量
filestore merge threshold = 40 #默認值10 #前一個子類目錄中的文件合並到父類的最小數量
filestore fd cache size = 1024 #默認值128 #對象文件句柄緩存大小
filestore op threads = 32 #默認值2 #並發文件系統操作數
journal max write bytes = 1073714824 #默認值1048560 #journal一次性寫入的最大字節數(bytes)
journal max write entries = 10000 #默認值100 #journal一次性寫入的最大記錄數
journal queue max ops = 50000 #默認值50 #journal一次性最大在隊列中的操作數
journal queue max bytes = 10485760000 #默認值33554432 #journal一次性最大在隊列中的字節數(bytes)
##############################################################
[client]
rbd cache = true #默認值 true #RBD緩存
rbd cache size = 335544320 #默認值33554432 #RBD緩存大小(bytes)
rbd cache max dirty = 134217728 #默認值25165824 #緩存為write-back時允許的最大dirty字節數(bytes),如果為0,使用write-through
rbd cache max dirty age = 30 #默認值1 #在被刷新到存儲盤前dirty數據存在緩存的時間(seconds)
rbd cache writethrough until flush = false #默認值true #該選項是為了兼容linux-2.6.32之前的virtio驅動,避免因為不發送flush請求,數據不回寫
#設置該參數后,librbd會以writethrough的方式執行io,直到收到第一個flush請求,才切換為writeback方式。
rbd cache max dirty object = 2 #默認值0 #最大的Object對象數,默認為0,表示通過rbd cache size計算得到,librbd默認以4MB為單位對磁盤Image進行邏輯切分
#每個chunk對象抽象為一個Object;librbd中以Object為單位來管理緩存,增大該值可以提升性能
rbd cache target dirty = 235544320 #默認值16777216 #開始執行回寫過程的臟數據大小,不能超過 rbd_cache_max_dirty
PG分布調優
參數名稱 | 參數說明 | 優化建議 |
---|---|---|
pg_num | Total PGs = (Total_number_of_OSD * 100) / max_replication_count,得出的結果向上取到最近的2的整數次冪。 | 默認值:8修改完后是否需要重啟:否現象:pg數量太少的話會有warning提示。修改建議:根據計算公式具體計算得到的值 |
pgp_num | pgp數量設置為與pg相同。 | 默認值:8修改完后是否需要重啟:否現象:pgp數量建議與pg數量相同修改建議:根據計算公式具體計算得到的值 |
ceph balancer mode | 使能balancer均衡器插件,並設置均衡器插件模式為“upmap”。 | 默認值:none修改完后是否需要重啟:否現象:若PG數量不均衡會出現個別OSD負載較大而成為瓶頸。修改建議:upmap |
OSD綁核
在BIOS關閉NUMA,可跳過此步驟 https://blog.csdn.net/qq_34065508/article/details/103358812
綁核方法:
- numactl
- cgroup
- taskset
Bcache使能調優
Bcache是Linux內核塊層cache,它使用SSD來作為HDD硬盤的cache,從而起到加速作用。Bcache內核模塊需要重新編譯內核使能。
zlib硬件加速調優
硬件選型方案6
計算 CentOS7 最新版 存儲 CentOS8 最新版
硬件推薦列表
計算節點: R630 雙CPU 1系統盤
存儲節點內存根據所配容量計算 每TB容量2GB內存 + 16GB緩存 1系統盤
存儲節點3.5(SAS/SATA): R730/R720 (單CPU適用SATA/雙CPU適用於多NVME高性能)
存儲節點2.5(SATA/U2): R630(10盤位 SATAx6 U2x4)
硬盤推薦
HDD(企業級): 希捷或西數HDD
SATA-SSD(企業級): 英特爾S3610/S3710(MLC) 三星PM883 鎂光5200MAX
高性能 U2(可做存儲盤): 英特爾P4600/P4500/P3700/P3600/P3500 三星PM963
高性能 PCI-E NVME(可做緩存盤): 傲騰905P/900P 英特爾/P4700/P3700 三星1725a/1725b
網卡:Mellanox ConnectX-3(支持RDMA)
計算節點
雲平台,給客戶虛擬機提供計算資源
節點數量:三台
硬件 | 配置 |
---|---|
服務器 | Dell R730 |
CPU | E5-2650 v3 * 2 |
內存 | 128GB |
硬盤 | 系統盤(RAID1) + 對接后端的Ceph分布式存儲 |
網卡 | 40G ib網卡(存儲管理網絡) + G口板載網卡雙綁(出口網絡) |
OS | CentOS 7 最新版本 |
Kernel | 默認內核 |
存儲節點
對接雲平台,提供分布式存儲
節點數量:三台
硬件 | 配置 |
---|---|
服務器 | Dell R630 |
CPU | E5-2609 v3 * 2 |
內存 | 128GB |
硬盤 | 系統盤(RAID1) + SSD(NVMe/PCI-E/SATA3) + HDD(SAS) 2.5英寸 |
網卡 | 40G萬兆 ib網卡 * 2 (前端管理網絡+后端存儲網絡)+ 公網IP * 1 |
OS | CentOS 7 最新版本 |
Kernel | 默認內核 |
Ceph | v14.2.10 (nautilus) OSD+MON+MDS+MGR |
三節點,三副本
方案一:Bluestore-Bluefs(block_db+block_wal) + HDD數據盤
intel DC S3700/S3710 * 1(400G) 【¥3000】 + 5 * HDD(2T) 【¥2000】
total:10T
方案二:SSD做cache池 + Bluestore-Bluefs(block_db+block_wal) + HDD數據盤做volume池
intel DC S4600/S4500 * 2 (480G) 【¥2000】 + intel DC S3700/S3710(200G) 【¥3000】* 1 + 3 * HDD(2T) 【¥2000】
total:cache(1T)+volume(6T)
方案三:純HDD數據盤
DeLL SAS HDD(2T) * 6 【¥2000】
total:12T
方案四:純SSD數據盤
intel DC S4600/S4500 * 6 (480G) 【¥2000】
total:2.4T