国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      盤(pán)符漂移預(yù)防及處理方法及裝置制造方法

      文檔序號(hào):6488800閱讀:323來(lái)源:國(guó)知局
      盤(pán)符漂移預(yù)防及處理方法及裝置制造方法
      【專利摘要】本發(fā)明公開(kāi)一種盤(pán)符漂移預(yù)防及處理方法,包括以下步驟:內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)內(nèi)核發(fā)出的Uevent;當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符;當(dāng)設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。本發(fā)明還公開(kāi)一種盤(pán)符漂移預(yù)防及處理裝置、預(yù)防方法及裝置、處理方法及裝置。本發(fā)明避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。
      【專利說(shuō)明】盤(pán)符漂移預(yù)防及處理方法及裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及服務(wù)器【技術(shù)領(lǐng)域】,特別涉及一種盤(pán)符漂移預(yù)防處理方法及裝置、盤(pán)符漂移預(yù)防方法及裝置、盤(pán)符漂移處理方法及裝置。
      【背景技術(shù)】
      [0002]磁盤(pán)被系統(tǒng)加載時(shí),內(nèi)核會(huì)依次分配磁盤(pán)驅(qū)動(dòng)模塊名。設(shè)備管理工具Udev會(huì)根據(jù)磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊名,生成相應(yīng)的塊設(shè)備文件名,如第三塊磁盤(pán),內(nèi)核中的驅(qū)動(dòng)模塊名為sdc,塊設(shè)備文件名為sdc,第四塊磁盤(pán)的驅(qū)動(dòng)模塊名及塊設(shè)備文件名就是Sdd ;當(dāng)磁盤(pán)被從系統(tǒng)拔出時(shí),如果其對(duì)應(yīng)的掛載點(diǎn)已經(jīng)被卸載,則內(nèi)核就釋放相應(yīng)的磁盤(pán)設(shè)備文件數(shù)據(jù),否則將繼續(xù)持有。
      [0003]磁盤(pán)被從系統(tǒng)拔出前,如果其掛載點(diǎn)沒(méi)有被卸載,則內(nèi)核持有的磁盤(pán)設(shè)備模塊就不會(huì)被釋放,再次加載磁盤(pán)時(shí),內(nèi)核會(huì)自動(dòng)向后分配一個(gè)新的驅(qū)動(dòng)模塊名,設(shè)備管理工具Udev就會(huì)產(chǎn)生相應(yīng)的塊設(shè)備文件名,例如對(duì)于配置12塊磁盤(pán)的服務(wù)器,正常設(shè)備文件名為sda到sdl,相應(yīng)的掛載點(diǎn)為diskl到diskl2,如果不卸載disk3,直接將sdc拔出,再次插入磁盤(pán)后其獲得的設(shè)備文件名將是sdm,即盤(pán)符發(fā)生了漂移。因?yàn)橄到y(tǒng)沒(méi)有sdm對(duì)應(yīng)的掛載點(diǎn),所以該磁盤(pán)將無(wú)法被使用,同時(shí)disk3對(duì)應(yīng)已經(jīng)被刪除的sdc,后續(xù)的IO請(qǐng)求均會(huì)報(bào)錯(cuò),而且盤(pán)符順序與實(shí)際槽位順序不一致,對(duì)磁盤(pán)的運(yùn)維操作也帶來(lái)麻煩。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明旨在至少在一定程度上解決上述技術(shù)問(wèn)題之一或至少提供一種有用的商業(yè)選擇。為此,本發(fā)明的第一個(gè)目的在于提供一種盤(pán)符漂移預(yù)防及處理方法,該方法可以避免盤(pán)符漂移,保證系統(tǒng)加載的磁盤(pán)可以被正常使用。本發(fā)明的第二個(gè)目的在于提供一種盤(pán)符漂移預(yù)防及處理裝置。本發(fā)明的第三個(gè)目的在于提供一種盤(pán)符漂移預(yù)防方法。本發(fā)明第四個(gè)目的在于提供一種盤(pán)符漂移預(yù)防裝置。本發(fā)明第五個(gè)目的在于提供一種盤(pán)符漂移處理方法。本發(fā)明的第四個(gè)目的在于提供一種盤(pán)符漂移處理裝置。
      [0005]為實(shí)現(xiàn)上述目的,本發(fā)明第一方面的實(shí)施例提供了盤(pán)符漂移預(yù)防及處理方法,包括如下步驟:
      [0006]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ;
      [0007]當(dāng)所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查所述磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符;以及
      [0008]當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0009]根據(jù)本發(fā)明式實(shí)施例的盤(pán)符漂移預(yù)防及處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0010]本發(fā)明第二方面的實(shí)施例提供一種盤(pán)符漂移預(yù)防及處理裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent,記錄磁盤(pán)插拔行為,并當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查所述磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0011]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0012]本發(fā)明第三方面的實(shí)施例提供了一種盤(pán)符漂移預(yù)防方法,包括如下步驟:
      [0013]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ;以及
      [0014]當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),所述設(shè)備管理工具Udev對(duì)系統(tǒng)中所述磁盤(pán)的掛載情況進(jìn)行檢查,并在所述磁盤(pán)處于掛載狀態(tài)時(shí)卸載所述磁盤(pán)對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在所述內(nèi)核中的驅(qū)動(dòng)模塊。
      [0015]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防方法,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0016]本發(fā)明第四方面的實(shí)施例提供一種盤(pán)符漂移預(yù)防裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent,并當(dāng)所述Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),對(duì)所述系統(tǒng)中所述磁盤(pán)的掛載情況進(jìn)行檢查,并在所述磁盤(pán)處于掛載狀態(tài)時(shí)卸載所述磁盤(pán)對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在所述內(nèi)核中的驅(qū)動(dòng)模塊。
      [0017]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防裝置,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0018]本發(fā)明第五方面的實(shí)施例提供一種盤(pán)符漂移處理方法,包括如下步驟:[0019]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的裝置避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0020]本發(fā)明第六方面的實(shí)施例提供一種盤(pán)符漂移處理裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent以及記錄磁盤(pán)的插拔行為,如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0021]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的裝置避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0022]本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
      【專利附圖】

      【附圖說(shuō)明】
      [0023]本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
      [0024]圖1為根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法的流程圖;
      [0025]圖2為根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法的工作流程;
      [0026]圖3為根據(jù)本發(fā)明實(shí)施例的磁盤(pán)下線的處理策略的示意圖;
      [0027]圖4為根據(jù)本發(fā)明實(shí)施例的磁盤(pán)加載策的處理策略的示意圖;
      [0028]圖5為根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移的示意圖;
      [0029]圖6根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置的示意圖;
      [0030]圖7為根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防方法的流程圖;以及
      [0031]圖8為根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理方法的流程圖。
      【具體實(shí)施方式】
      [0032]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
      [0033]在本發(fā)明中,除非另有明確的規(guī)定和限定,術(shù)語(yǔ)“安裝”、“相連”、“連接”、“固定”等術(shù)語(yǔ)應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過(guò)中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語(yǔ)在本發(fā)明中的具體含義。
      [0034]下面參考圖1至圖5描述根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法。其中,該盤(pán)符漂移預(yù)防及處理方法可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。
      [0035]如圖1所示,本發(fā)明實(shí)施例提供的盤(pán)符漂移預(yù)防及處理方法,包括如下步驟:
      [0036]步驟S101,內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)內(nèi)核發(fā)出的Uevent (user space event)。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux 2.6及更高版本。
      [0037]其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0038]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0039]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤(pán)的操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0040]當(dāng)磁盤(pán)被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
      [0041]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0042]如圖2所示,設(shè)備管理工具Udev匹配rule,并判斷Udev action的類型,包括如下步驟:
      [0043]步驟S201,設(shè)備管理工具Udev從內(nèi)核接收到Uevent0
      [0044]設(shè)備管理工具Udev偵聽(tīng)內(nèi)核發(fā)出的Uevent,從而管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0045]步驟S202,匹配 Udev rule (規(guī)則)。
      [0046]步驟S203, Udev action (行為)為添加(add)或移動(dòng)(remove)。
      [0047]根據(jù)接收到的設(shè)備事件Uevent,判斷Udev行為的類型為移動(dòng)操作或添加操作。
      [0048]步驟S204,調(diào)用 Udev script。
      [0049]根據(jù)判斷出的Udev行為的類型,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。其中,觸發(fā)相應(yīng)的Udev rule調(diào)用策略是通過(guò)調(diào)用相應(yīng)的Udev script的形式實(shí)現(xiàn)。
      [0050]步驟S 102,當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符。[0051]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤(pán)的掛載情況進(jìn)行檢查,檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
      [0052]如果磁盤(pán)處于掛載狀態(tài),則卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符,以便內(nèi)核成功釋放磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤(pán)下線時(shí),本發(fā)明可以及時(shí)釋放磁盤(pán)設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤(pán)時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤(pán)符漂移。
      [0053]圖3示出了磁盤(pán)下線的處理策略。
      [0054]步驟S301,磁盤(pán)下線(disk offline)。
      [0055]步驟S3O2,內(nèi)核刪除(kernel delete)。
      [0056]內(nèi)核從系統(tǒng)中刪除磁盤(pán)。
      [0057]步驟S303, Udev 行為為移動(dòng)(Udev action remove)。
      [0058]此時(shí)設(shè)備管理工具Udev監(jiān)控到的內(nèi)核發(fā)出的Uevent為remove操作。
      [0059]步驟S304, Udev 腳本檢查掛載(Udev script check mount)。
      [0060]設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤(pán)的掛載情況進(jìn)行檢查。
      [0061]步驟S305, Udev 腳本卸載(Udev script umount)。
      [0062]設(shè)備管理工具Udev在檢查到磁盤(pán)處于掛載狀態(tài)時(shí)卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符,從而使得內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊。
      [0063]步驟S103,當(dāng)設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),設(shè)備管理工具Udev判斷磁盤(pán)是否發(fā)生盤(pán)符漂移,如果未發(fā)生盤(pán)符漂移,則執(zhí)行步驟S1031,如果發(fā)生盤(pán)符漂移,則執(zhí)行步驟S1032。
      [0064]當(dāng)磁盤(pán)被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
      [0065]設(shè)備管理工具Udev根據(jù)內(nèi)核分配的初始盤(pán)符判斷是否發(fā)生盤(pán)符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev判斷發(fā)生盤(pán)符漂移:
      [0066]( I)初始盤(pán)符的順序與與原有盤(pán)符的順序不一致。
      [0067]例如,磁盤(pán)的初始盤(pán)符為3,而原有盤(pán)符順序?yàn)榈?,則可以判斷發(fā)生了盤(pán)符漂移。
      [0068](2)磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      [0069]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤(pán)。如果磁盤(pán)的初始盤(pán)符被分配至第13的盤(pán)符,可以判斷磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符超出了槽位的范圍,磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,則判斷發(fā)生了盤(pán)符漂移。
      [0070]步驟S1031,如果未發(fā)生盤(pán)符漂移,則將初始盤(pán)符作為添加磁盤(pán)的最終盤(pán)符。
      [0071]步驟S1032,如果發(fā)現(xiàn)盤(pán)符漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0072]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤(pán)的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤(pán)插拔記錄可以獲知是否初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,從而可以判斷是否發(fā)生盤(pán)符漂移。
      [0073]根據(jù)設(shè)備管理工具Udev記錄的磁盤(pán)插拔記錄卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤(pán)分配新的盤(pán)符,從而使得原有磁盤(pán)設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤(pán),從而使得磁盤(pán)的內(nèi)核模塊名和設(shè)備文件名與原有的盤(pán)符保持一致,從而避免盤(pán)符漂移。
      [0074]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤(pán)模擬拔出,但實(shí)際的磁盤(pán)并未被拔出,故而稱之為模擬拔出。由于,磁盤(pán)的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤(pán)被拔出。然后根據(jù)磁盤(pán)插拔記錄查找之前被拔出的磁盤(pán)的盤(pán)符,并將之前拔出的磁盤(pán)的盤(pán)符分配給該添加磁盤(pán)的盤(pán)符。
      [0075]如圖5所示,磁盤(pán)包括Diskl、Disk2、Disk3、Disk4、Disk5,其中,上述磁盤(pán)分別對(duì)應(yīng)的盤(pán)符號(hào)及設(shè)備文件名為sda、sdb、sdc、sdd和sde。Disk6為添加的磁盤(pán),Disk2為被拔出的磁盤(pán)。
      [0076]從圖中可以看出,系統(tǒng)包括五個(gè)槽位,可以放置五個(gè)磁盤(pán)。如果要向系統(tǒng)中添加磁盤(pán)Disk6,為了避免出現(xiàn)設(shè)備管理工具Udev向磁盤(pán)Disk6順序分配新的盤(pán)符號(hào)及設(shè)備文件名為sdf而導(dǎo)致盤(pán)符漂移,需要將添加磁盤(pán)Disk6模擬拔出,即將Disk6模擬拔出,而實(shí)際并未拔出。然后查詢?cè)O(shè)備管理工具Udev中的設(shè)備插拔記錄,查詢之前設(shè)備插拔記錄,獲知Disk2為被拔出的磁盤(pán),并查找到Disk2對(duì)應(yīng)的盤(pán)符為sdb。然后,將sdb分配給Disk6,即添加磁盤(pán)Disk6的盤(pán)符為sdb,從而避免了盤(pán)符漂移。
      [0077]圖4示出了磁盤(pán)加載的處理策略。
      [0078]步驟S401,添加磁盤(pán)(disk add)。
      [0079]步驟S402,內(nèi)核加載(kernel load)。
      [0080]內(nèi)核加載磁盤(pán)。
      [0081]步驟S403, Udev 行為為添加(Udev action add)。
      [0082]當(dāng)磁盤(pán)被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即Uevent為添加操作。
      [0083]步驟S404,Udev腳本檢查磁盤(pán)盤(pán)符的槽位(Udev script check disk label withslot)。
      [0084]步驟S405, Udev 腳本卸載(Udev script umount)。
      [0085]如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,則先卸載槽位對(duì)應(yīng)的掛載點(diǎn),使得原有磁盤(pán)設(shè)備在內(nèi)核中的引用得以釋放
      [0086]步驟S406, Udev 腳本重新加載磁盤(pán)(Udev script reload disk)。
      [0087]Udev腳本以模擬熱插拔的方式重新加載磁盤(pán)。
      [0088]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0089]下面參考圖6描述根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置600。其中,該盤(pán)符漂移預(yù)防及處理裝置可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。[0090]如圖6所示,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置600,包括:內(nèi)核610和設(shè)備管理工具Udev 620。
      [0091]內(nèi)核610用于發(fā)出Uevent(user space event)。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux 2.6及更高版本。
      [0092]設(shè)備管理工具Udev 620以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent,記錄磁盤(pán)插拔行為。其中,設(shè)備管理工具Udev620為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核610發(fā)出的Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0093]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev620根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev620的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核610的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0094]設(shè)備管理工具Udev620在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤(pán)的操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0095]當(dāng)磁盤(pán)被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
      [0096]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0097]設(shè)備管理工具Udev620當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),對(duì)內(nèi)核610中磁盤(pán)的掛載情況進(jìn)行檢查,并在磁盤(pán)處于掛載狀態(tài)時(shí)卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符以使內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊,以及當(dāng)設(shè)備事件Uevent為對(duì)磁盤(pán)的添加操作時(shí),根據(jù)內(nèi)核分配的初始盤(pán)符判斷是否發(fā)生盤(pán)符漂移。
      [0098]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev620對(duì)內(nèi)核610中的磁盤(pán)的掛載情況進(jìn)行檢查,檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
      [0099]如果磁盤(pán)處于掛載狀態(tài),則卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符,以便內(nèi)核610成功釋放磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤(pán)下線時(shí),本發(fā)明可以及時(shí)釋放磁盤(pán)設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤(pán)時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤(pán)符漂移。
      [0100]當(dāng)磁盤(pán)被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到設(shè)備事件Uevent的action:add,即Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
      [0101]設(shè)備管理工具Udev620判斷磁盤(pán)是否發(fā)生盤(pán)符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev620判斷發(fā)生盤(pán)符漂移:
      [0102]( I)初始盤(pán)符的順序與原有盤(pán)符的順序不一致。
      [0103]例如,磁盤(pán)的初始盤(pán)符為3,而原有盤(pán)符順序?yàn)榈?,則可以判斷發(fā)生了盤(pán)符漂移。
      [0104](2)磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      [0105]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤(pán)。如果磁盤(pán)的初始盤(pán)符被分配至第13的盤(pán)符,可以判斷磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符超出了槽位的范圍,磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,則判斷發(fā)生了盤(pán)符漂移。
      [0106]如果設(shè)備管理工具Udev620判斷未發(fā)生漂移,則設(shè)備管理工具Udev 620將初始盤(pán)符作為添加磁盤(pán)的最終盤(pán)符。如果判斷已發(fā)生盤(pán)符漂移,則設(shè)備管理工具Udev 620卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0107]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev620對(duì)于磁盤(pán)的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev620中的磁盤(pán)插拔記錄可以獲知是否初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,從而可以判斷是否發(fā)生盤(pán)符漂移。
      [0108]根據(jù)設(shè)備管理工具Udev620記錄的磁盤(pán)插拔記錄卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤(pán)分配新的盤(pán)符,從而使得原有磁盤(pán)設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤(pán),從而使得磁盤(pán)的內(nèi)核模塊名和設(shè)備文件名與原有的盤(pán)符保持一致,從而避免盤(pán)符漂移。
      [0109]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev620先將添加磁盤(pán)模擬拔出,但實(shí)際的磁盤(pán)并未被拔出,故而稱之為模擬拔出。由于,磁盤(pán)的插拔動(dòng)作均在設(shè)備管理工具Udev620中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤(pán)被拔出。然后根據(jù)磁盤(pán)插拔記錄查找之前被拔出的磁盤(pán)的盤(pán)符,并將之前拔出的磁盤(pán)的盤(pán)符分配給該添加磁盤(pán)的盤(pán)符。
      [0110]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的裝置避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0111]下面參考圖7描述根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防方法。其中,該盤(pán)符漂移預(yù)防方法可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。
      [0112]如圖7所示,本發(fā)明實(shí)施例提供的盤(pán)符漂移預(yù)防方法,包括如下步驟:
      [0113]步驟S701,內(nèi)核中的設(shè)備管理工具Udev對(duì)內(nèi)核發(fā)出的設(shè)備事件Uevent (userspace event)進(jìn)行監(jiān)控。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux
      2.6及更高版本。
      [0114]其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0115]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0116]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤(pán)的操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0117]當(dāng)磁盤(pán)被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
      [0118]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rul e調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0119]步驟S702,當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符。
      [0120]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤(pán)的掛載情況進(jìn)行檢查,檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
      [0121]如果磁盤(pán)處于掛載狀態(tài),則卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符,以便內(nèi)核成功釋放磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤(pán)下線時(shí),本發(fā)明可以及時(shí)釋放磁盤(pán)設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤(pán)時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤(pán)符漂移。
      [0122]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防方法,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0123]本發(fā)明實(shí)施例還提供了一種盤(pán)符漂移預(yù)防裝置,包括內(nèi)核和設(shè)備管理工具Udev。其中,該盤(pán)符漂移預(yù)防裝置可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。
      [0124]內(nèi)核用于發(fā)出Uevent user space event)。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux 2.6及更高版本。
      [0125]設(shè)備管理工具Udev用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevene,記錄磁盤(pán)插拔行為。其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核發(fā)出的Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0126]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0127]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤(pán)的操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0128]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0129]設(shè)備管理工具Udev當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),對(duì)內(nèi)核中磁盤(pán)的掛載情況進(jìn)行檢查,并在磁盤(pán)處于掛載狀態(tài)時(shí)卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符以使內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在內(nèi)核中的驅(qū)動(dòng)模塊。
      [0130]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤(pán)的掛載情況進(jìn)行檢查,檢查磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
      [0131]如果磁盤(pán)處于掛載狀態(tài),則卸載磁盤(pán)對(duì)應(yīng)的盤(pán)符,以便內(nèi)核成功釋放在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤(pán)下線時(shí),本發(fā)明可以及時(shí)釋放磁盤(pán)設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤(pán)時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤(pán)符漂移。
      [0132]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防裝置,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0133]下面參考圖8描述根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理方法。其中,該盤(pán)符漂移處理方法可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。
      [0134]如圖8所示,本發(fā)明實(shí)施例提供的盤(pán)符漂移處理方法,包括如下步驟;
      [0135]步驟S801,內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent (user space event)。在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux 2.6及更高版本。
      [0136]其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0137]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0138]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為移動(dòng)操作或添加操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0139]當(dāng)磁盤(pán)被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
      [0140]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理方法涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0141]步驟S802,當(dāng)Uevent為對(duì)磁盤(pán)的添加操作時(shí),設(shè)備管理工具Udev判斷磁盤(pán)是否發(fā)生盤(pán)符漂移。如果判斷未發(fā)生盤(pán)符漂移,則執(zhí)行步驟S8021。如果判斷發(fā)生盤(pán)符漂移,則執(zhí)行步驟S8022。
      [0142]當(dāng)磁盤(pán)被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即設(shè)備事件Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
      [0143]設(shè)備管理工具Udev判斷磁盤(pán)是否發(fā)生盤(pán)符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev判斷發(fā)生盤(pán)符漂移:
      [0144]( I)初始盤(pán)符的順序與原有盤(pán)符的順序不一致。
      [0145]例如,磁盤(pán)的初始盤(pán)符為3,而原有盤(pán)符順序?yàn)榈?,則可以判斷發(fā)生盤(pán)符漂移。
      [0146](2)磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      [0147]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤(pán)。如果磁盤(pán)的初始盤(pán)符被分配至第13的盤(pán)符,可以判斷磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符超出了槽位的范圍,磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,則判斷發(fā)生了盤(pán)符漂移。
      [0148]步驟S8021,如果判斷發(fā)生盤(pán)符漂移,則將初始盤(pán)符作為添加磁盤(pán)的最終盤(pán)符。
      [0149]步驟S8022,如果判斷已發(fā)生盤(pán)符漂移,則設(shè)備管理工具Udev 620卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0150]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤(pán)的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤(pán)插拔記錄可以獲知是否初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,從而可以判斷是否發(fā)生盤(pán)符漂移。
      [0151]根據(jù)設(shè)備管理工具Udev記錄的磁盤(pán)插拔記錄卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤(pán)分配新的盤(pán)符,從而使得原有磁盤(pán)設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤(pán),從而使得磁盤(pán)的內(nèi)核模塊名和設(shè)備文件名與原有的盤(pán)符保持一致,從而避免盤(pán)符漂移。
      [0152]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤(pán)模擬拔出,但實(shí)際的磁盤(pán)并未被拔出,故而稱之為模擬拔出。由于,磁盤(pán)的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤(pán)被拔出。然后根據(jù)磁盤(pán)插拔記錄查找之前被拔出的磁盤(pán)的盤(pán)符,并將之前拔出的磁盤(pán)的盤(pán)符分配給該添加磁盤(pán)的盤(pán)符。
      [0153]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的裝置避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0154]本發(fā)明實(shí)施例的盤(pán)符漂移處理裝置,包括:內(nèi)核和設(shè)備管理工具Udev。其中,該盤(pán)符漂移處理方法可以應(yīng)用于服務(wù)器及磁盤(pán)運(yùn)維管理方面。內(nèi)核用于發(fā)出Uevent (userspace event)ο在本發(fā)明的一個(gè)實(shí)施例中,內(nèi)核可以為L(zhǎng)inux內(nèi)核,例如Linux 2.6及更高版本。
      [0155]設(shè)備管理工具Udev用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent以及記錄磁盤(pán)的插拔記錄。其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽(tīng)內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
      [0156]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤(pán)時(shí),設(shè)備管理工具Udev620的守護(hù)進(jìn)程偵聽(tīng)來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
      [0157]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤(pán)的操作。其中,無(wú)論磁盤(pán)是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
      [0158]當(dāng)磁盤(pán)被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
      [0159]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤(pán)符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
      [0160]當(dāng)磁盤(pán)被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
      [0161]設(shè)備管理工具Udev620當(dāng)Uevent為對(duì)磁盤(pán)的添加操作時(shí),判斷磁盤(pán)是否發(fā)生漂移。
      [0162]具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev620判斷發(fā)生盤(pán)符漂移:
      [0163]( I)初始盤(pán)符的順序與原有盤(pán)符的順序不一致。
      [0164]例如,磁盤(pán)的初始盤(pán)符為3,而原有盤(pán)符順序?yàn)榈?,則可以判斷發(fā)生了盤(pán)符漂移。
      [0165](2)磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      [0166]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤(pán)。如果磁盤(pán)的初始盤(pán)符被分配至第13的盤(pán)符,可以判斷磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符超出了槽位的范圍,磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,則判斷發(fā)生了盤(pán)符漂移。
      [0167]如果設(shè)備管理工具Udev判斷為發(fā)生盤(pán)符漂移,則將初始盤(pán)符作為添加磁盤(pán)的最終盤(pán)符。如果判斷已發(fā)生盤(pán)符漂移,則設(shè)備管理工具Udev卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      [0168]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤(pán)的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤(pán)插拔記錄可以獲知是否初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,從而可以判斷是否發(fā)生盤(pán)符漂移。
      [0169]根據(jù)設(shè)備管理工具Udev記錄的磁盤(pán)插拔記錄卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤(pán)分配新的盤(pán)符,從而使得原有磁盤(pán)設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤(pán),從而使得磁盤(pán)的內(nèi)核模塊名和設(shè)備文件名與原有的盤(pán)符保持一致,從而避免盤(pán)符漂移。
      [0170]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤(pán)模擬拔出,但實(shí)際的磁盤(pán)并未被拔出,故而稱之為模擬拔出。由于,磁盤(pán)的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤(pán)被拔出。然后根據(jù)磁盤(pán)插拔記錄查找之前被拔出的磁盤(pán)的盤(pán)符,并將之前拔出的磁盤(pán)的盤(pán)符分配給該添加磁盤(pán)的盤(pán)符。
      [0171]根據(jù)本發(fā)明實(shí)施例的盤(pán)符漂移處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤(pán)的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤(pán)在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤(pán)在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤(pán)時(shí)盤(pán)符順序發(fā)生漂移。當(dāng)磁盤(pán)加載后,如果發(fā)現(xiàn)盤(pán)符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤(pán)重新加載后能被分配到正確的盤(pán)符。通過(guò)本發(fā)明的裝置避免了盤(pán)符漂移,從而可以保證系統(tǒng)加載的磁盤(pán)能夠被正常使用,更換故障磁盤(pán)時(shí),也能杜絕拔錯(cuò)磁盤(pán)的問(wèn)題。
      [0172]流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。[0173]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說(shuō)明書(shū)而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤(pán)盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(R0M),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤(pán)只讀存儲(chǔ)器(⑶ROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^(guò)對(duì)紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來(lái)以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
      [0174]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門(mén)電路的離散邏輯電路,具有合適的組合邏輯門(mén)電路的專用集成電路,可編程門(mén)陣列(PGA),現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)等。
      [0175]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
      [0176]此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
      [0177]上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
      [0178]在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
      [0179]盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨的情況下在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。
      【權(quán)利要求】
      1.一種盤(pán)符漂移預(yù)防及處理方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ; 當(dāng)所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查所述磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符;以及當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      2.如權(quán)利要求1所述的盤(pán)符漂移預(yù)防及處理方法,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)刪除或加載所述磁盤(pán)時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加或刪除操作。
      3.如權(quán)利要求1所述的盤(pán)符漂移預(yù)防及處理方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      4.如權(quán)利要求1所述的盤(pán)符漂移預(yù)防及處理方法,其特征在于,如果所述初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者所述磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用,則判斷發(fā)生盤(pán)符漂移。
      5.一種盤(pán)符漂移預(yù)防及處理裝置:包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent,記錄磁盤(pán)插拔行為,并當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),則檢查所述磁盤(pán)設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤(pán)設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤(pán)符;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      6.如權(quán)利要求5所述的盤(pán)符漂移預(yù)防及處理裝置,其特征在于,所述設(shè)備管理工具Udev還用于根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理, 當(dāng)刪除或加載所述磁盤(pán)時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加或刪除操作。
      7.如權(quán)利要求5所述的盤(pán)符漂移預(yù)防及處理裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      8.如權(quán)利要求5所述的盤(pán)符漂移預(yù)防及處理裝置,其特征在于,所述設(shè)備管理工具Udev在所述初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者所述磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      9.一種盤(pán)符漂移預(yù)防方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ;以及當(dāng)Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),所述設(shè)備管理工具Udev對(duì)系統(tǒng)中所述磁盤(pán)的掛載情況進(jìn)行檢查,并在所述磁盤(pán)處于掛載狀態(tài)時(shí)卸載所述磁盤(pán)對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在所述內(nèi)核中的驅(qū)動(dòng)模塊。
      10.如權(quán)利要求9所述的盤(pán)符漂移預(yù)防方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      11.一種盤(pán)符漂移預(yù)防裝置,包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent,并當(dāng)所述Uevent為對(duì)磁盤(pán)的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤(pán)的Uevent時(shí),對(duì)所述系統(tǒng)中所述磁盤(pán)的掛載情況進(jìn)行檢查,并在所述磁盤(pán)處于掛載狀態(tài)時(shí)卸載所述磁盤(pán)對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤(pán)在所述內(nèi)核中的驅(qū)動(dòng)模塊。
      12.如權(quán)利要求11所述的盤(pán)符漂移預(yù)防裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      13.一種盤(pán)符漂移處理方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent ;以及 當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      14.如權(quán)利要求13所述的盤(pán)符漂移處理方法,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)加載所述磁盤(pán)時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加。
      15.如權(quán)利要求13所述的盤(pán)符漂移處理方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      16.如權(quán)利要求13所述的盤(pán)符漂移處理方法,其特征在于,如果所述初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者所述磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      17.一種盤(pán)符漂移處理裝置,包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽(tīng)所述內(nèi)核發(fā)出的Uevent以及記錄磁盤(pán)的插拔行為,如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤(pán)設(shè)備的Uevent時(shí),如果檢查到被分配的盤(pán)符發(fā)生了漂移,則卸載原有盤(pán)符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤(pán)設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤(pán)以將所述磁盤(pán)的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
      18.如權(quán)利要求17所述的盤(pán)符漂移處理裝置,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述設(shè)備事件Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)加載所述磁盤(pán)時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加。
      19.如權(quán)利要求17所述的盤(pán)符漂移處理裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
      20.如權(quán)利要求17所述的盤(pán)符漂移處理裝置,其特征在于,所述設(shè)備管理工具在所述初始盤(pán)符的順序與原有盤(pán)符的順序不一致,或者所述磁盤(pán)所在的槽位順序?qū)?yīng)的盤(pán)符不能被使用。
      【文檔編號(hào)】G06F11/00GK103677650SQ201210337890
      【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2012年9月12日 優(yōu)先權(quán)日:2012年9月12日
      【發(fā)明者】胡殿明, 劉雨亮, 魏偉 申請(qǐng)人:北京百度網(wǎng)訊科技有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1