亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

酒泉市| 九江市| 宜兴市| 汝南县| 延津县| 灵寿县| 营山县| 新野县| 乐亭县| 武冈市| 定州市| 泸州市| 酒泉市| 阿克陶县| 利川市| 靖州| 临漳县| 怀仁县| 周宁县| 安仁县| 平武县| 金沙县| 开平市| 井冈山市| 和政县| 岐山县| 田东县| 县级市| 元阳县| 宜昌市| 突泉县| 镇沅| 巴塘县| 蕲春县| 寻乌县| 昌图县| 山西省| 邵阳市| 竹北市| 平江县| 呈贡县|