Ceph 細節原理及讀寫流程

2022-10-09 06:39:09 字數 4665 閱讀 9440

目錄

osd daemon 狀態:預設每2s匯報自己的狀態給monitor (同時監控組內其他osd狀態)

up:可以提供io

down:不能提供io

in:有資料

out:沒有資料

如在 副本數為 3 的配置中,乙個pg中 包含 三個osd daemon,也就是三塊硬碟,其中乙個是master,剩下兩個是副本

pgosd daemon之間的關係,是通過crush演算法得出的;常規這三個osd daemon可以在一台機器上,也可以在不同機器上;那麼根據crush演算法會盡可能的保證乙個平衡,就是不在同乙個機器上;畢竟ceph中的資料是乙個為平衡的狀態,一切都是通過crush演算法來實現的資料平衡;

pg本身是個有序列表,位於第一的位置是master;這個列表的產生是由monitor來產生的;

monitor節點上會執行乙個叫pg monitor的程序;

定時檢索整個集群中是否存在新建的儲存池pool(這個儲存池其實就乙個一堆 pg 的集合);

當發現新的儲存池時,會繼續檢查儲存池中的 pg 狀態;

檢查出pg的狀態為新狀態(待建立),該pg會進入乙個creating的狀態,會把該pg放到建立佇列中

之後monitor再根據crush演算法 計算得出 pg 中包含的三個osd daemon同時算出組長;

此時monitor會把剛剛計算出來的所有pgosd daemon的資訊直接發給組長;

pg中的osd daemon組長收到資訊後,此時組員之間的就知道彼此,這個過程叫做peering建立連線;

最終生成pg

由以上步驟看出,pg實際是個邏輯單位,pg的資訊儲存在crush maposd daemon中。

ceph -s 命令檢視

stable狀態說明:

monitor一旦發現osd daemon沒有匯報狀態,會立即把此osd daemon對應的pg組,標記為stable;

表示該 pg 組內有osd daemon2s中沒有匯報狀態;如果在300s內osd daemon還沒有匯報狀態,此osd daemon就會被踢出 對應的pg組;

被踢出後,pg組內的副本數就變少了,monitor又會使用crush演算法重新加入乙個新的osd daemon加入到pg組中

hash 校驗,同pg下的osd資料進行hash比較,副本osd會跟主osd比較,有區別就會同步主osd的資料

版本號校驗,同pg下的osd資料每次同步時,都會產生乙個版本號,當版本號有差異時,會同步資料

資料大小size的比較,同pg下的osd資料直接比較大小,有差異的副本osd就會同步主osd的資料

提供的功能:

pg 的邏輯集合

副本數,提供資料冗餘性

crush 規則,pg 是如何 發現 osd 的

儲存池存在使用者許可權

pool 型別:

複製型別 乙個 pg 中 有多個 osd

糾錯碼型別 分為 k 個 資料塊、m個編碼快,然後進行存放,沒有乙個資料存放多份

缺點:1.速度慢 2. 不支援ceph 所有的操作 ,如:在資料清理是,不支援區域性鎖定清理的功能

目錄osd daemon 狀態:預設每2s匯報自己的狀態給monitor (同時監控組內其他osd狀態)

up:可以提供io

down:不能提供io

in:有資料

out:沒有資料

如在 副本數為 3 的配置中,乙個pg中 包含 三個osd daemon,也就是三塊硬碟,其中乙個是master,剩下兩個是副本

pgosd daemon之間的關係,是通過crush演算法得出的;常規這三個osd daemon可以在一台機器上,也可以在不同機器上;那麼根據crush演算法會盡可能的保證乙個平衡,就是不在同乙個機器上;畢竟ceph中的資料是乙個為平衡的狀態,一切都是通過crush演算法來實現的資料平衡;

pg本身是個有序列表,位於第一的位置是master;這個列表的產生是由monitor來產生的;

monitor節點上會執行乙個叫pg monitor的程序;

定時檢索整個集群中是否存在新建的儲存池pool(這個儲存池其實就乙個一堆 pg 的集合);

當發現新的儲存池時,會繼續檢查儲存池中的 pg 狀態;

檢查出pg的狀態為新狀態(待建立),該pg會進入乙個creating的狀態,會把該pg放到建立佇列中

之後monitor再根據crush演算法 計算得出 pg 中包含的三個osd daemon同時算出組長;

此時monitor會把剛剛計算出來的所有pgosd daemon的資訊直接發給組長;

pg中的osd daemon組長收到資訊後,此時組員之間的就知道彼此,這個過程叫做peering建立連線;

最終生成pg

由以上步驟看出,pg實際是個邏輯單位,pg的資訊儲存在crush maposd daemon中。

ceph -s 命令檢視

stable狀態說明:

monitor一旦發現osd daemon沒有匯報狀態,會立即把此osd daemon對應的pg組,標記為stable;

表示該 pg 組內有osd daemon2s中沒有匯報狀態;如果在300s內osd daemon還沒有匯報狀態,此osd daemon就會被踢出 對應的pg組;

被踢出後,pg組內的副本數就變少了,monitor又會使用crush演算法重新加入乙個新的osd daemon加入到pg組中

hash 校驗,同pg下的osd資料進行hash比較,副本osd會跟主osd比較,有區別就會同步主osd的資料

版本號校驗,同pg下的osd資料每次同步時,都會產生乙個版本號,當版本號有差異時,會同步資料

資料大小size的比較,同pg下的osd資料直接比較大小,有差異的副本osd就會同步主osd的資料

提供的功能:

pg 的邏輯集合

副本數,提供資料冗餘性

crush 規則,pg 是如何 發現 osd 的

儲存池存在使用者許可權

pool 型別:

複製型別 乙個 pg 中 有多個 osd

糾錯碼型別 分為 k 個 資料塊、m個編碼快,然後進行存放,沒有乙個資料存放多份

缺點:1.速度慢 2. 不支援ceph 所有的操作 ,如:在資料清理是,不支援區域性鎖定清理的功能

Ceph 細節原理及讀寫流程

目錄osd daemon 狀態 預設每2s匯報自己的狀態給monitor 同時監控組內其他osd狀態 up 可以提供io down 不能提供io in 有資料 out 沒有資料 如在 副本數為 3 的配置中,乙個pg中 包含 三個osd daemon,也就是三塊硬碟,其中乙個是master,剩下兩個...

HBase架構及讀寫流程

hbase架構分析 負責管理hbase元資料,即表的結構 表儲存的region等元資訊。負責表的建立,刪除和修改 因為這些操作會導致hbase元資料的變動 負責為hregionserver分配region,分配好後也會將元資料寫入相應位置 後面會詳細講述放在哪 如果對可用性要求較高,它需要做ha高可...

二 Ceph儲存工作原理及實現

認識ceph ceph是乙個能提供檔案儲存,快儲存和物件儲存的分布式儲存系統。它提供了乙個可無限伸縮的ceph儲存集群 ceph構架 中文官網 ceph架構 中文圖示 rados ceph的高可靠,高可拓展,高效能,高自動化都是由這一層來提供的,使用者資料的儲存最終也都是通過這一層來進行儲存的。可以...