ceph若干關鍵問題

2022-09-01 16:06:17 字數 1806 閱讀 5522

1. ceph群集裡pg存在的意義?

由於pg和osd的數量都比較有限,記錄每個osd承載了哪些pg可行,而且變化不頻繁,開銷小。 在osd x故障後,很容易獲得osd x承載的pg列表,並計算出各個pg的另外兩個副本在哪個osd。而每個pg下面的物件,都按照pg做了聚集(稱為collection,每個pg對應乙個目錄或者共用k/v儲存的prefix),很容易獲得物件列表。有了這些資訊,才具備了故障處理的可行性。

pg是一種間址,pg的數量有限,記錄pg跟osd間的對映關係可行,而記錄object到osd之間的對映因為數量巨大而實際不可行或效率太低。從用途來說,搞個對映本身不是目的,讓故障或者負載均衡變得可操作是目的;

ceph實現了兩種了字串hash,

一種是linux dcache採用的hash演算法,比較簡潔;

另一種是rjenkins hash 演算法,根據object name計算hash 採用的rjenkins hash 演算法。

計算x的過程:

1.物件name進行hash算出乙個uint的值ps;

2.ps與pgp_number進行mod後得到餘數b;

3.b於pool id進行hash,得到乙個值,即x,作為do_crush_rule()的入參;

2. weight和reweight

ceph osd crush reweight」 設定了osd的權重

weight :這個重量為任意值(通常是磁碟的tb大小,1tb設定為1),並且控制系統嘗試分配到osd的資料量。

reweight :reweight將覆蓋了weight量。這個值在0到1的範圍,並強制crush重新分配資料。它不改變buckets 的權重,並且是crush不正常的情況下的糾正措施。(例如,如果你的osd中的乙個是在90%以上,其餘為50%,可以減少權重,進行補償。)

通常情況下,當osd上面資料相對不平衡時,我們應該使用ceph osd reweight 命令修改reweight值,而不應該使用ceph osd crush reweight 命令修改weight值。

原因在於,修改reweight值將不會改變bucket的weight,而如果修改weight值就會改變整個bucket的weight,bucket weight 一旦改變,就會導致資料在bucket之間進行遷移,而不是在bucket內部進行遷移,這能最小化資料的交換量。

通過ceph osd reweight 設定權重,更新了什麼?

ceph osd reweight 命令僅僅更新了osdmap中osd_weights的值,而crush下面的item_weight值並不改變。從命令列傳入的 [0.0 ~ 1.0] 的值會被系統歸一化,將值乘個乘數(0x10000)並將其截整,所以osd_weigth下面的最大值為 0x10000,這對於下面解釋osd_weights如何起作用時候,至關重要。

歸一化算式:weigth = (int)input_weight * 0x10000 (65536)

從算式可知,當weight 被截整後,精度能夠到0.000015,如果權重值變化差異小於該值的,可能的結果是weigth截整後數值沒有變化,這也限定了weight的精度值。

簡單來說,bucket weight表示裝置(device)的容量,1tb對應1.00。bucket weight是所有item weight之和,item weight的變化會影響bucket weight的變化,也就是osd.x會影響host。

osd weight的取值為0~1。osd reweight並不會影響host。當osd被踢出集群時,osd weight被設定0,加入集群時,設定為1。

ceph若干問題

ceph health可以檢視ceph集群健康狀況 ceph df 可以檢視儲存的總使用率與各pool的使用率 ceph osd df 可以檢視各osd的使用率 ceph s 或 ceph status 可以檢視集群整體狀態 首先,我們要知道ceph的osd的位址 ceph osd tree可以檢視...

SaaS 運營關鍵問題

1。強大的硬體投入。保障24小時不間斷使用者資料訪問 amazon一年故障控制在5分鐘 伺服器投資佔硬體很大比重 應用伺服器,資料庫伺服器,身份認證伺服器,儲存備份伺服器等 2。穩定性 a。saas應作為乙個運營軟體,這就要求使用者任意輸入資料都不會導致系統錯誤,否則海量使用者會造成巨大損失。如,輸...

docker 幾個關鍵問題

1.容器和映象的區別 映象 image 和容器 container 的關係,就像是物件導向程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立 啟動 停止 刪除 暫停等 2.映象和倉庫的概念 4.registry repository tag images docker...