盤符漂移預(yù)防及處理方法及裝置制造方法
【專利摘要】本發(fā)明公開一種盤符漂移預(yù)防及處理方法,包括以下步驟:內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽內(nèi)核發(fā)出的Uevent;當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符;當(dāng)設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。本發(fā)明還公開一種盤符漂移預(yù)防及處理裝置、預(yù)防方法及裝置、處理方法及裝置。本發(fā)明避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。
【專利說(shuō)明】盤符漂移預(yù)防及處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及服務(wù)器【技術(shù)領(lǐng)域】,特別涉及一種盤符漂移預(yù)防處理方法及裝置、盤符漂移預(yù)防方法及裝置、盤符漂移處理方法及裝置。
【背景技術(shù)】
[0002]磁盤被系統(tǒng)加載時(shí),內(nèi)核會(huì)依次分配磁盤驅(qū)動(dòng)模塊名。設(shè)備管理工具Udev會(huì)根據(jù)磁盤在內(nèi)核中的驅(qū)動(dòng)模塊名,生成相應(yīng)的塊設(shè)備文件名,如第三塊磁盤,內(nèi)核中的驅(qū)動(dòng)模塊名為sdc,塊設(shè)備文件名為sdc,第四塊磁盤的驅(qū)動(dòng)模塊名及塊設(shè)備文件名就是Sdd ;當(dāng)磁盤被從系統(tǒng)拔出時(shí),如果其對(duì)應(yīng)的掛載點(diǎn)已經(jīng)被卸載,則內(nèi)核就釋放相應(yīng)的磁盤設(shè)備文件數(shù)據(jù),否則將繼續(xù)持有。
[0003]磁盤被從系統(tǒng)拔出前,如果其掛載點(diǎn)沒(méi)有被卸載,則內(nèi)核持有的磁盤設(shè)備模塊就不會(huì)被釋放,再次加載磁盤時(shí),內(nèi)核會(huì)自動(dòng)向后分配一個(gè)新的驅(qū)動(dòng)模塊名,設(shè)備管理工具Udev就會(huì)產(chǎn)生相應(yīng)的塊設(shè)備文件名,例如對(duì)于配置12塊磁盤的服務(wù)器,正常設(shè)備文件名為sda到sdl,相應(yīng)的掛載點(diǎn)為diskl到diskl2,如果不卸載disk3,直接將sdc拔出,再次插入磁盤后其獲得的設(shè)備文件名將是sdm,即盤符發(fā)生了漂移。因?yàn)橄到y(tǒng)沒(méi)有sdm對(duì)應(yīng)的掛載點(diǎn),所以該磁盤將無(wú)法被使用,同時(shí)disk3對(duì)應(yīng)已經(jīng)被刪除的sdc,后續(xù)的IO請(qǐng)求均會(huì)報(bào)錯(cuò),而且盤符順序與實(shí)際槽位順序不一致,對(duì)磁盤的運(yùn)維操作也帶來(lái)麻煩。
【發(fā)明內(nèi)容】
[0004]本發(fā)明旨在至少在一定程度上解決上述技術(shù)問(wèn)題之一或至少提供一種有用的商業(yè)選擇。為此,本發(fā)明的第一個(gè)目的在于提供一種盤符漂移預(yù)防及處理方法,該方法可以避免盤符漂移,保證系統(tǒng)加載的磁盤可以被正常使用。本發(fā)明的第二個(gè)目的在于提供一種盤符漂移預(yù)防及處理裝置。本發(fā)明的第三個(gè)目的在于提供一種盤符漂移預(yù)防方法。本發(fā)明第四個(gè)目的在于提供一種盤符漂移預(yù)防裝置。本發(fā)明第五個(gè)目的在于提供一種盤符漂移處理方法。本發(fā)明的第四個(gè)目的在于提供一種盤符漂移處理裝置。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明第一方面的實(shí)施例提供了盤符漂移預(yù)防及處理方法,包括如下步驟:
[0006]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ;
[0007]當(dāng)所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查所述磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符;以及
[0008]當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0009]根據(jù)本發(fā)明式實(shí)施例的盤符漂移預(yù)防及處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0010]本發(fā)明第二方面的實(shí)施例提供一種盤符漂移預(yù)防及處理裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent,記錄磁盤插拔行為,并當(dāng)Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查所述磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0011]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0012]本發(fā)明第三方面的實(shí)施例提供了一種盤符漂移預(yù)防方法,包括如下步驟:
[0013]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ;以及
[0014]當(dāng)Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),所述設(shè)備管理工具Udev對(duì)系統(tǒng)中所述磁盤的掛載情況進(jìn)行檢查,并在所述磁盤處于掛載狀態(tài)時(shí)卸載所述磁盤對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤在所述內(nèi)核中的驅(qū)動(dòng)模塊。
[0015]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防方法,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0016]本發(fā)明第四方面的實(shí)施例提供一種盤符漂移預(yù)防裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent,并當(dāng)所述Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),對(duì)所述系統(tǒng)中所述磁盤的掛載情況進(jìn)行檢查,并在所述磁盤處于掛載狀態(tài)時(shí)卸載所述磁盤對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤在所述內(nèi)核中的驅(qū)動(dòng)模塊。
[0017]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防裝置,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0018]本發(fā)明第五方面的實(shí)施例提供一種盤符漂移處理方法,包括如下步驟:[0019]內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。根據(jù)本發(fā)明實(shí)施例的盤符漂移處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的裝置避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0020]本發(fā)明第六方面的實(shí)施例提供一種盤符漂移處理裝置,包括:內(nèi)核,用于發(fā)出Uevent ;設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent以及記錄磁盤的插拔行為,如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0021]根據(jù)本發(fā)明實(shí)施例的盤符漂移處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的裝置避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(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í)施例的盤符漂移預(yù)防及處理方法的流程圖;
[0025]圖2為根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理方法的工作流程;
[0026]圖3為根據(jù)本發(fā)明實(shí)施例的磁盤下線的處理策略的示意圖;
[0027]圖4為根據(jù)本發(fā)明實(shí)施例的磁盤加載策的處理策略的示意圖;
[0028]圖5為根據(jù)本發(fā)明實(shí)施例的盤符漂移的示意圖;
[0029]圖6根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置的示意圖;
[0030]圖7為根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防方法的流程圖;以及
[0031]圖8為根據(jù)本發(fā)明實(shí)施例的盤符漂移處理方法的流程圖。
【具體實(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í)施例的盤符漂移預(yù)防及處理方法。其中,該盤符漂移預(yù)防及處理方法可以應(yīng)用于服務(wù)器及磁盤運(yùn)維管理方面。
[0035]如圖1所示,本發(fā)明實(shí)施例提供的盤符漂移預(yù)防及處理方法,包括如下步驟:
[0036]步驟S101,內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽內(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ò)偵聽內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0038]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
[0039]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤的操作。其中,無(wú)論磁盤是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
[0040]當(dāng)磁盤被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
[0041]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤符漂移預(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偵聽內(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)控到刪除磁盤的Uevent時(shí),則檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符。[0051]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤的掛載情況進(jìn)行檢查,檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
[0052]如果磁盤處于掛載狀態(tài),則卸載磁盤對(duì)應(yīng)的盤符,以便內(nèi)核成功釋放磁盤在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤下線時(shí),本發(fā)明可以及時(shí)釋放磁盤設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤符漂移。
[0053]圖3示出了磁盤下線的處理策略。
[0054]步驟S301,磁盤下線(disk offline)。
[0055]步驟S3O2,內(nèi)核刪除(kernel delete)。
[0056]內(nèi)核從系統(tǒng)中刪除磁盤。
[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)中的磁盤的掛載情況進(jìn)行檢查。
[0061]步驟S305, Udev 腳本卸載(Udev script umount)。
[0062]設(shè)備管理工具Udev在檢查到磁盤處于掛載狀態(tài)時(shí)卸載磁盤對(duì)應(yīng)的盤符,從而使得內(nèi)核釋放對(duì)應(yīng)的磁盤在內(nèi)核中的驅(qū)動(dòng)模塊。
[0063]步驟S103,當(dāng)設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),設(shè)備管理工具Udev判斷磁盤是否發(fā)生盤符漂移,如果未發(fā)生盤符漂移,則執(zhí)行步驟S1031,如果發(fā)生盤符漂移,則執(zhí)行步驟S1032。
[0064]當(dāng)磁盤被加載時(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)核分配的初始盤符判斷是否發(fā)生盤符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev判斷發(fā)生盤符漂移:
[0066]( I)初始盤符的順序與與原有盤符的順序不一致。
[0067]例如,磁盤的初始盤符為3,而原有盤符順序?yàn)榈?,則可以判斷發(fā)生了盤符漂移。
[0068](2)磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
[0069]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤。如果磁盤的初始盤符被分配至第13的盤符,可以判斷磁盤所在的槽位順序?qū)?yīng)的盤符超出了槽位的范圍,磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,則判斷發(fā)生了盤符漂移。
[0070]步驟S1031,如果未發(fā)生盤符漂移,則將初始盤符作為添加磁盤的最終盤符。
[0071]步驟S1032,如果發(fā)現(xiàn)盤符漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0072]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤插拔記錄可以獲知是否初始盤符的順序與原有盤符的順序不一致,或者磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,從而可以判斷是否發(fā)生盤符漂移。
[0073]根據(jù)設(shè)備管理工具Udev記錄的磁盤插拔記錄卸載原有盤符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤分配新的盤符,從而使得原有磁盤設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤,從而使得磁盤的內(nèi)核模塊名和設(shè)備文件名與原有的盤符保持一致,從而避免盤符漂移。
[0074]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤模擬拔出,但實(shí)際的磁盤并未被拔出,故而稱之為模擬拔出。由于,磁盤的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤被拔出。然后根據(jù)磁盤插拔記錄查找之前被拔出的磁盤的盤符,并將之前拔出的磁盤的盤符分配給該添加磁盤的盤符。
[0075]如圖5所示,磁盤包括Diskl、Disk2、Disk3、Disk4、Disk5,其中,上述磁盤分別對(duì)應(yīng)的盤符號(hào)及設(shè)備文件名為sda、sdb、sdc、sdd和sde。Disk6為添加的磁盤,Disk2為被拔出的磁盤。
[0076]從圖中可以看出,系統(tǒng)包括五個(gè)槽位,可以放置五個(gè)磁盤。如果要向系統(tǒng)中添加磁盤Disk6,為了避免出現(xiàn)設(shè)備管理工具Udev向磁盤Disk6順序分配新的盤符號(hào)及設(shè)備文件名為sdf而導(dǎo)致盤符漂移,需要將添加磁盤Disk6模擬拔出,即將Disk6模擬拔出,而實(shí)際并未拔出。然后查詢?cè)O(shè)備管理工具Udev中的設(shè)備插拔記錄,查詢之前設(shè)備插拔記錄,獲知Disk2為被拔出的磁盤,并查找到Disk2對(duì)應(yīng)的盤符為sdb。然后,將sdb分配給Disk6,即添加磁盤Disk6的盤符為sdb,從而避免了盤符漂移。
[0077]圖4示出了磁盤加載的處理策略。
[0078]步驟S401,添加磁盤(disk add)。
[0079]步驟S402,內(nèi)核加載(kernel load)。
[0080]內(nèi)核加載磁盤。
[0081]步驟S403, Udev 行為為添加(Udev action add)。
[0082]當(dāng)磁盤被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即Uevent為添加操作。
[0083]步驟S404,Udev腳本檢查磁盤盤符的槽位(Udev script check disk label withslot)。
[0084]步驟S405, Udev 腳本卸載(Udev script umount)。
[0085]如果發(fā)現(xiàn)盤符發(fā)生了漂移,則先卸載槽位對(duì)應(yīng)的掛載點(diǎn),使得原有磁盤設(shè)備在內(nèi)核中的引用得以釋放
[0086]步驟S406, Udev 腳本重新加載磁盤(Udev script reload disk)。
[0087]Udev腳本以模擬熱插拔的方式重新加載磁盤。
[0088]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0089]下面參考圖6描述根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置600。其中,該盤符漂移預(yù)防及處理裝置可以應(yīng)用于服務(wù)器及磁盤運(yùn)維管理方面。[0090]如圖6所示,本發(fā)明實(shí)施例的盤符漂移預(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)程的形式偵聽所述內(nèi)核發(fā)出的Uevent,記錄磁盤插拔行為。其中,設(shè)備管理工具Udev620為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽內(nèi)核610發(fā)出的Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0093]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev620根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev620的守護(hù)進(jìn)程偵聽來(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ì)磁盤的操作。其中,無(wú)論磁盤是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
[0095]當(dāng)磁盤被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
[0096]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
[0097]設(shè)備管理工具Udev620當(dāng)Uevent為對(duì)磁盤的操作時(shí),當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),對(duì)內(nèi)核610中磁盤的掛載情況進(jìn)行檢查,并在磁盤處于掛載狀態(tài)時(shí)卸載磁盤對(duì)應(yīng)的盤符以使內(nèi)核釋放對(duì)應(yīng)的磁盤在內(nèi)核中的驅(qū)動(dòng)模塊,以及當(dāng)設(shè)備事件Uevent為對(duì)磁盤的添加操作時(shí),根據(jù)內(nèi)核分配的初始盤符判斷是否發(fā)生盤符漂移。
[0098]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev620對(duì)內(nèi)核610中的磁盤的掛載情況進(jìn)行檢查,檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
[0099]如果磁盤處于掛載狀態(tài),則卸載磁盤對(duì)應(yīng)的盤符,以便內(nèi)核610成功釋放磁盤在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤下線時(shí),本發(fā)明可以及時(shí)釋放磁盤設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤符漂移。
[0100]當(dāng)磁盤被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到設(shè)備事件Uevent的action:add,即Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
[0101]設(shè)備管理工具Udev620判斷磁盤是否發(fā)生盤符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev620判斷發(fā)生盤符漂移:
[0102]( I)初始盤符的順序與原有盤符的順序不一致。
[0103]例如,磁盤的初始盤符為3,而原有盤符順序?yàn)榈?,則可以判斷發(fā)生了盤符漂移。
[0104](2)磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
[0105]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤。如果磁盤的初始盤符被分配至第13的盤符,可以判斷磁盤所在的槽位順序?qū)?yīng)的盤符超出了槽位的范圍,磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,則判斷發(fā)生了盤符漂移。
[0106]如果設(shè)備管理工具Udev620判斷未發(fā)生漂移,則設(shè)備管理工具Udev 620將初始盤符作為添加磁盤的最終盤符。如果判斷已發(fā)生盤符漂移,則設(shè)備管理工具Udev 620卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0107]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev620對(duì)于磁盤的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev620中的磁盤插拔記錄可以獲知是否初始盤符的順序與原有盤符的順序不一致,或者磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,從而可以判斷是否發(fā)生盤符漂移。
[0108]根據(jù)設(shè)備管理工具Udev620記錄的磁盤插拔記錄卸載原有盤符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤分配新的盤符,從而使得原有磁盤設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤,從而使得磁盤的內(nèi)核模塊名和設(shè)備文件名與原有的盤符保持一致,從而避免盤符漂移。
[0109]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev620先將添加磁盤模擬拔出,但實(shí)際的磁盤并未被拔出,故而稱之為模擬拔出。由于,磁盤的插拔動(dòng)作均在設(shè)備管理工具Udev620中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤被拔出。然后根據(jù)磁盤插拔記錄查找之前被拔出的磁盤的盤符,并將之前拔出的磁盤的盤符分配給該添加磁盤的盤符。
[0110]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的裝置避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0111]下面參考圖7描述根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防方法。其中,該盤符漂移預(yù)防方法可以應(yīng)用于服務(wù)器及磁盤運(yùn)維管理方面。
[0112]如圖7所示,本發(fā)明實(shí)施例提供的盤符漂移預(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ò)偵聽內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0115]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
[0116]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤的操作。其中,無(wú)論磁盤是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
[0117]當(dāng)磁盤被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
[0118]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rul e調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理方法涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
[0119]步驟S702,當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符。
[0120]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤的掛載情況進(jìn)行檢查,檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
[0121]如果磁盤處于掛載狀態(tài),則卸載磁盤對(duì)應(yīng)的盤符,以便內(nèi)核成功釋放磁盤在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤下線時(shí),本發(fā)明可以及時(shí)釋放磁盤設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤符漂移。
[0122]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防方法,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0123]本發(fā)明實(shí)施例還提供了一種盤符漂移預(yù)防裝置,包括內(nèi)核和設(shè)備管理工具Udev。其中,該盤符漂移預(yù)防裝置可以應(yīng)用于服務(wù)器及磁盤運(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)程的形式偵聽所述內(nèi)核發(fā)出的Uevene,記錄磁盤插拔行為。其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽內(nèi)核發(fā)出的Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0126]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
[0127]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤的操作。其中,無(wú)論磁盤是被系統(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í)施例的盤符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
[0129]設(shè)備管理工具Udev當(dāng)Uevent為對(duì)磁盤的操作時(shí),當(dāng)設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),對(duì)內(nèi)核中磁盤的掛載情況進(jìn)行檢查,并在磁盤處于掛載狀態(tài)時(shí)卸載磁盤對(duì)應(yīng)的盤符以使內(nèi)核釋放對(duì)應(yīng)的磁盤在內(nèi)核中的驅(qū)動(dòng)模塊。
[0130]當(dāng)檢測(cè)到remove行為時(shí),設(shè)備管理工具Udev對(duì)系統(tǒng)中的磁盤的掛載情況進(jìn)行檢查,檢查磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已經(jīng)被卸載。
[0131]如果磁盤處于掛載狀態(tài),則卸載磁盤對(duì)應(yīng)的盤符,以便內(nèi)核成功釋放在內(nèi)核中的驅(qū)動(dòng)模塊。當(dāng)磁盤下線時(shí),本發(fā)明可以及時(shí)釋放磁盤設(shè)備在內(nèi)核中的數(shù)據(jù),從而在下次加載磁盤時(shí),內(nèi)核驅(qū)動(dòng)模塊的名稱可以順利被重新分配,從而可以預(yù)防盤符漂移。
[0132]根據(jù)本發(fā)明實(shí)施例的盤符漂移預(yù)防裝置,通過(guò)Uevent事件機(jī)制,卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。通過(guò)本發(fā)明的方法避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0133]下面參考圖8描述根據(jù)本發(fā)明實(shí)施例的盤符漂移處理方法。其中,該盤符漂移處理方法可以應(yīng)用于服務(wù)器及磁盤運(yùn)維管理方面。
[0134]如圖8所示,本發(fā)明實(shí)施例提供的盤符漂移處理方法,包括如下步驟;
[0135]步驟S801,內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(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ò)偵聽內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0137]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev的守護(hù)進(jìn)程偵聽來(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ú)論磁盤是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
[0139]當(dāng)磁盤被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
[0140]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理方法涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
[0141]步驟S802,當(dāng)Uevent為對(duì)磁盤的添加操作時(shí),設(shè)備管理工具Udev判斷磁盤是否發(fā)生盤符漂移。如果判斷未發(fā)生盤符漂移,則執(zhí)行步驟S8021。如果判斷發(fā)生盤符漂移,則執(zhí)行步驟S8022。
[0142]當(dāng)磁盤被加載時(shí),設(shè)備管理工具Udev會(huì)檢測(cè)到Uevent的action:add,即設(shè)備事件Uevent為添加操作。在缺省規(guī)則下,在設(shè)備管理目錄/dev下會(huì)使用內(nèi)核驅(qū)動(dòng)模塊名作為設(shè)備文件名。
[0143]設(shè)備管理工具Udev判斷磁盤是否發(fā)生盤符漂移。具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev判斷發(fā)生盤符漂移:
[0144]( I)初始盤符的順序與原有盤符的順序不一致。
[0145]例如,磁盤的初始盤符為3,而原有盤符順序?yàn)榈?,則可以判斷發(fā)生盤符漂移。
[0146](2)磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
[0147]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤。如果磁盤的初始盤符被分配至第13的盤符,可以判斷磁盤所在的槽位順序?qū)?yīng)的盤符超出了槽位的范圍,磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,則判斷發(fā)生了盤符漂移。
[0148]步驟S8021,如果判斷發(fā)生盤符漂移,則將初始盤符作為添加磁盤的最終盤符。
[0149]步驟S8022,如果判斷已發(fā)生盤符漂移,則設(shè)備管理工具Udev 620卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0150]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤插拔記錄可以獲知是否初始盤符的順序與原有盤符的順序不一致,或者磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,從而可以判斷是否發(fā)生盤符漂移。
[0151]根據(jù)設(shè)備管理工具Udev記錄的磁盤插拔記錄卸載原有盤符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤分配新的盤符,從而使得原有磁盤設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤,從而使得磁盤的內(nèi)核模塊名和設(shè)備文件名與原有的盤符保持一致,從而避免盤符漂移。
[0152]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤模擬拔出,但實(shí)際的磁盤并未被拔出,故而稱之為模擬拔出。由于,磁盤的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤被拔出。然后根據(jù)磁盤插拔記錄查找之前被拔出的磁盤的盤符,并將之前拔出的磁盤的盤符分配給該添加磁盤的盤符。
[0153]根據(jù)本發(fā)明實(shí)施例的盤符漂移處理方法,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的裝置避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(wèn)題。
[0154]本發(fā)明實(shí)施例的盤符漂移處理裝置,包括:內(nèi)核和設(shè)備管理工具Udev。其中,該盤符漂移處理方法可以應(yīng)用于服務(wù)器及磁盤運(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)程的形式偵聽所述內(nèi)核發(fā)出的Uevent以及記錄磁盤的插拔記錄。其中,設(shè)備管理工具Udev為在用戶空間以守護(hù)進(jìn)程的形式運(yùn)行,通過(guò)偵聽內(nèi)核發(fā)出的設(shè)備事件Uevent管理設(shè)備管理目錄(/dev)下的設(shè)備文件。
[0156]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)備管理工具Udev根據(jù)Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理。當(dāng)刪除或加載磁盤時(shí),設(shè)備管理工具Udev620的守護(hù)進(jìn)程偵聽來(lái)自內(nèi)核的Uevent,對(duì)設(shè)備管理目錄(/dev)下的設(shè)備文件進(jìn)行添加或刪除操作。
[0157]設(shè)備管理工具Udev在接收到Uevent后,匹配Udev規(guī)則(rule)。對(duì)Uevent的類型進(jìn)行判斷,判斷Uevent為對(duì)磁盤的操作。其中,無(wú)論磁盤是被系統(tǒng)踢出(reject)、重置(reset)或者被人為拔出,均會(huì)檢測(cè)到Uevent的行為action為remove行為,即判斷Uevent的類型為操作行為。
[0158]當(dāng)磁盤被添加至系統(tǒng)時(shí),則判斷Uevent的類型為添加操作行為(add)。
[0159]根據(jù)Uevent的類型的不同,觸發(fā)相應(yīng)的Udev rule調(diào)用策略。在本發(fā)明的一個(gè)實(shí)例中,本發(fā)明實(shí)施例的盤符漂移預(yù)防及處理裝置涉及到的Udev rule策略以u(píng)dev script的形式實(shí)現(xiàn)。
[0160]當(dāng)磁盤被加載時(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ì)磁盤的添加操作時(shí),判斷磁盤是否發(fā)生漂移。
[0162]具體地,當(dāng)出現(xiàn)以下情況之一時(shí),設(shè)備管理工具Udev620判斷發(fā)生盤符漂移:
[0163]( I)初始盤符的順序與原有盤符的順序不一致。
[0164]例如,磁盤的初始盤符為3,而原有盤符順序?yàn)榈?,則可以判斷發(fā)生了盤符漂移。
[0165](2)磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
[0166]例如,系統(tǒng)包括12個(gè)槽位,可以放置12個(gè)磁盤。如果磁盤的初始盤符被分配至第13的盤符,可以判斷磁盤所在的槽位順序?qū)?yīng)的盤符超出了槽位的范圍,磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,則判斷發(fā)生了盤符漂移。
[0167]如果設(shè)備管理工具Udev判斷為發(fā)生盤符漂移,則將初始盤符作為添加磁盤的最終盤符。如果判斷已發(fā)生盤符漂移,則設(shè)備管理工具Udev卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
[0168]在本發(fā)明的實(shí)施例中,設(shè)備管理工具Udev對(duì)于磁盤的每次插拔行為均有記錄,從而通過(guò)查詢?cè)O(shè)備管理工具Udev中的磁盤插拔記錄可以獲知是否初始盤符的順序與原有盤符的順序不一致,或者磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,從而可以判斷是否發(fā)生盤符漂移。
[0169]根據(jù)設(shè)備管理工具Udev記錄的磁盤插拔記錄卸載原有盤符對(duì)應(yīng)的掛載點(diǎn),為添加磁盤分配新的盤符,從而使得原有磁盤設(shè)備(已經(jīng)被刪除了)在內(nèi)核中的引用得以釋放,再以模擬熱插拔的方式重新加載硬盤,從而使得磁盤的內(nèi)核模塊名和設(shè)備文件名與原有的盤符保持一致,從而避免盤符漂移。
[0170]下面對(duì)模擬熱插拔進(jìn)行解釋。模擬熱插拔是指設(shè)備管理工具Udev先將添加磁盤模擬拔出,但實(shí)際的磁盤并未被拔出,故而稱之為模擬拔出。由于,磁盤的插拔動(dòng)作均在設(shè)備管理工具Udev中有記錄,從而根據(jù)該記錄可以獲知哪個(gè)磁盤被拔出。然后根據(jù)磁盤插拔記錄查找之前被拔出的磁盤的盤符,并將之前拔出的磁盤的盤符分配給該添加磁盤的盤符。
[0171]根據(jù)本發(fā)明實(shí)施例的盤符漂移處理裝置,通過(guò)Uevent事件機(jī)制,可檢測(cè)到磁盤的插拔行為,及時(shí)卸載在上述情況發(fā)生時(shí)磁盤在系統(tǒng)中的設(shè)備掛載點(diǎn),使得磁盤在內(nèi)核中的設(shè)備文件數(shù)據(jù)得以釋放,從而避免再次加載磁盤時(shí)盤符順序發(fā)生漂移。當(dāng)磁盤加載后,如果發(fā)現(xiàn)盤符發(fā)生了漂移,該方法可以及時(shí)處理,保證磁盤重新加載后能被分配到正確的盤符。通過(guò)本發(fā)明的裝置避免了盤符漂移,從而可以保證系統(tǒng)加載的磁盤能夠被正常使用,更換故障磁盤時(shí),也能杜絕拔錯(cuò)磁盤的問(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ō)明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(R0M),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(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)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(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ǔ)器,磁盤或光盤等。
[0178]在本說(shuō)明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書中,對(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.一種盤符漂移預(yù)防及處理方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ; 當(dāng)所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查所述磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符;以及當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
2.如權(quán)利要求1所述的盤符漂移預(yù)防及處理方法,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)刪除或加載所述磁盤時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加或刪除操作。
3.如權(quán)利要求1所述的盤符漂移預(yù)防及處理方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
4.如權(quán)利要求1所述的盤符漂移預(yù)防及處理方法,其特征在于,如果所述初始盤符的順序與原有盤符的順序不一致,或者所述磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用,則判斷發(fā)生盤符漂移。
5.一種盤符漂移預(yù)防及處理裝置:包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent,記錄磁盤插拔行為,并當(dāng)Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),則檢查所述磁盤設(shè)備在系統(tǒng)中的掛載點(diǎn)是否已被卸載,如果所述磁盤設(shè)備處于掛載狀態(tài),則卸載對(duì)應(yīng)的盤符;如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
6.如權(quán)利要求5所述的盤符漂移預(yù)防及處理裝置,其特征在于,所述設(shè)備管理工具Udev還用于根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理, 當(dāng)刪除或加載所述磁盤時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加或刪除操作。
7.如權(quán)利要求5所述的盤符漂移預(yù)防及處理裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
8.如權(quán)利要求5所述的盤符漂移預(yù)防及處理裝置,其特征在于,所述設(shè)備管理工具Udev在所述初始盤符的順序與原有盤符的順序不一致,或者所述磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
9.一種盤符漂移預(yù)防方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ;以及當(dāng)Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),所述設(shè)備管理工具Udev對(duì)系統(tǒng)中所述磁盤的掛載情況進(jìn)行檢查,并在所述磁盤處于掛載狀態(tài)時(shí)卸載所述磁盤對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤在所述內(nèi)核中的驅(qū)動(dòng)模塊。
10.如權(quán)利要求9所述的盤符漂移預(yù)防方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
11.一種盤符漂移預(yù)防裝置,包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent,并當(dāng)所述Uevent為對(duì)磁盤的操作時(shí),如果所述設(shè)備管理工具Udev監(jiān)控到刪除磁盤的Uevent時(shí),對(duì)所述系統(tǒng)中所述磁盤的掛載情況進(jìn)行檢查,并在所述磁盤處于掛載狀態(tài)時(shí)卸載所述磁盤對(duì)應(yīng)的掛載點(diǎn)以使所述內(nèi)核釋放對(duì)應(yīng)的磁盤在所述內(nèi)核中的驅(qū)動(dòng)模塊。
12.如權(quán)利要求11所述的盤符漂移預(yù)防裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
13.一種盤符漂移處理方法,其特征在于,包括以下步驟: 內(nèi)核中的設(shè)備管理工具Udev以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent ;以及 當(dāng)所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
14.如權(quán)利要求13所述的盤符漂移處理方法,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)加載所述磁盤時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加。
15.如權(quán)利要求13所述的盤符漂移處理方法,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
16.如權(quán)利要求13所述的盤符漂移處理方法,其特征在于,如果所述初始盤符的順序與原有盤符的順序不一致,或者所述磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
17.一種盤符漂移處理裝置,包括: 內(nèi)核,用于發(fā)出Uevent ; 設(shè)備管理工具Udev,用于以守護(hù)進(jìn)程的形式偵聽所述內(nèi)核發(fā)出的Uevent以及記錄磁盤的插拔行為,如果所述設(shè)備管理工具Udev監(jiān)控到加載磁盤設(shè)備的Uevent時(shí),如果檢查到被分配的盤符發(fā)生了漂移,則卸載原有盤符對(duì)應(yīng)的掛載點(diǎn)以使原有磁盤設(shè)備在所述內(nèi)核中的引用得到釋放,并且以模擬熱插拔的方式重新加載磁盤以將所述磁盤的內(nèi)核模塊名稱和設(shè)備文件名稱一致。
18.如權(quán)利要求17所述的盤符漂移處理裝置,其特征在于,所述設(shè)備管理工具Udev根據(jù)所述設(shè)備事件Uevent對(duì)設(shè)備管理目錄下的設(shè)備文件進(jìn)行管理,當(dāng)加載所述磁盤時(shí),所述設(shè)備管理工具Udev的守護(hù)進(jìn)程對(duì)所述設(shè)備管理目錄下的設(shè)備文件進(jìn)行添加。
19.如權(quán)利要求17所述的盤符漂移處理裝置,其特征在于,所述內(nèi)核為L(zhǎng)inux內(nèi)核。
20.如權(quán)利要求17所述的盤符漂移處理裝置,其特征在于,所述設(shè)備管理工具在所述初始盤符的順序與原有盤符的順序不一致,或者所述磁盤所在的槽位順序?qū)?yīng)的盤符不能被使用。
【文檔編號(hào)】G06F11/00GK103677650SQ201210337890
【公開日】2014年3月26日 申請(qǐng)日期:2012年9月12日 優(yōu)先權(quán)日:2012年9月12日
【發(fā)明者】胡殿明, 劉雨亮, 魏偉 申請(qǐng)人:北京百度網(wǎng)訊科技有限公司