久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ceph Jewel版本三副本讀操作的示例分析

141次閱讀
沒有評論

共計 2612 個字符,預計需要花費 7 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 Ceph Jewel 版本三副本讀操作的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、主 OSD 讀處理流程

OSD::ms_fast_dispatch()

|__OSD::dispatch_session_waiting()

     |__OSD::dispatch_op_fast()

          |__OSD::handle_op()

               |__OSD::get_pg_or_queue_for_pg()       找到 OpRequest 中對應的 PG 和 Pool 信息

               |__OSD::enqueue_op()

                    |__PG::queue_op()

                         |__OSD::ShardedThreadPool::ShardedWQ::queue()     將 PG 和 Op 一起放入隊列中

OSD::ShardedOpWQ::_process()           負責處理 OSD::ShardedThreadPool::ShardedWQ 隊列中的 Op

|__PGQueueable::RunVis::operator()(const OpRequestRef op)

     |__OSD::dequeue_op()

          |__ReplicatedPG::do_request()

               |__檢查當前 PG 是否處于 flush 或 peering 狀態,若是則將 op 放入 waiting_for_peered 隊列中等待 PG 變成可用狀態

               |__檢查當前 PG 是否處于 Active 狀態,若不是則將 op 放入 waiting_for_active 隊列中

               |__檢查當前 PG 是否處于 REPLAY 狀態,若是則將 op 放入 waiting_for_active 隊列中

               |__ReplicatedPG::do_op()

                    |__RepliatedPG::do_pg_op()               對于請求中包含對 PG 的操作 CEPH_OSD_RMW_FLAG_PGOP

                    |__根據 op 請求創建 hobject_t 類對象 (head)

                    |__檢查對象名字長度 / 對象 locator key 長度 / 對象 locator 名稱空間長度是否大于 osd_max_object_name_len

                    |__通過 FileStore 檢查 object 的 head 是否有效

                    |__檢查 op 請求地址是否在 OSDMap 的 blacklist 中

                    |__對于寫請求,檢查寫請求的數據大小是否大于 osd_max_write_size 值

                    |__對于 op 請求的 head 目前不可讀,則將 op 放入 waiting_for_unreadable_object 隊列中且調用 maybe_kick_recovery() 函數嘗試啟動 recovery

                    |__ReplicatedPG::is_degraded_or_backfilling_object()           檢查當前 op 請求的 head 是否處于 recovery 或 backfill 狀態

                    |__ReplicatedPG::wait_for_degraded_object()                       將當前 op 請求的 head 放入 waiting_for_degraded_object 隊列中

                    |__檢查 head 是否在 objects_blocked_on_degraded_snap 隊列中,若是則將當前 op 請求的 head 放入 waiting_for_degraded_object 隊列中

                    |__檢查 head 是否在 objects_blocked_on_snap_promotion 隊列中,若是則將當前 op 請求的 head 放入 waiting_for_blocked_object 隊列中

                    |__檢查 head 是否在 objects_blocked_on_cache_full 隊列中,若是則將當前 op 請求的 head 放入 waiting_for_cache_not_full 隊列中

                    |__檢查 head 的 snapdir 是否不可讀,若是則將 head 的 snapdir 放入 waiting_for_unreadable_object 隊列中且調用 maybe_kick_recovery() 函數嘗試啟動 recovery

                    |__檢查 head 的 snapdir 是否處于 recovery 或 backfill 狀態,若是則將 head 的 snapdir 放入 waiting_for_degraded_object 隊列中

                    |__對于 op 寫請求已經在 PGLog 中,則若已經完成了寫操作則直接給客戶端返回 MOSDOpReply 消息且設置 CEPH_OSD_FLAG_ACK,否則將 op 放入到 waiting_for_ack 或 waiting_for_ondisk 隊列中

                    |__ReplicatedPG::find_object_context()               得到 object context 信息

                    |__檢查 object context 是否處于 io blocked 狀態,若是則將 op 請求放入到 waiting_for_blocked_object 或 waiting_for_degraded_object 隊列中

                    |__ReplicatedPG::execute_ctx()    

                         |__ReplicatedPG::prepare_transaction()

                         |__創建 MOSDOpReply 消息實例

                         |__調用 ReplicatePG::complete_read_ctx()     將讀操作的結果返回給 client 端

以上是“Ceph Jewel 版本三副本讀操作的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2612字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 和政县| 顺平县| 亚东县| 彭阳县| 长汀县| 凌源市| 乐清市| 清原| 边坝县| 南丰县| 张家口市| 文化| 三原县| 嘉荫县| 长宁县| 鄂伦春自治旗| 耒阳市| 天津市| 洛宁县| 什邡市| 民丰县| 鄂温| 如东县| 宣化县| 密山市| 崇明县| 建阳市| 镇平县| 鄢陵县| 田阳县| 星子县| 收藏| 长宁县| 兴城市| 长子县| 天全县| 新民市| 鄂州市| 枣强县| 电白县| 宁蒗|