91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ceph中Jewel OSD進程啟動處理流程的示例分析

發布時間:2021-12-18 16:39:18 來源:億速云 閱讀:198 作者:小新 欄目:云計算

小編給大家分享一下ceph中Jewel OSD進程啟動處理流程的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

OSD::main()

|__ObjectStore::create()

     |__調用FileStore構造函數創建FileStore類對象

|__MonClient::build_initial_monmap()          從配置文件中讀取monitor map信息

|__OSD::mkfs()

     |__FileStore::mkfs()     

          |__在/var/lib/ceph/osd/ceph-${id}/目錄下生成fsid文件

          |__在/var/lib/ceph/osd/ceph-${id}/目錄下創建version_stamp文件

          |__在/var/lib/ceph/osd/ceph-${id}/目錄下創建superblock文件

          |__在/var/lib/ceph/osd/ceph-${id}/目錄下創建current文件夾

          |__在/var/lib/ceph/osd/ceph-${id}/current/目錄下創建commit_op_seq文件且初始化該文件的內容為1

          |__在/var/lib/ceph/osd/ceph-${id}/current/omap/目錄下創建osd_uuid文件(current/omap目錄是OSD omap的工作目錄)

          |__FileStore::mkjournal()     

               |__FileStore::new_journal()

                    |__FileJournal()構造函數來創建FileJournal實例

          |__在/var/lib/ceph/osd/ceph-${id}/目錄下創建type文件且向該文件中寫入filestore

     |__FileStore::mount()

          |__FileStore::read_fsid()

          |__FileStore::version_stamp_is_valid()     檢查version_stmap文件是否有效并讀取該文件中的內容

          |__FileStore::read_superblock()               讀取superblock文件中的內容

          |__在/var/lib/ceph/osd/ceph-${id}/current/目錄下創建nosnap文件

          |__把/var/lib/ceph/osd/ceph-${id}/current/omap目錄作為omap_store的基準目錄,調用KeyValueDB::create()創建KeyValueDB實例

          |__FileStore::new_journal()                         創建journal

          |__JournalingObjectStore::journal_start()   啟動journal

          |__啟動ondisk_finishers和apply_finishers線程池

     |__FileStore::read()         從”meta”中讀取superblock對象信息且保存到OSDSuperblock類對象中

     |__比較superblock中的cluster_fsid是否有效

     |__OSD::write_meta()     將magic/whoami/ceph_fsid/ready信息寫入到/var/lib/ceph/osd/ceph-${id}/目錄下對應的文件中

|__對于需要創建key來說,使用EntityAuth.CryptoKey來創建一個key且將新建的key添加到keyring中,同時也將該keyring寫入到/var/lib/ceph/osd/ceph-${id}/目錄下keyring文件中

|__對于需要創建journal來說,調用FileStore::mkjournal()函數來創建journal

|__OSD::peek_meta()          從/var/lib/ceph/osd/ceph-${id}/目錄下對應的文件中讀取magic/cluster_fsid/osd_fsid/whoami信息

|__pick_addresses()               從配置文件中讀取public_addr和cluster_addr值

|__創建client/cluster/hbclient/hb_back_server/hb_front_server的Messenger類實例。一般情況下client和hb_front_server用public_addr,cluster/hbclient/hb_back_server用cluster_addr

|__MonClient::build_initial_monmap()          從配置文件中創建MonMap

|__調用OSD類構造函數創建OSD類對象

|__OSD::pre_init()

|__啟動client/cluster/hbclient/hb_back_server/hb_front_server的Messenger類實例

|__OSD::init()

     |__tick_timer.init()                                                  初始化心跳定時器

     |__OSDService.backill_request_timer.init()           初始化backfill請求定時器

     |__ObjectStore::mount()                                        掛載文件系統

     |__OSD::read_superblock()                                   從集群中讀取superblock信息且保存到OSDSuperblock類對象中

     |__確保snapmapper對象存在于”meta”中

     |__創建ClassHandler類實例

     |__get_map()                                                           根據superblock中記錄的當前epoch值獲取osdmap,若osdmap沒有在map_cache中則從”meta”的osdmap.epoch中讀取osdmap且同步到map_cache中

     |__OSD::load_pgs()                                                  讀取OSD上所有的pg信息

          |__FileStore::list_collections()                         遍歷/var/lib/ceph/osd/ceph-${id}/current/目錄下所有目錄且只要TYPE_PG

               |__coll_t.parse()                                         解析/var/lib/ceph/osd/ceph-${id}/current/目錄下所有目錄,meta對應TYPE_META,_head對應TYPE_PG,_TEMP對應TYPE_TEMP

          |__遍歷所有TYPE_PG

               |__調用PG::peek_map_epoch()函數

               |__OSD::_open_lock_pg()                              

                    |__OSD::_make_pg()                                   創建ReplicatedPG類實例

               |__PG::read_state()                                   讀取PG的狀態

                    |__PG::read_info()                                   從omap中讀取_infover/_info/_biginfo屬性值

                    |__PGLog::read_log()                              讀取PGLog信息,根據PGLog信息得到missing的信息

               |__OSDMap::pg_to_up_acting_osds()          計算出該PG對應的OSDs

               |__PG::init_primary_up_acting()                    這個PG所對應的OSDs

               |__OSDMap::calc_pg_role()                         計算出PG的roles

               |__PG::set_role()

               |__PG::reg_next_scrub()                              注冊下一次進行scrub的操作

          |__OSD::build_past_intervals_parallel()

     |__OSD::create_logger()                                         創建OSD logger

     |__MonClient::init()                                                  初始化MonClient類實例

     |__啟動osd_tp/osd_op_tp/recovery_tp/disk_tp/command_tp線程池

     |__OSDService::init()                                                初始化OSDService

     |__MonClient::authenticate()                                    做Monitor認證

     |__OSD::update_crush_location()                             OSD啟動后更新crushmap操作,可以在配置文件中設置osd_crush_update_on_start = false來禁止OSD啟動后更新crushmap

     |__OSDService::final_init()

     |__OSD::consume_map()

     |__OSD::start_boot()

|__OSD::finial_init()

     |__注冊一系列通過socket進行操作的命令

以上是“ceph中Jewel OSD進程啟動處理流程的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

环江| 嵩明县| 峨边| 博罗县| 政和县| 合江县| 长乐市| 理塘县| 台南市| 郁南县| 阿克苏市| 衡东县| 谷城县| 巍山| 会同县| 项城市| 永新县| 视频| 老河口市| 砚山县| 冀州市| 年辖:市辖区| 淅川县| 咸阳市| 如皋市| 临颍县| 梁河县| 江川县| 中江县| 布拖县| 文成县| 凤翔县| 内丘县| 望谟县| 秭归县| 搜索| 临漳县| 攀枝花市| 海口市| 金山区| 土默特左旗|