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

ceph中Jewel OSD進(jìn)程啟動(dòng)處理流程的示例分析

共計(jì) 4299 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。

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

OSD::main()

|__ObjectStore::create()

     |__調(diào)用 FileStore 構(gòu)造函數(shù)創(chuàng)建 FileStore 類對(duì)象

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

|__OSD::mkfs()

     |__FileStore::mkfs()    

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

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

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

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

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

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

          |__FileStore::mkjournal()    

               |__FileStore::new_journal()

                    |__FileJournal() 構(gòu)造函數(shù)來創(chuàng)建 FileJournal 實(shí)例

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

     |__FileStore::mount()

          |__FileStore::read_fsid()

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

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

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

          |__把 /var/lib/ceph/osd/ceph-${id}/current/omap 目錄作為 omap_store 的基準(zhǔn)目錄,調(diào)用 KeyValueDB::create() 創(chuàng)建 KeyValueDB 實(shí)例

          |__FileStore::new_journal()                     創(chuàng)建 journal

          |__JournalingObjectStore::journal_start()   啟動(dòng) journal

          |__啟動(dòng) ondisk_finishers 和 apply_finishers 線程池

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

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

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

|__對(duì)于需要?jiǎng)?chuàng)建 key 來說,使用 EntityAuth.CryptoKey 來創(chuàng)建一個(gè) key 且將新建的 key 添加到 keyring 中,同時(shí)也將該 keyring 寫入到 /var/lib/ceph/osd/ceph-${id}/ 目錄下 keyring 文件中

|__對(duì)于需要?jiǎng)?chuàng)建 journal 來說,調(diào)用 FileStore::mkjournal() 函數(shù)來創(chuàng)建 journal

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

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

|__創(chuàng)建 client/cluster/hbclient/hb_back_server/hb_front_server 的 Messenger 類實(shí)例。一般情況下 client 和 hb_front_server 用 public_addr,cluster/hbclient/hb_back_server 用 cluster_addr

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

|__調(diào)用 OSD 類構(gòu)造函數(shù)創(chuàng)建 OSD 類對(duì)象

|__OSD::pre_init()

|__啟動(dòng) client/cluster/hbclient/hb_back_server/hb_front_server 的 Messenger 類實(shí)例

|__OSD::init()

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

     |__OSDService.backill_request_timer.init()           初始化 backfill 請(qǐng)求定時(shí)器

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

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

     |__確保 snapmapper 對(duì)象存在于”meta”中

     |__創(chuàng)建 ClassHandler 類實(shí)例

     |__get_map()                                                           根據(jù) superblock 中記錄的當(dāng)前 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 對(duì)應(yīng) TYPE_META,_head 對(duì)應(yīng) TYPE_PG,_TEMP 對(duì)應(yīng) TYPE_TEMP

          |__遍歷所有 TYPE_PG

               |__調(diào)用 PG::peek_map_epoch() 函數(shù)

           |__OSD::_open_lock_pg()                              

               |__OSD::_make_pg()                                   創(chuàng)建 ReplicatedPG 類實(shí)例

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

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

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

               |__OSDMap::pg_to_up_acting_osds()           計(jì)算出該 PG 對(duì)應(yīng)的 OSDs

               |__PG::init_primary_up_acting()                     這個(gè) PG 所對(duì)應(yīng)的 OSDs

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

               |__PG::set_role()

               |__PG::reg_next_scrub()                               注冊(cè)下一次進(jìn)行 scrub 的操作

          |__OSD::build_past_intervals_parallel()

     |__OSD::create_logger()                                         創(chuàng)建 OSD logger

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

     |__啟動(dòng) osd_tp/osd_op_tp/recovery_tp/disk_tp/command_tp 線程池

     |__OSDService::init()                                                 初始化 OSDService

     |__MonClient::authenticate()                                     做 Monitor 認(rèn)證

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

     |__OSDService::final_init()

     |__OSD::consume_map()

     |__OSD::start_boot()

|__OSD::finial_init()

     |__注冊(cè)一系列通過 socket 進(jìn)行操作的命令

以上是“ceph 中 Jewel OSD 進(jìn)程啟動(dòng)處理流程的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)4299字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 永清县| 巩义市| 措勤县| 岑巩县| 孝义市| 金秀| 太保市| 万源市| 南康市| 房山区| 东莞市| 延庆县| 龙海市| 康马县| 安福县| 峨眉山市| 栖霞市| 大姚县| 饶阳县| 阳高县| 金寨县| 大渡口区| 合阳县| 乌兰县| 宁陕县| 西安市| 兴隆县| 兴安盟| 海盐县| 嘉荫县| 积石山| 贵州省| 周口市| 鄂托克旗| 兰坪| 夹江县| 淄博市| 平泉县| 松滋市| 湘西| 武穴市|