動態特性:
儲存系統規模變化:業務規模
儲存系統裝置變化:節點、磁碟故障替換必然是時常出現的問題,業務不能受到這種硬體、底層軟體影響
儲存系統資料變化:
技術特性:
高可靠性:盡可能保證儲存資料不會丟失,使用者將資料寫到ceph儲存系統過程中,不會出現意外導致資料丟失(使用者寫入、儲存資料不丟失)
高度自動化:資料replication,自動re-balancing,一方面保證系統可靠性,系統規模大,降低運維難度
高可擴充套件性:系統規模、儲存容量可擴充套件,基於功能豐富強大的底層api提供多種功能、支援多種應用的功能性可擴充套件。
設計思路
充分發揮儲存裝置自身的計算能力
去除所有中心點:
1、出現中心點,引入單點故障
2、效能瓶頸
3、資料訪問延遲增大
關鍵技術創新
1、應該把資料寫入到什麼地方
(1)、使用者提交需要寫入資料時,系統必須迅速決策,為資料分配乙個儲存位置和空間,這個會影響資料寫入延遲
(2)、影響資料寫入均勻性
2、之前把資料寫到什麼地方去了
(1)、傳統的分布式儲存系統常用的解決方案是引入專用的伺服器節點,在其中儲存用於維護資料儲存空間對映關係的資料結構。在使用者寫入/訪問資料時,連線這一伺服器進行查詢操作,待決定/查到資料實際儲存位置後,再連線對應節點進行後續操作。傳統的解決方案一方面容易導致單點故障和效能瓶頸,另一方面,導致更長的操作延遲
(2)、ceph徹底放棄了基於查表的資料定址方式(傳統的集中式儲存元資料定址的方案),而改用基於計算的方式。簡言之,任何乙個ceph儲存系統的客戶端程式,僅僅使用不定期更新的少量本地元資料,加以簡單計算,就可以根據乙個資料的id決定其儲存位置。
集群維護
由若干個monitor共同負責整個ceph集群中所有osd狀態的發現與記錄,並且共同形成cluster map的master版本,然後擴散至全體osd以及client。osd使用cluster map進行資料的維護,client使用cluster map進行資料的定址。
monitor並不主動輪詢各個osd的當前狀態。相反,osd需要向monitor上報狀態資訊。常見上報情況:一是新的osd被加入集群,二是某個osd發現自身或者其他osd發生異常。
集群中的裝置異常(異常osd的新增刪除操作),會導致pg的各個副本間出現資料的不一致現象,這時就需要進行資料的恢復,讓所有的副本都達到一致的狀態。
osd的故障種類:
故障a:乙個正常的osd因為所在的裝置發生異常,導致osd不能正常工作,這樣osd超過設定的時間就會被out出集群。
故障a解決:osd上所有的pg,這些pg就會重新分配副本到其他osd上。乙個pg中包含的object數量是不限制的,這時會將pg中所有的object進行複製,可能會產生很大的資料複製。
故障b:乙個正常的osd因為所在的裝置發生異常,導致osd不能正常工作,但是在設定的時間內,它又可以正常的工作,這時會新增會集群中。
故障b解決:osd又重新回到pg當中去,這時需要判斷一下,如果osd能夠進行增量恢復則進行增量恢復,否則進行全量恢復。(增量恢復:是指恢復osd出現異常的期間,pg內發生變化的object。全量恢復:是指將pg內的全部object進行恢復,方法同故障a的處理)
需要全量恢復的操作叫做backfill操作。需要增量恢復的操作叫做recovery操作。
osdosd狀態涉及up/down和in/out兩個維度,up/down表示osd是否工作正常,in/out表示osd是否包含有效資料。
-up且in:說明該osd正常執行,且已經承載至少乙個pg的資料。這是乙個osd的標準工作狀態;
-up且out:說明該osd正常執行,但並未承載任何pg,其中也沒有資料。乙個新的osd剛剛被加入ceph集群後,便會處於這一狀態。而乙個出現故障的osd被修復後,重新加入ceph集群時,也是處於這一狀態;
-down且in:說明該osd發生異常,但仍然承載著至少乙個pg,其中仍然儲存著資料。這種狀態下的osd剛剛被發現存在異常,可能仍能恢復正常,也可能會徹底無法工作;
-down且out:說明該osd已經徹底發生故障,且已經不再承載任何pg。
failure recovery過程
乙個新的osd上線後,首先根據配置資訊與monitor通訊。monitor將其加入cluster map,並設定為up且out狀態,再將最新版本的cluster map發給這個新osd。
收到monitor發來的cluster map之後,這個新osd計算出自己所承載的pg,以及和自己承載同乙個pg的其他osd。然後,新osd將與這些osd取得聯絡。如果這個pg目前處於降級狀態(即承載該pg的osd個數少於正常值,如正常應該是3個,此時只有2個或1個。這種情況通常是osd故障所致),則其他osd將把這個pg內的所有物件和元資料複製給新osd。資料複製完成後,新osd被置為up且in狀態。而cluster map內容也將據此更新。
re-balancing過程
新osd將替換掉現有osd中的乙個(pg內將重新選出primary osd),並承擔其資料。在資料複製完成後,新osd被置為up且in狀態,而被替換的osd將退出該pg(但狀態通常仍然為up且in,因為還要承載其他pg)。而cluster map內容也將據此更新。
failure detection過程
乙個osd發現和自己共同承載乙個pg的另乙個osd無法聯通,則會將這一情況上報monitor。此外,如果乙個osd deamon發現自身工作狀態異常,也將把異常情況主動上報給monitor。在上述情況下,monitor將把出現問題的osd的狀態設為down且in。如果超過某一預訂時間期限,該osd仍然無法恢復正常,則其狀態將被設定為down且out。反之,如果該osd能夠恢復正常,則其狀態會恢復為up且in。在上述這些狀態變化發生之後,monitor都將更新cluster map並進行擴散。
Ceph 知識摘錄 效能測試 2
清理快取命令 echo 3 proc sys vm drop caches 清除快取頁,目錄項和inodes 磁碟效能測試 dd 測試磁碟寫吞吐量 dd命令對磁碟進行標準寫測試。記住新增oflag引數以繞過磁碟頁面快取。dd if dev zero of var lib ceph osd wc01 ...
Ceph 設計思想及結構RADOS
ceph 設計思想及結構 大規模的儲存系統,有三個動態特性 儲存系統規模的變化 隨著業務的不斷發展,系統需要承載越來越大的資料容量。儲存系統中裝置的變化 對於由成千上萬個節點構成的系統,其節點的故障與替換必然是時長出現的情況,不能使業務受到這種頻繁出現的硬體及底層軟體問題的影響,同時應該智慧型化,並...
Ceph 知識摘錄 系統架構 資料儲存過程
ceph系統基礎服務架構 ceph的底層實現是rados,它向外界暴露了呼叫介面,即librados,應用程式只需要呼叫librados的介面,便可操縱ceph。ceph物件儲存閘道器允許你通過swift及s3 api訪問ceph。他將這些api請求轉化為librados請求。1 基礎儲存系統rad...