国产精品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>

      一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置制造方法

      文檔序號(hào):6634298閱讀:168來(lái)源:國(guó)知局
      一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置制造方法
      【專利摘要】本發(fā)明公開(kāi)了一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置,包括:通過(guò)映射表檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出其為非對(duì)齊訪問(wèn)地址,則保存在邏輯地址統(tǒng)計(jì)緩存內(nèi)。當(dāng)該緩存中的條目數(shù)量達(dá)到上限時(shí),執(zhí)行遷移流程;判斷出通過(guò)映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并對(duì)非對(duì)齊訪問(wèn)地址段進(jìn)行對(duì)齊操作;并讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。通過(guò)本發(fā)明的方案,能夠解決現(xiàn)有對(duì)齊糾正方案中存在的需要對(duì)上層應(yīng)用進(jìn)行重新配置、手動(dòng)執(zhí)行、易用性差的缺點(diǎn)。
      【專利說(shuō)明】一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體涉及一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置。

      【背景技術(shù)】
      [0002]隨著計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)容量的不斷增大,底層存儲(chǔ)設(shè)備對(duì)容量的管理方式也在不斷的發(fā)生著變化。
      [0003]傳統(tǒng)機(jī)械硬盤(pán)的物理塊大小為512字節(jié),而較新型的存儲(chǔ)設(shè)備如使用高級(jí)格式化技術(shù)的機(jī)械硬盤(pán)物理塊大小為4096字節(jié)、固態(tài)硬盤(pán)的物理塊則一般為4096字節(jié)一 16384字節(jié)。當(dāng)計(jì)算機(jī)系統(tǒng)是為傳統(tǒng)機(jī)械硬盤(pán)設(shè)計(jì)時(shí),計(jì)算機(jī)系統(tǒng)無(wú)法正確識(shí)別物理塊大小,每次對(duì)存儲(chǔ)設(shè)備的訪問(wèn)請(qǐng)求的地址可能無(wú)法與存儲(chǔ)設(shè)備物理塊的起始地址對(duì)齊。在發(fā)生非對(duì)齊寫(xiě)入時(shí),硬盤(pán)首先需要讀取出要寫(xiě)入的物理塊上原有的數(shù)據(jù),使用要寫(xiě)入的數(shù)據(jù)覆蓋原有數(shù)據(jù)中對(duì)應(yīng)的部分,再將修改后的數(shù)據(jù)寫(xiě)入到存儲(chǔ)設(shè)備上。而在對(duì)齊寫(xiě)入時(shí),存儲(chǔ)設(shè)備只需要將要寫(xiě)入的數(shù)據(jù)覆蓋寫(xiě)入到目標(biāo)物理塊上即可。因此,對(duì)存儲(chǔ)設(shè)備的非對(duì)齊寫(xiě)入會(huì)降低硬件性能,并加速硬件設(shè)備的老化。但是在非對(duì)齊訪問(wèn)的情況下,存儲(chǔ)設(shè)備的功能還是完整的,導(dǎo)致用戶難以察覺(jué)到發(fā)生了問(wèn)題。
      [0004]目前的解決方案一般是使用特定的軟件檢查存儲(chǔ)設(shè)備物理塊對(duì)齊情況,并對(duì)上層應(yīng)用(如文件系統(tǒng)等)進(jìn)行重新配置。這個(gè)操作需要用戶手動(dòng)執(zhí)行,并且不能在設(shè)備使用時(shí)執(zhí)行,易用性較差。


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

      [0005]為了解決上述問(wèn)題,本發(fā)明提出了一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法和裝置,可以解決現(xiàn)有存儲(chǔ)設(shè)備對(duì)齊糾正方案中存在的需要對(duì)上層應(yīng)用進(jìn)行重新配置、需要手動(dòng)執(zhí)行、易用性差的缺點(diǎn)。
      [0006]為了達(dá)到上述目的,本發(fā)明提出了一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法,該方法包括:
      [0007]通過(guò)映射表對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi)。
      [0008]當(dāng)邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并根據(jù)遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將非對(duì)齊訪問(wèn)地址段以地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)移動(dòng)完成對(duì)非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      [0009]優(yōu)選地,對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè)是指:在存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果映射表中存在該訪問(wèn)請(qǐng)求的邏輯地址的記錄,則該訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果映射表中不存在該訪問(wèn)請(qǐng)求的邏輯地址的記錄,則該訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或該訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在映射表中。
      [0010]優(yōu)選地,該方法還包括:通過(guò)映射表管理訪問(wèn)請(qǐng)求的邏輯地址到實(shí)際物理地址的映射關(guān)系,存儲(chǔ)訪問(wèn)請(qǐng)求的邏輯地址和實(shí)際物理地址之間的偏移量。
      [0011]其中,在存儲(chǔ)設(shè)備處于初始狀態(tài)時(shí),訪問(wèn)請(qǐng)求的邏輯地址和物理地址之間不存在偏移量。
      [0012]優(yōu)選地,遷移流程包括非對(duì)齊訪問(wèn)地址段的判斷流程,包括以下步驟:
      [0013]41、從邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0014]42、判斷所讀取的訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為O。
      [0015]如果偏移量為O,則進(jìn)行43 ;如果偏移量不為O,則進(jìn)行44。
      [0016]43、繼續(xù)判斷該邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址則退出流程;如果不是最后一個(gè)邏輯地址,則繼續(xù)從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41。
      [0017]44、記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量。
      [0018]45、繼續(xù)判斷當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址,則退出遷移流程;如果不是最后一個(gè)邏輯地址,則從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0019]46、判斷該訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      [0020]優(yōu)選地,遷移流程還包括非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移流程,包括以下步驟:
      [0021]51、如果在所述非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為O判斷出任何訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空邏輯地址統(tǒng)計(jì)緩存,退出遷移流程。
      [0022]52、如果在判斷過(guò)程中判斷出一組訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用存儲(chǔ)設(shè)備的冗余塊機(jī)制,為非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到新物理塊中,并在映射表中建立新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將映射關(guān)系添加到映射表的條目中。
      [0023]53、根據(jù)非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址、地址段偏移量和所述地址段結(jié)束邏輯地址,更新映射表,對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0024]或者,將地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0025]本發(fā)明還提出一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正裝置,該裝置包括:檢測(cè)模塊、遷移流程模塊。
      [0026]檢測(cè)模塊,用于通過(guò)映射表對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi)。
      [0027]遷移流程模塊,用于當(dāng)邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并根據(jù)遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將非對(duì)齊訪問(wèn)地址段以地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)移動(dòng)完成對(duì)非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      [0028]優(yōu)選地,檢測(cè)模塊還用于:在存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果映射表中存在訪問(wèn)請(qǐng)求的邏輯地址的記錄,則訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果映射表中不存在訪問(wèn)請(qǐng)求的邏輯地址的記錄,則訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在映射表中。
      [0029]優(yōu)選地,遷移流程模塊還用于對(duì)非對(duì)齊訪問(wèn)地址段的判斷,包括:
      [0030]41、從邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)訪問(wèn)請(qǐng)求的邏輯地址段。
      [0031]42、判斷所讀取的訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為O。
      [0032]如果偏移量為O,則進(jìn)行43 ;如果偏移量不為O,則進(jìn)行44。
      [0033]43、繼續(xù)判斷該邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址則退出流程;如果不是所最后一個(gè)邏輯地址,則繼續(xù)從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41。
      [0034]44、記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量。
      [0035]45、繼續(xù)判斷當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址,則退出遷移流程;如果不是最后一個(gè)邏輯地址,則從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0036]46、判斷該訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      [0037]優(yōu)選地,所述遷移流程模塊還用于對(duì)非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移,包括:
      [0038]51、如果在非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為O判斷出任何訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空邏輯地址統(tǒng)計(jì)緩存,退出遷移流程。
      [0039]52、如果在判斷過(guò)程中判斷出一組訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用存儲(chǔ)設(shè)備的冗余塊機(jī)制,為該非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到新物理塊中,并在映射表中建立新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將該映射關(guān)系添加到映射表的條目中。
      [0040]53、根據(jù)非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址、地址段偏移量和所述地址段結(jié)束邏輯地址,更新映射表,對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0041]或者,將地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0042]與現(xiàn)有技術(shù)相比,本發(fā)明包括:通過(guò)映射表對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi);當(dāng)邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)所述映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并根據(jù)遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將非對(duì)齊訪問(wèn)地址段以地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)移動(dòng)完成對(duì)非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。通過(guò)本發(fā)明的方案,能夠解決現(xiàn)有存儲(chǔ)設(shè)備對(duì)齊糾正方案中存在的需要對(duì)上層應(yīng)用進(jìn)行重新配置、需要手動(dòng)執(zhí)行、易用性差的缺點(diǎn)。

      【專利附圖】

      【附圖說(shuō)明】
      [0043]下面對(duì)本發(fā)明實(shí)施例中的附圖進(jìn)行說(shuō)明,實(shí)施例中的附圖是用于對(duì)本發(fā)明的進(jìn)一步理解,與說(shuō)明書(shū)一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。
      [0044]附圖1為本發(fā)明中存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法簡(jiǎn)易流程圖;
      [0045]附圖2為本發(fā)明中非對(duì)齊訪問(wèn)地址段的判斷流程圖;
      [0046]附圖3為本發(fā)明中對(duì)非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移流程圖;
      [0047]附圖4為本發(fā)明中對(duì)非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移示意圖。

      【具體實(shí)施方式】
      [0048]為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述,并不能用來(lái)限制本發(fā)明的保護(hù)范圍。
      [0049]本發(fā)明提出了一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法,如圖1所示,該方法包括:
      [0050]通過(guò)映射表對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi)。
      [0051]當(dāng)邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并根據(jù)遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將非對(duì)齊訪問(wèn)地址段以地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)移動(dòng)完成對(duì)非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      [0052]優(yōu)選地,對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè)是指:在存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果映射表中存在該訪問(wèn)請(qǐng)求的邏輯地址的記錄,則該訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果映射表中不存在該訪問(wèn)請(qǐng)求的邏輯地址的記錄,則該訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或該訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在映射表中。
      [0053]優(yōu)選地,該方法還包括:通過(guò)映射表管理訪問(wèn)請(qǐng)求的邏輯地址到實(shí)際物理地址的映射關(guān)系,存儲(chǔ)訪問(wèn)請(qǐng)求的邏輯地址和實(shí)際物理地址之間的偏移量。
      [0054]其中,在存儲(chǔ)設(shè)備處于初始狀態(tài)時(shí),訪問(wèn)請(qǐng)求的邏輯地址和物理地址之間不存在偏移量。
      [0055]優(yōu)選地,遷移流程包括非對(duì)齊訪問(wèn)地址段的判斷流程,如圖2所示,包括以下步驟:
      [0056]41、從邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0057]42、判斷所讀取的訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為O。
      [0058]如果偏移量為O,則進(jìn)行43 ;如果偏移量不為O,則進(jìn)行44。
      [0059]43、繼續(xù)判斷該邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址則退出流程;如果不是最后一個(gè)邏輯地址,則繼續(xù)從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41。
      [0060]44、記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量。
      [0061]45、繼續(xù)判斷當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址,則退出遷移流程;如果不是最后一個(gè)邏輯地址,則從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0062]46、判斷該訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      [0063]優(yōu)選地,遷移流程還包括非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移流程,如圖3、圖4所示,包括以下步驟:
      [0064]51、如果在所述非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為O判斷出任何訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空邏輯地址統(tǒng)計(jì)緩存,退出遷移流程。
      [0065]52、如果在判斷過(guò)程中判斷出一組訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用存儲(chǔ)設(shè)備的冗余塊機(jī)制,為非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到新物理塊中,并在映射表中建立新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將映射關(guān)系添加到映射表的條目中。
      [0066]53、根據(jù)非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址、地址段偏移量和所述地址段結(jié)束邏輯地址,更新映射表,對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0067]或者,將地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0068]本發(fā)明還提出一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正裝置01,該裝置包括:檢測(cè)模塊
      02、遷移流程模塊03。
      [0069]檢測(cè)模塊02,用于通過(guò)映射表對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)映射表中記錄的偏移量對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi)。
      [0070]遷移流程模塊03,用于當(dāng)邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到映射表的條目中,并根據(jù)遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將非對(duì)齊訪問(wèn)地址段以地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)移動(dòng)完成對(duì)非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      [0071]優(yōu)選地,檢測(cè)模塊02還用于:在存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果映射表中存在訪問(wèn)請(qǐng)求的邏輯地址的記錄,則訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果映射表中不存在訪問(wèn)請(qǐng)求的邏輯地址的記錄,則訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在映射表中。
      [0072]優(yōu)選地,遷移流程模塊03還用于對(duì)非對(duì)齊訪問(wèn)地址段的判斷,包括:
      [0073]41、從邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)訪問(wèn)請(qǐng)求的邏輯地址段。
      [0074]42、判斷所讀取的訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為O。
      [0075]如果偏移量為0,則進(jìn)行43 ;如果偏移量不為0,則進(jìn)行44。
      [0076]43、繼續(xù)判斷該邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址則退出流程;如果不是所最后一個(gè)邏輯地址,則繼續(xù)從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41。
      [0077]44、記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量。
      [0078]45、繼續(xù)判斷當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址是否為邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是最后一個(gè)邏輯地址,則退出遷移流程;如果不是最后一個(gè)邏輯地址,則從邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)訪問(wèn)請(qǐng)求的邏輯地址。
      [0079]46、判斷該訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      [0080]優(yōu)選地,所述遷移流程模塊03還用于對(duì)非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移,包括:
      [0081]51、如果在非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為O判斷出任何訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空邏輯地址統(tǒng)計(jì)緩存,退出遷移流程。
      [0082]52、如果在判斷過(guò)程中判斷出一組訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用存儲(chǔ)設(shè)備的冗余塊機(jī)制,為該非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到新物理塊中,并在映射表中建立新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將該映射關(guān)系添加到映射表的條目中。
      [0083]53、根據(jù)非對(duì)齊訪問(wèn)地址段的地址段起始邏輯地址、地址段偏移量和所述地址段結(jié)束邏輯地址,更新映射表,對(duì)非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0084]或者,將地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      [0085]需要說(shuō)明的是,以上所述的實(shí)施例僅是為了便于本領(lǐng)域的技術(shù)人員理解而已,并不用于限制本發(fā)明的保護(hù)范圍,在不脫離本發(fā)明的發(fā)明構(gòu)思的前提下,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明所做出的任何顯而易見(jiàn)的替換和改進(jìn)等均在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正方法,其特征在于,所述方法包括: 通過(guò)映射表對(duì)所述存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)所述映射表中記錄的偏移量對(duì)所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將所述訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi); 當(dāng)所述邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出所述邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)所述映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立所述非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到所述映射表的條目中,并根據(jù)所述遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將所述非對(duì)齊訪問(wèn)地址段以所述地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)所述移動(dòng)完成對(duì)所述非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的所述訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      2.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè)是指:在所述存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)所述訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果所述映射表中存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄,則所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果所述映射表中不存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄,則所述訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在所述映射表中。
      3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括:通過(guò)所述映射表管理所述訪問(wèn)請(qǐng)求的邏輯地址到實(shí)際物理地址的映射關(guān)系,存儲(chǔ)所述訪問(wèn)請(qǐng)求的邏輯地址和所述實(shí)際物理地址之間的偏移量; 其中,在所述存儲(chǔ)設(shè)備處于初始狀態(tài)時(shí),所述訪問(wèn)請(qǐng)求的邏輯地址和物理地址之間不存在偏移量。
      4.如權(quán)利要求1所述的方法,其特征在于,所述遷移流程包括所述非對(duì)齊訪問(wèn)地址段的判斷流程,包括以下步驟: 41、從所述邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址; 42、判斷所讀取的所述訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為0 ; 如果所述偏移量為0,則進(jìn)行43 ;如果所述偏移量不為0,則進(jìn)行44 ; 43、繼續(xù)判斷該邏輯地址是否為所述邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是所述最后一個(gè)邏輯地址則退出流程;如果不是所述最后一個(gè)邏輯地址,則繼續(xù)從所述邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41 ; 44、記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量; 45、繼續(xù)判斷當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址是否為所述邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是所述最后一個(gè)邏輯地址,則退出所述遷移流程;如果不是所述最后一個(gè)邏輯地址,則從所述邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址; 46、判斷該訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      5.如權(quán)利要求4所述的方法,其特征在于,所述遷移流程還包括所述非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移流程,包括以下步驟: 51、如果在所述非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷所述訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為0判斷出任何所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空所述邏輯地址統(tǒng)計(jì)緩存,退出所述遷移流程; 52、如果在所述判斷過(guò)程中判斷出一組所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用所述存儲(chǔ)設(shè)備的冗余塊機(jī)制,為所述非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到所述新物理塊中,并在所述映射表中建立所述新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將所述映射關(guān)系添加到所述映射表的條目中; 53、根據(jù)所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址、所述地址段偏移量和所述地址段結(jié)束邏輯地址,更新所述映射表,對(duì)所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在所述地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中; 或者,將所述地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      6.一種存儲(chǔ)設(shè)備地址對(duì)齊的自動(dòng)糾正裝置,其特征在于,所述裝置包括:檢測(cè)模塊、遷移流程模塊; 所述檢測(cè)模塊,用于通過(guò)映射表對(duì)所述存儲(chǔ)設(shè)備收到的訪問(wèn)請(qǐng)求進(jìn)行檢測(cè),如果檢測(cè)出所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則根據(jù)所述映射表中記錄的偏移量對(duì)所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,如果未檢測(cè)出所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址,則將所述訪問(wèn)請(qǐng)求的邏輯地址保存在邏輯地址統(tǒng)計(jì)緩存內(nèi); 所述遷移流程模塊,用于當(dāng)所述邏輯地址統(tǒng)計(jì)緩存中的條目數(shù)量達(dá)到上限時(shí),異步地執(zhí)行遷移流程;判斷出所述邏輯地址統(tǒng)計(jì)緩存內(nèi)通過(guò)所述映射表未檢測(cè)出的非對(duì)齊訪問(wèn)地址段,建立所述非對(duì)齊訪問(wèn)地址段的訪問(wèn)請(qǐng)求的邏輯地址與物理地址之間的映射關(guān)系,添加到所述映射表的條目中,并根據(jù)所述遷移過(guò)程中判斷出的地址段起始邏輯地址和地址段偏移量將所述非對(duì)齊訪問(wèn)地址段以所述地址段偏移量統(tǒng)一向前移動(dòng);在通過(guò)所述移動(dòng)完成對(duì)所述非對(duì)齊訪問(wèn)地址段的自動(dòng)糾正對(duì)齊操作后,讀取對(duì)齊后的所述訪問(wèn)請(qǐng)求的邏輯地址所對(duì)應(yīng)的物理地址中的數(shù)據(jù)。
      7.如權(quán)利要求6所述的裝置,其特征在于,所述檢測(cè)模塊還用于:在所述存儲(chǔ)設(shè)備收到讀取或?qū)懭胝?qǐng)求時(shí),根據(jù)所述訪問(wèn)請(qǐng)求中的邏輯地址在映射表中查找是否存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄;如果所述映射表中存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄,則所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址;如果所述映射表中不存在所述訪問(wèn)請(qǐng)求的邏輯地址的記錄,則所述訪問(wèn)請(qǐng)求的邏輯地址為對(duì)齊地址或所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊地址但尚未記錄在所述映射表中。
      8.如權(quán)利要求6所述的裝置,其特征在于,所述遷移流程模塊還用于對(duì)非對(duì)齊訪問(wèn)地址段的判斷,包括: 41、從所述邏輯地址統(tǒng)計(jì)緩存中讀取存儲(chǔ)的一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址段; 42、判斷所讀取的所述訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量是否為0 ; 如果所述偏移量為0,則進(jìn)行43 ;如果所述偏移量不為0,則進(jìn)行44 ; 43、繼續(xù)判斷該邏輯地址是否為所述邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是所述最后一個(gè)邏輯地址則退出流程;如果不是所述最后一個(gè)邏輯地址,則繼續(xù)從所述邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址,返回步驟41 ; 44、記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段起始邏輯地址,并記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址與其所在的物理塊的起始地址之間的偏移量為地址段偏移量; 45、繼續(xù)判斷當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址是否為所述邏輯地址統(tǒng)計(jì)緩存中的最后一個(gè)邏輯地址,如果是所述最后一個(gè)邏輯地址,則退出所述遷移流程;如果不是所述最后一個(gè)邏輯地址,則從所述邏輯地址統(tǒng)計(jì)緩存中讀取下一個(gè)所述訪問(wèn)請(qǐng)求的邏輯地址; 46、判斷所述訪問(wèn)請(qǐng)求的邏輯地址是否等同于上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址或上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址加上一個(gè)物理塊的長(zhǎng)度;如果是,則記錄當(dāng)前處理的所述訪問(wèn)請(qǐng)求的邏輯地址為地址段結(jié)束邏輯地址;如果否,則判斷上一個(gè)處理的所述訪問(wèn)請(qǐng)求的邏輯地址為一個(gè)完整的非對(duì)齊訪問(wèn)地址段,其同時(shí)為地址段起始邏輯地址與地址段結(jié)束邏輯地址。
      9.如權(quán)利要求8所述的裝置,其特征在于,所述遷移流程模塊還用于對(duì)所述非對(duì)齊訪問(wèn)地址段判斷后的數(shù)據(jù)遷移,包括: . 51、如果在所述非對(duì)齊訪問(wèn)地址段的判斷流程中沒(méi)有通過(guò)判斷所述訪問(wèn)請(qǐng)求的邏輯地址和其所在的物理塊的起始地址之間的偏移量不為0判斷出任何所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,則清空所述邏輯地址統(tǒng)計(jì)緩存,退出所述遷移流程; . 52、如果在所述判斷過(guò)程中判斷出一組所述訪問(wèn)請(qǐng)求的邏輯地址為非對(duì)齊訪問(wèn)地址段,利用所述存儲(chǔ)設(shè)備的冗余塊機(jī)制,為所述非對(duì)齊訪問(wèn)地址段分配一個(gè)新物理塊;將所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址對(duì)應(yīng)的物理地址之前的物理塊中的數(shù)據(jù)遷移到所述新物理塊中,并在所述映射表中建立所述新物理塊的物理地址與訪問(wèn)請(qǐng)求邏輯地址之間的映射關(guān)系,并將所述映射關(guān)系添加到所述映射表的條目中; .53、根據(jù)所述非對(duì)齊訪問(wèn)地址段的所述地址段起始邏輯地址、所述地址段偏移量和所述地址段結(jié)束邏輯地址,更新所述映射表,對(duì)所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊操作,并在所述地址段起始邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中; 或者,將所述地址段起始邏輯地址增加一個(gè)物理塊的長(zhǎng)度,從所得到的邏輯地址所對(duì)應(yīng)的物理地址中讀取一個(gè)物理塊長(zhǎng)度的數(shù)據(jù),寫(xiě)入所述非對(duì)齊訪問(wèn)地址進(jìn)行糾正對(duì)齊之后所對(duì)應(yīng)的物理地址中。
      【文檔編號(hào)】G06F12/06GK104461925SQ201410648027
      【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年11月14日 優(yōu)先權(quán)日:2014年11月14日
      【發(fā)明者】徐旸, 劉友生, 張延楓, 張書(shū)寧, 吳慶民 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1