1. 程式人生 > 其它 >Ceph 細節原理及讀寫流程

Ceph 細節原理及讀寫流程

目錄

 

Ceph 細節原理

OSD daemon

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

  1. up :可以提供IO
  2. down :不能提供IO
  3. in :有資料
  4. out :沒有資料

PG 的概念

  • epoach: 單調遞增的版本號,用於資料校驗使用
  • acting set: OSD 列表,第一個為 primary OSD,其餘的為replicated OSD
  • PG tmp:當主OSD故障後,monitor 通過 CRUSH 找一個OSD頂替,但此OSD中沒有資料,會在副本OSD中臨時當做主的,就是此狀態
    當新調過來的主OSD資料同步完成後,恢復正常狀態
  • up set: 是 acting set 過去版本,是出現 PG tmp後,以前的一個版本

PG 中 OSD 組長是如何建立的

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

PG 和 OSD daemon 之間的關係,是通過 CRUSH 演算法得出的;常規這三個 OSD daemon 可以在一臺機器上,也可以在不同機器上;那麼根據 CRUSH

 演算法會盡可能的保證一個平衡,就是不在同一個機器上;畢竟Ceph中的資料是一個為平衡的狀態,一切都是通過CRUSH 演算法來實現的資料平衡;

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

  1. 在 monitor 節點上會執行一個叫 PG monitor 的程序;
  2. 定時檢索整個叢集中是否存在新建的儲存池pool(這個儲存池其實就一個一堆 PG 的集合);
  3. 當發現新的 儲存池 時,會繼續檢查儲存池中的 PG 狀態;
  4. 檢查出PG的狀態為新狀態(待建立),該PG會進入一個creating 的狀態,會把該PG放到建立佇列中
  5. 之後 monitor
     再根據 CRUSH 演算法 計算得出 PG 中包含的三個 OSD daemon 同時算出組長;
  6. 此時 monitor 會把剛剛計算出來的所有 PG、 OSD daemon 的資訊直接發給組長;
  7. PG 中的 OSD daemon 組長收到資訊後,此時組員之間的就知道彼此,這個過程叫做 peering 建立連線;
  8. 最終生成PG

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

PG 的狀態

ceph -s 命令檢視

  • creating: 正在建立的狀態
  • peering: PG內OSD內相互認知的狀態
  • active: PG內OSD相互認識後,就會處於此狀態,能寫資料,但PG內的OSD相互資料並沒有同步
  • clean:PG內的的OSD能寫資料,並且所有的OSD的資料已同步
  • stable:PG 內有OSD在 2s內沒有彙報自己的狀態給monitor
  • backfilling:一個新的OSD被加入到PG組內,正在做全量的資料拷貝
  • recovery:同PG組內一個OSD與主OSD的資料存在差異被檢測出來,會被改為此狀態,同時進行資料同步

stable 狀態說明:

monitor 一旦發現 OSD daemon 沒有彙報狀態,會立即把此OSD daemon對應的PG組,標記為 stable;
表示該 PG 組內有OSD daemon在 2s 中沒有彙報狀態;如果在300s內OSD daemon還沒有彙報狀態,此 OSD daemon 就會被踢出 對應的PG組;
被踢出後,PG組內的副本數就變少了,monitor 又會使用 CRUSH 演算法重新加入一個新的OSD daemon 加入到PG組中

PG 內 OSD 的資料校驗方式

  1. HASH 校驗,同PG下的OSD資料進行HASH比較,副本OSD會跟主OSD比較,有區別就會同步主OSD的資料
  2. 版本號校驗,同PG下的OSD資料每次同步時,都會產生一個版本號,當版本號有差異時,會同步資料
  3. 資料大小SIZE 的比較,同PG下的OSD資料直接比較大小,有差異的副本OSD就會同步主OSD的資料

pool:儲存池

提供的功能:

  1. PG 的邏輯集合
  2. 副本數,提供資料冗餘性
  3. CRUSH 規則,PG 是如何 發現 OSD 的
  4. 儲存池存在使用者許可權

pool 型別:

  1. 複製型別 一個 PG 中 有多個 OSD
  2. 糾錯碼型別 分為 k 個 資料塊、M個編碼快,然後進行存放,沒有一個數據存放多份
    缺點:1.速度慢 2. 不支援Ceph 所有的操作 ,如:在資料清理是,不支援區域性鎖定清理的功能

