2015年5月14日 星期四

Ceph 簡介

學習Ceph有一年多的時間了,有一些心得想在這邊跟大家分享,希望能幫助有興趣研究Ceph的同好。如果有看過蕃薯的前一篇文章: 從Hadoop到OpenStack Swift 再到Ceph 應該知道Ceph的優缺點,以及蕃薯為什麼要學習它。

Ceph能做什麼? 

來看這張圖:


物件儲存

Ceph的底層是RADOS(Reliable Autonomic Distributed Object Store),儲存著許許多多的物件,應用程式可以透過LIBRADOS這個API或是透過Ceph提供的RADOSGW(RADOS Gateway)網頁介面存取物件。

區塊設備

於LIBRADOS之上,RBD(Distributed Block Device)提供區塊設備,可以當成系統的一個區塊設備格式化並掛載,也可以提供給QEMU/KVM虛擬機使用。

檔案系統

於LIBRADOS之上,CEPH FS提供檔案系統,類似NFS或SAMBA,直接掛載就可以存取。

在CentOS 6核心並無法支援Ceph, 因此必須使用Ceph提供的FUSE(File system in USErspace)工具掛載,RBD使用 rbd-fuse,CEPH FS使用 ceph-fuse。CentOS 6 的QEMU/KVM也不支援,必須安裝Ceph提供的QEMU/KVM版本才能支援。但到了CentOS 7.1就都可以掛載,沒問題了。

區塊設備或是檔案系統,底層都是將資料切割成4MB大小的物件。目前物件儲存或區塊設備算是比較穩定的,但檔案系統則較不穩定些,不建議用在Production的環境。

有哪些伺服器角色?

MON (Monitor)

監控整個cluster的狀態,算是Ceph cluster的中樞,可以有多台來避免單點失效。

OSD (Object storage device)

實際儲存資料,一台主機可以有多個OSD,不建議使用RAID。若發現有其他OSD故障則回報MON。

MDS (Metadata server)

若有使用CEPH FS則必須有此MDS記錄檔案系統Metadata, 但目前只支援同時一台Active, 因此會造成效能瓶頸。

下圖是使用者、Monitor與OSD間的關係:

下圖是使用者、Metadata server與OSD 間的關係:
  • Ceph用儲存池的概念,使用者只要建立一個pool,然後就可以把物件往裡面丟,所以不能有同樣名稱的物件,否則會蓋掉舊的物件。
  • 它在物件之上再建立一個PG(Placement Group)層次,一個物件是一個檔案,而PG是一個存放檔案的目錄,物件會自動被對應到PG上,一個pool裡面會有數個PG,分散在各個OSD。對使用者來說,看到的只有pool和物件。
  • 一個pool可以設定物件儲存的份數(Replica)與最少的份數,一般是設定3份,最少要2份。用PG來當拷貝與遷移的單位,這樣就免去針對每個物件處理的麻煩。
下圖顯示CEPH FS將檔案切割成物件,再依PG存放至對應的OSD


順帶一提,Ceph來自台灣的瀏覽量已經進步到第12名了~~~讚!

以上只粗略介紹Ceph,沒有寫得很細,但希望能發揮拋磚引玉的效果,讓更多人一起來學習與交流。

2 則留言:

  1. 有看看ScaleIO嗎?最後開始也變成免費的了~

    回覆刪除
  2. 蕃薯還沒看過ScaleIO,找個時間再來瞭解它一下,謝謝你的訊息喔~~

    回覆刪除