中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

抚州市| 营口市| 越西县| 永胜县| 洞口县| 黄浦区| 玉门市| 梨树县| 昌都县| 云林县| 阳西县| 琼结县| 花莲县| 中卫市| 西峡县| 来凤县| 贺兰县| 丽江市| 庆城县| 都江堰市| 宜君县| 白银市| 乾安县| 益阳市| 隆昌县| 进贤县| 泗阳县| 西贡区| 胶南市| 清徐县| 张家界市| 贵溪市| 文成县| 尼勒克县| 海南省| 满洲里市| 长武县| 彰化市| 浏阳市| 汽车| 全椒县|