ceph pg知識點


 

 Pgpgp的含義:

  PG是指定存儲池存儲對象的目錄有多少個,PGP是存儲池PGOSD分布組合個數

  PG的增加會引起PG內的數據進行分裂,分裂到相同的OSD上新生成的PG當中

  PGP的增加會引起部分PG的分布進行變化,但是不會引起PG內對象的變動

存儲池pg的計算:

Pg數量=osd數量*200/副本數

例子 1:創建存儲池時,有 10 個硬盤,副本數為 2

PgNumBase = (10 * 200) / 2 = 1000,找到的 N 9,即 29 < 1000 < 210 ,因為 1000 > ( 29 * 1.25 ),所以最后得到 PgNum = 1024

例子 2:創建存儲池時,有 9 個硬盤,副本數為 3

PgNumBase = (9 * 200) / 3 = 600,找到的 N 9,即 29 < 600 < 210 ,因為 600 <= ( 29 * 1.25 ),所以最后得到的 PgNum = 512

Pg的角色

      正常情況下同一個pg所有的實例保存的內容完全相同,原則上不需要對它們的身份加以區分,但是出於數據一致性考慮,仍然需要從中選出一個起主導作用的實例,稱為Primary,由其作為集中點對所有任務進行統籌管理。Primary之外的實例統稱為Replica(副本),所有的寫操作都是寫道primary完后再由主傳遞到其他的副本。這樣能夠保證數據的一致性

Pg的常見狀態

狀態

描述

Activating

Peering即將完成,PG正在等待所有PG實例同步並固化Peering的結果(InfoLog)

Active

PG可以正常處理來自客戶端的讀寫請求

Backfilling

正在后台填充態。 backfillrecovery的一種特殊場景,指peering完成后,如果基於當前權威日志無法對Up Set當中的某些PG實例實施增量同步(例如承載這些PG實例的OSD離線太久,或者是新的OSD加入集群導致的PG實例整體遷移) 則通過完全拷貝當前Primary所有對象的方式進行全量同步

Backfill-toofull

某個需要被BackfillPG實例,其所在的OSD可用空間不足,Backfill流程當前被掛起

Backfill-wait

等待Backfill 資源預留

Clean

PG當前不存在待修復的對象, Acting SetUp Set內容一致,並且大小等於存儲池的副本數

Creating

PG正在被創建

Deep

PG正在或者即將進行對象一致性掃描清洗(Deep-Scrub

Degraded

降級狀態。Peering完成后,PG檢測到任意一個PG實例存在不一致(需要被同步/修復)的對象,或者當前ActingSet 小於存儲池副本數

Down

Peering過程中,PG檢測到某個不能被跳過的Interval(例如該Interval期間,PG完成了Peering,並且成功切換至Active狀態,從而有可能正常處理了來自客戶端的讀寫請求),當前剩余在線的OSD不足以完成數據修復

Incomplete

Peering過程中, 由於 a. 無非選出權威日志 b. 通過choose_acting選出的Acting Set后續不足以完成數據修復,導致Peering無非正常完成

Inconsistent

不一致態。集群清理和深度清理后檢測到PG中的對象在副本存在不一致,例如對象的文件大小不一致或Recovery結束后一個對象的副本丟失

Peered

Peering已經完成,但是PG當前ActingSet規模小於存儲池規定的最小副本數(min_size)

Peering

正在同步態。PG正在執行同步處理

Recovering

正在恢復態。集群正在執行遷移或同步對象和他們的副本

Recovering-wait

等待Recovery資源預留

Remapped

重新映射態。PG活動集任何的一個改變,數據發生從老活動集到新活動集的遷移。在遷移期間還是用老的活動集中的主OSD處理客戶端請求,一旦遷移完成新活動集中的主OSD開始處理

Repair

PG在執行Scrub過程中,如果發現存在不一致的對象,並且能夠修復,則自動進行修復狀態

Scrubbing

PG正在或者即將進行對象一致性掃描

Unactive

非活躍態。PG不能處理讀寫請求

Unclean

非干凈態。PG不能從上一個失敗中恢復

Stale

未刷新態。PG狀態沒有被任何OSD更新,這說明所有存儲這個PGOSD可能掛掉, 或者Mon沒有檢測到Primary統計信息(網絡抖動)

Undersized

PG當前Acting Set小於存儲池副本數

 

Ceph pg map 1.6c //查看pgosd的映射關系

Ceph pg 1.6c query //查看pg的詳細信息

Ceph pg scrub {pg-id} //清洗單個pg意思就是將這個pg中的數據和主pg同步達到數據一致性。

Ceph pg dump //查看pgmap

Ceph pg ls-by-osd 0 //指定osd.0查看pg的狀態

Ceph pg ls-by-pool mytest //指定mytest池查看pg的狀態

Ceph pg ls-by-primary osd.0 //指定osd.0查看主pg的狀態

如果pg的狀態一直卡在recovery_waitbackfill_wait這倆個狀態中

1、查看卡住PG的具體信息

# ceph pg $pgid query (重點關注recovery_state信息)

2、查看pg分布及各個分布osd上的資源預留情況

查看pg分布的osd

# ceph pg map $pgid

3、查看osd的資源預留情況(主要針對流控,涉及對端和本地)

# ceph daemon osd.$id dump_reservations

Local_reservations為本地資源預留信息,remote_reservations為遠端信息

可以通過手動觸發資源預留比如ceph osd down $id

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM