-
前言
隨着分佈式存儲的廣泛應用,目前對PG的關注越來越多,本文基於ONStor分佈式存儲系統簡要介紹一下PG的狀態變化,重點說明OSD對PG狀態的影響。
-
一、Ceph分佈式存儲概述
Ceph是一個統一的分佈式存儲系統,設計初衷是提供較好的性能、可靠性和可擴展性。
1、ceph主要特點
1)高可用
副本數可以靈活控制。
支持故障域分隔,數據強一致性。
多種故障場景自動進行修復自愈。
沒有單點故障,自動管理。
2)高可擴展性
去中心化。
擴展靈活。
隨着節點增加而線性增長。
3)特性豐富
支持三種存儲接口:塊存儲、文件存儲、對象存儲。
支持自定義接口,支持多種語言驅動。
2、ceph主要架構
ceph摒棄了傳統的集中式存儲元數據尋址的方案,採用CRUSH算法,一切皆CRUSH,數據分佈均衡,並行度高。 並考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。能夠支持上千個存儲節點的規模,支持TB到PB級的數據。
Ceph的最底層是RADOS(分佈式對象存儲系統),它具有可靠、智能、分佈式等特性,實現高可靠、高可拓展、高性能、高自動化等功能,並最終存儲用戶數據。RADOS系統主要由兩部分組成,分別是OSD和Monitor。
RADOS之上是LIBRADOS,LIBRADOS是一個庫,它允許應用程序通過訪問該庫來與RADOS系統進行交互,支持多種編程語言,比如C、C++、Python等。
基於LIBRADOS層開發的有三種接口,分別是RADOSGW、librbd和MDS。
RADOSGW是一套基於當前流行的RESTFUL協議的網關,支持對象存儲,兼容S3和Swift。librbd提供分佈式的塊存儲設備接口,支持塊存儲。
MDS提供兼容POSIX的文件系統,支持文件存儲。
3、ceph數據的寫入
數據首先獲得節點的動態ip,之後通過塊或者文件或者對象協議傳輸文件到節點上,在這裏數據將被分爲4M大小的對象並獲取對象ID,將對象ID進行hash算法計算,得到的結果對pg個數取餘,將對象分配至該取值的pg,接着,不同的pg通過crush算法被分配至不同的OSD。完成數據到磁盤的映射關係的建立及寫入。
4、PG概述
PG全稱Placement Groups,中文譯爲放置組,是用於放置object的一個載體,pg的創建是在創建ceph存儲池的時候指定的,同時跟指定的副本數也有關係,比如是3副本的則會有3個相同的pg存在於3個不同的osd上,pg其實在osd的存在形式就是一個目錄,在架構層次上,PG位於RADOS層的中間。引入PG這一層其實是爲了更好的分配數據和定位數據。
在架構層次上,PG位於RADOS層的中間。
a. 往上負責接收和處理來自客戶端的請求。
b. 往下負責將這些數據請求翻譯爲能夠被本地對象存儲所能理解的事務。
PG是組成存儲池的基本單位,存儲池中的很多特性,都是直接依託於PG實現的。ceph面向容災域的備份策略使得一般而言的PG需要執行跨節點的分佈式寫,因此數據在不同節點之間的同步、恢復時的數據修復也都是依賴PG完成。
-
二、PG常見狀態
PG外部狀態的變化最終通過其內部狀態機進行驅動,這些狀態機爲一種基於事件驅動的有線狀態機。當集羣發生變化時,如:OSD加入或者刪除、OSD 宕掉或者恢復、存儲池的創建等都會引起PG狀態機的變化狀態機 在不同狀態之間的跳轉和執行處理實現我們所希望實現的功能。
該狀態機現有狀態如下圖所示:
由圖可知,該狀態機一共有四級狀態,每一種狀態又可以包含若干子狀態,所有子狀態中第一個狀態爲其默認狀態,如:該狀態機初始化時,默認會進入Initial子狀態;又比如當該狀態機從其他狀態,如Reset狀態,跳轉至Start ed狀態時,默認會進入S tarted/Start子狀態等等。
常見外部狀態
Creating:PG正在被創建。
Peering:持有同一個PG的OSD之間互相比較數據的過程,
peering過程中,PG不可讀寫。
Active:PG中的數據可以被讀寫,對該PG的操作請求都將會被處理。
Clean:PG中的所有對象都已經被複制了規定的副本數量。
Scrubbing:PG在做不一致性校驗。
Degraded:PG中部分對象的副本數量未達到規定的數量。
Undersized:PG當前Acting Set小於存儲池副本數
Recovering:PG正在遷移或者同步對象及其副本。
Back Filling:新OSD加入集羣后,集羣原有的一部分PG進行遷移或進行全量同步。
Down:PG處於失效離線狀態,無法提供讀寫。
Inconsistent:PG副本出現不一致。
Unfound:某個object已經不存在於任何活動的OSD上了。
-
三、osd對PG狀態的影響
|
down |
down恢復 |
out |
out恢復 |
PG狀態 |
active+clean—— active+degraded+undersized |
active+recovering+degrade——active+clean |
active+clean ——active+recovering+degrade——active+clean |
active+clean ——active+recovering+degrade/active+remapped+backfilling——active+clean |
副本數 |
2 |
3 |
3 |
3 |
PG平衡 |
不觸發 |
觸發 |
觸發 |
觸發 |
集羣健康度 |
不健康 |
100% |
100% |
100% |
映射關係 |
不增新osd |
恢復 |
增加新osd |
恢復 |