rbd常用的配置參數
本文分享自天翼云開(kāi)發(fā)者社區《rbd常用的配置參數》,作者:l****n
rbd的基本介紹
rbd的架構如下圖所示:
rbd采用CRUSH算法實(shí)現數據的隨機分布。CRUSH算法,即Controlled Replication Under Scalable Hashing,是一種基于哈希的數據分布算法。CRUSH算法以數據唯一標識符、當前存儲集群的拓撲結構以及數據備份策略作為CRUSH的輸入,可以隨時(shí)隨地通過(guò)計算獲取數據所在的底層存儲設備并直接通信獲取或者寫(xiě)入數據,從而避免查表操作,實(shí)現去中心化和高度并發(fā),將數據均衡的存儲到各個(gè)存儲節點(diǎn),實(shí)現數據存儲的負載均衡;另外去中心化以及哈希的數據隨機分布,使得rbd存儲在理論上具備無(wú)限的可擴展性。CRUSH算法支持數據的多種備份策略,支持可配置副本數,支持存儲節點(diǎn)故障域定義與劃分,從而使整個(gè)系統具備了高可靠性和高可用性。
rbd的主要參數
在實(shí)際使用中需要配置rbd的一些參數,下面對rbd的一些常用參數進(jìn)行一下說(shuō)明:
1.rbd_cache: 是否使能緩存,默認情況下開(kāi)啟。
2.rbd_cache_size:最大的緩存大小,默認32MB。
3.rbd_cache_max_dirty:緩存中臟數據的最大值,用來(lái)控制回寫(xiě),不能超過(guò)rbd cache size,默認24MB。
4.rbd_cache_target_dirty:開(kāi)始執行回寫(xiě)的臟數據大小,不能超過(guò)rbd cache max dirty,默認16MB。
5.rbd_cache_max_dirty_age: 緩存中單個(gè)臟數據的最大緩存時(shí)間,避免因為未達到回寫(xiě)要求臟數據長(cháng)時(shí)間存在緩存中,默認1s。
6.rbd cache max dirty object:最大的Object對象數,默認為0,表示通過(guò)rbd cache size計算得到,librbd默認以4MB為單位對磁盤(pán)Image進(jìn)行邏輯切分,每個(gè)chunk對象抽象為一個(gè)Object;librbd中以Object為單位來(lái)管理緩存,增大該值可以提升性能。
7.rbd cache writethrough until flush:默認為true,該選項是為了兼容linux-2.6.32之前的virtio驅動(dòng),避免因為不發(fā)送flush請求,數據不回寫(xiě);設置該參數后,librbd會(huì )以writethrough的方式執行io,直到收到第一個(gè)flush請求,才切換為writeback方式。
8.rbd cache block writes upfront:是否開(kāi)啟同步io,默認false,開(kāi)啟后librbd要收到Ceph OSD的應答才返回。
9.rbd readahead trigger requests: 觸發(fā)預讀的連續請求數,默認為10。
10.rbd readahead max bytes: 一次預讀請求的最大io大小,默認512KB,為0則表示關(guān)閉預讀。
11.rbd readahead disable after bytes: 預讀緩存的最大數據量,默認為50MB,超過(guò)閥值后,librbd會(huì )關(guān)閉預讀功能,由Guest OS處理預讀(防止重復緩存);如果為0,則表示不限制緩存。
12.objecter inflight ops: 客戶(hù)端流控,允許的最大未發(fā)送io請求數,超過(guò)閥值會(huì )堵塞應用io,為0表示不受限。
13.objecter inflight op bytes:客戶(hù)端流控,允許的最大未發(fā)送臟數據,超過(guò)閥值會(huì )堵塞應用io,為0表示不受限。
14.rbd_enable_alloc_hint:是否開(kāi)發(fā)底層對象的分配。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。