<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      分布式文件系統KFS源碼閱讀與分析(二):MetaServer元數據持久化

      KFS文件系統的MetaServer元數據的持久化采用的是checkpoint + log方式,下面將結合其源碼,對KFS MetaServer中元數據的持久化機制及其實現細節進行分析。

      1. 相關源碼文件

      KFS MetaServer元數據持久化所涉及的代碼所在目錄為kfs-[version]/src/cc/meta,其中,KFS元數據持久化的相關源碼如下:

      (1)meta/statup.cc: 負責KFS的啟動,在啟動過程中處理checkpointlog

      (2)meta/checkpoint.cc: 負責metadatacheckpointing操作。

      (3)meta/restore.cc: 從已保存的checkpoint重新構建metatree(以B+樹的方式組織)。

      (4)meta/logger.cc: metadata的更新做日志記錄操作。

      (5)meta/replay.cc: checkpoint恢復之后,重做log日志文件中的所有操作。

      (6)meta/kfstree.h: 構建一個新的metatree,即初始化根目錄為”/”

      2. checkpoint和log機制

      Log(日志)通常是系統或者軟件對已完成的某種處理操作的記錄,以便將來用作系統恢復,一般來說是文本格式。Checkpoint(檢查點)機制是將內存中被修改的數據塊與磁盤上的數據文件進行同步的一種數據持久化方式。

      在KFS的元數據持久化中,之所有采用checkpoint + log的方式,本人覺得主要出于以下考慮:

      (1)通過記錄必要的Checkpoint(檢查點),保證將文件系統元數據按照序列化的要求,永久持久化存儲到磁盤上,從而保證內存和硬盤上的數據的同步與一致;當下次系統恢復時,直接按照反序列化的要求進行還原,快速重新構建KFS的元數據metatree。

      (2)通過checkpoint(檢查點)和log(日志)相結合,縮短KFS系統的啟動恢復時間。在系統恢復時,首先將系統恢復到最近一次的checkpoint狀態(即重新構建B+樹),然后,只需將最近一次checkpoint之后的log中的操作進行redo即可,而不是所有log中的所有操作進行redo,從而有效縮短系統恢復時間。

      3. 元數據的持久化

      在KFS中,log操作是由logger.cc自動完成的,默認為每隔10分鐘做一次log(寫切換);checkpoint操作是由checkpoint.cc實現,但是是通過logcompactor_main.cc的離線操作手動完成的,其main函數的工作過程如下:

      1. 加載logcheckpoint文件的目錄;
      2. 恢復最近一次的checkpoint文件;
      3. 重做最近一次checkpoint之后的所有logs;
      4. metatree中所有葉節點寫入新的checkpoint文件中。

      4. 元數據加載過程

      KFS文件系統停止時,MetaServer的元數據被持久化存儲到物理磁盤上(checkpoint文件和log文件);當KFS下次啟動時,這些持久化后的數據會被KFS MetaServer啟動程序所加載,相關方法的調用關系如圖中所示:

       

      其中,

      (1)KFS啟動后,將日志目錄logdir和checkpoint目錄cpdir等信息,傳給KFS::kfs_startup()函數,該函數中首先會調用KFS::logger_setup_paths()設置KFS的日志目錄;

      (2)然后,KFS::kfs_startup()函數會繼續調用KFS::checkpointer_setup_paths()設置KFS的checkpoint目錄;

      (3)接下來,KFS::kfs_startup()函數會繼續調用KFS::setup_initial_tree()函數,初始化MetaServer的B+樹metatree,分為以下兩種情況:

      (4.1)如果存在最近的checkpoint文件,則調用Restorer::rebuild()函數,根據加載checkpoint文件,初始化后構建metatree樹;

      (4.2)否則,則調用KFS::metatree.new_tree()函數,初始化一個新的metatree樹,只包含根目錄”/”,并設置與其相關聯的"."和".."鏈接項;

      (5)完成之后,回到KFS::kfs_startup()函數中,調用Replay::playAllLogs()函數,重做最近一次checkpointing之后的所有日志中的操作;

      (6)在KFS::kfs_startup()函數中,調用KFS::logger_init()函數,啟動記錄日志,設置日志輪轉的間隔時間;

      (7)在KFS::kfs_startup()函數中,調用KFS::checkpointer_init()函數,初始化checkpoint。

      至此,完成了KFS文件系統中持久化后的元數據的恢復過程。

      posted on 2011-08-28 16:56  大圓那些事  閱讀(3136)  評論(8)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲国产精品综合久久20| 国产极品视频一区二区三区 | 欧美日韩精品一区二区三区在线| 一区二区三区AV波多野结衣| 国产麻豆成人精品av| 国产精品区一二三四久久| 中文日韩在线一区二区| 国产精品久久久久久久久鸭| 久久久亚洲欧洲日产国码606| 国产成人拍国产亚洲精品| 亚洲熟女乱色综合一区| 国产熟女一区二区三区蜜臀| 国产精品久久久久不卡绿巨人 | 神马午夜久久精品人妻| 97色伦97色伦国产| 无码少妇一区二区| 国产精品十八禁一区二区| 夜夜躁狠狠躁日日躁| 国产成人精品区一区二区| 久久亚洲精品11p| 久久精品国产91精品亚洲| 长武县| 一级女性全黄久久生活片| 国产亚洲精品久久久久秋霞| 亚洲线精品一区二区三八戒| 亚洲日韩日本中文在线| 欧美老熟妇乱子伦牲交视频| 18禁免费无码无遮挡不卡网站| 亚洲日本va午夜中文字幕久久| 男受被做哭激烈娇喘gv视频| 粉嫩在线一区二区三区视频| 最近中文字幕日韩有码| 欧美老熟妇乱子伦牲交视频| 一道本AV免费不卡播放| 国产不卡av一区二区| 国产福利片无码区在线观看| 欧美视频免费一区二区三区| AV最新高清无码专区| 4hu亚洲人成人无码网www电影首页| 国模肉肉视频一区二区三区| 国产午夜福利在线视频|