Ceph 讀寫流程

目錄

 

Ceph 細節原理

OSD daemon

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

  1. up :可以提供IO
  2. down :不能提供IO
  3. in :有資料
  4. out :沒有資料

PG 的概念

  • epoach: 單調遞增的版本號,用於資料校驗使用
  • acting set: OSD 列表,第一個為 primary OSD,其餘的為replicated OSD
  • PG tmp:當主OSD故障後,monitor 通過 CRUSH 找一個OSD頂替,但此OSD中沒有資料,會在副本OSD中臨時當做主的,就是此狀態
    當新調過來的主OSD資料同步完成後,恢復正常狀態
  • up set: 是 acting set 過去版本,是出現 PG tmp後,以前的一個版本

PG 中 OSD 組長是如何建立的

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

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

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

  1. 在 monitor 節點上會執行一個叫 PG monitor 的程序;
  2. 定時檢索整個叢集中是否存在新建的儲存池pool(這個儲存池其實就一個一堆 PG 的集合);
  3. 當發現新的 儲存池 時,會繼續檢查儲存池中的 PG 狀態;
  4. 檢查出PG的狀態為新狀態(待建立),該PG會進入一個creating 的狀態,會把該PG放到建立佇列中
  5. 之後 monitor 再根據 CRUSH 演算法 計算得出 PG 中包含的三個 OSD daemon 同時算出組長;
  6. 此時 monitor 會把剛剛計算出來的所有 PG、 OSD daemon 的資訊直接發給組長;
  7. PG 中的 OSD daemon 組長收到資訊後,此時組員之間的就知道彼此,這個過程叫做 peering 建立連線;
  8. 最終生成PG

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

PG 的狀態

ceph -s 命令檢視

  • creating: 正在建立的狀態
  • peering: PG內OSD內相互認知的狀態
  • active: PG內OSD相互認識後,就會處於此狀態,能寫資料,但PG內的OSD相互資料並沒有同步
  • clean:PG內的的OSD能寫資料,並且所有的OSD的資料已同步
  • stable:PG 內有OSD在 2s內沒有彙報自己的狀態給monitor
  • backfilling:一個新的OSD被加入到PG組內,正在做全量的資料拷貝
  • recovery:同PG組內一個OSD與主OSD的資料存在差異被檢測出來,會被改為此狀態,同時進行資料同步

stable 狀態說明:

monitor 一旦發現 OSD daemon 沒有彙報狀態,會立即把此OSD daemon對應的PG組,標記為 stable;
表示該 PG 組內有OSD daemon在 2s 中沒有彙報狀態;如果在300s內OSD daemon還沒有彙報狀態,此 OSD daemon 就會被踢出 對應的PG組;
被踢出後,PG組內的副本數就變少了,monitor 又會使用 CRUSH 演算法重新加入一個新的OSD daemon 加入到PG組中

PG 內 OSD 的資料校驗方式

  1. HASH 校驗,同PG下的OSD資料進行HASH比較,副本OSD會跟主OSD比較,有區別就會同步主OSD的資料
  2. 版本號校驗,同PG下的OSD資料每次同步時,都會產生一個版本號,當版本號有差異時,會同步資料
  3. 資料大小SIZE 的比較,同PG下的OSD資料直接比較大小,有差異的副本OSD就會同步主OSD的資料

pool:儲存池

提供的功能:

  1. PG 的邏輯集合
  2. 副本數,提供資料冗餘性
  3. CRUSH 規則,PG 是如何 發現 OSD 的
  4. 儲存池存在使用者許可權

pool 型別:

  1. 複製型別 一個 PG 中 有多個 OSD
  2. 糾錯碼型別 分為 k 個 資料塊、M個編碼快,然後進行存放,沒有一個數據存放多份
    缺點:1.速度慢 2. 不支援Ceph 所有的操作 ,如:在資料清理是,不支援區域性鎖定清理的功能

Ceph 讀寫流程

技術男一枚,喜歡做技術分享,把學習的過程,以及遇到問題的解決過程都願意分享給大家,部落格中如有不足,請留言或者聯絡博主,感謝。 郵箱: [email protected] Q Q: 601566386 原文地址:https://www.cnblogs.com/winstom/p/12499750.html