Raid1原始碼分析--初始化流程

來源:互聯網
上載者:User

標籤:style   blog   http   使用   strong   os   

  初始化流程代碼量比較少,也比較簡單。主要是run函數。(我閱讀的代碼的linux核心版本是2.6.32.61)

四、初始化流程分析

  run函數顧名思義,很簡單這就是在RAID1開始運行時調用,進行一些初始化的操作。主要是對RAID1中的conf進行初始化。run函數在md.c的do_md_run中被調用。

  run函數的具體流程

  0.傳入參數mddev就是指RAID1所處的MD裝置。

  1.  定義相關變數。

    1.1  定義conf指標,類型為raid1_private_data_s,是raid1中的重要私人資料結構。

    1.2  定義rdev指標為組成該MD裝置的disk指標,其類型為mdk_rdev_t。

  2.  檢查mddev->level是否為1。如果為1,則是使用的disk mirror技術,也就是raid1,繼續下面的流程。

  3.  檢查reshape_position是否為MaxSector。如果相等,其實也就是不需要reshape的意思,繼續下面的流程。

  4.  申請raid1私人資料區conf,並且把conf結構掛接到mddev->private上,私人資料區中還申請了一個mempool,為磁陣讀寫緩衝使用。把mddev的結構掛接在conf->poolinfo->mddev上。把conf->device_lock的結構內容掛接在mddev->queue->queue_lock。

  5.  初始化私人資料區,包括:

    5.1  使用MD資訊對磁陣中的磁碟rdev賦值。

       其中conf->mirrors為mirror_info類型的指標構成的數組的首地址。

根據conf->mirrors = kzalloc (sizeof(struct mirror_info) *mddev->raid_disks, GFP_KERNEL);可以看出,申請了raid_disks個mirror_info結構的空間,每個mirror_info結構可以對應到一個磁碟rdev。

    5.2  關聯MD和raid1私人資料區。即conf->raid_disks = mddev->raid_disks;和conf->mddev = mddev;

    5.3  私人資料區的鎖和隊列的初始化。

  6.  檢查磁陣中磁碟狀態,如果有磁碟不存在或者磁碟和磁陣中有磁碟不處於一致狀態(In_sync),則處於降級狀態。如果某個磁碟不是In_syn狀態,該磁碟就需要全同步(conf->fullsync = 1)。

      mddev->degraded就是管理raid下所有磁碟是否降級的“累計賬本”,某磁碟降級則加1。

    6.1  如果所有磁碟都不正常(都為降級狀態),則啟動失敗。

    6.2  如果只有一個盤可正常工作,則設定標誌禁止同步。因為只有一個就沒有可參照的同步磁碟,不存在同步說法。(mddev->recovery_cp = MaxSector;)

  7.  找到第一個可用的磁碟記錄在conf->last_used 中。(讀均衡的時候會用到)

  8.  註冊守護進程。

  9.  註冊unplug回調。

  10.註冊擁塞處理函數。

  如果說run有點建構函式的意思,那麼stop函數就有解構函式的味道了。看看這個函數,都是所有的資源一一釋放。stop是在md.c的do_md_stop中調用。

  參考資料:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=22311165&id=390818

 

本文來自fangpei的部落格,轉載請標明出處:http://www.cnblogs.com/fangpei/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.