一種文件處理方法及存儲(chǔ)設(shè)備的制作方法
【專利摘要】本發(fā)明實(shí)施例提供了一種文件處理方法及存儲(chǔ)設(shè)備。該方法包括:接收待存儲(chǔ)于RAID中的T個(gè)文件;確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào);獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由1遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào);根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊;將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。通過(guò)上述方法,能夠在保證文件存儲(chǔ)的安全性的基礎(chǔ)上將同一個(gè)文件寫入RAID的一個(gè)存儲(chǔ)器中,并能在讀取文件時(shí),達(dá)到較好的節(jié)能效果。
【專利說(shuō)明】一種文件處理方法及存儲(chǔ)設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種文件處理方法及存儲(chǔ)設(shè)備。
【背景技術(shù)】
[0002]獨(dú)立磁盤冗余陣列(RedundantArray of Independent Disks,RAID),又稱廉價(jià)磁盤冗余陣列(Redundant Array of Inexpensive Disks, RAID),簡(jiǎn)稱磁盤陣列,其原理是通過(guò)將多個(gè)相對(duì)便宜的硬盤組合起來(lái),成為一個(gè)硬盤陣列組,使性能達(dá)到甚至超過(guò)一個(gè)價(jià)格昂貴、容量巨大的硬盤,并且配合數(shù)據(jù)分散排列的設(shè)計(jì),提升數(shù)據(jù)的安全性。根據(jù)選擇的版本不同,RAID與單顆硬盤相比,不僅能夠增大存儲(chǔ)容量,還能夠增強(qiáng)數(shù)據(jù)集成度以及數(shù)據(jù)的容錯(cuò)能力。另外,磁盤陣列對(duì)于電腦來(lái)說(shuō),看起來(lái)就像一個(gè)單獨(dú)的硬盤或邏輯存儲(chǔ)單元。
[0003]在歸檔的場(chǎng)景下,由于需要?dú)w檔的文件很多,現(xiàn)有技術(shù)中通常RAID來(lái)存儲(chǔ)歸檔的文件,同時(shí),為了提升數(shù)據(jù)的安全性,通常采用帶校驗(yàn)功能的RAID來(lái)存儲(chǔ)歸檔的文件,例如:RAID3、RAID4、RAID5或RAID6等形式。現(xiàn)有技術(shù)中為了提升數(shù)據(jù)訪問(wèn)速度,通常將一個(gè)文件分割成若干數(shù)據(jù)塊,將屬于同一個(gè)文件的多個(gè)數(shù)據(jù)塊與校驗(yàn)數(shù)據(jù)一起組成RAID的一個(gè)分條(stripe)寫入構(gòu)成RAID的多個(gè)磁盤中。由于歸檔的文件被訪問(wèn)的頻率較低,因此,為了達(dá)到節(jié)能的目的,將文件歸檔后,通常會(huì)將存儲(chǔ)系統(tǒng)中的磁盤處于休眠或下電狀態(tài),在需要訪問(wèn)某個(gè)歸檔的文件時(shí),需要對(duì)存儲(chǔ)該文件的數(shù)據(jù)塊的多個(gè)磁盤進(jìn)行喚醒或上電操作,以讀取文件。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例中提供的一種文件處理方法及存儲(chǔ)設(shè)備,能夠在確保文件存儲(chǔ)的安全性的同時(shí)將同一個(gè)文件存儲(chǔ)于RAID的一個(gè)存儲(chǔ)器中,并能夠達(dá)到節(jié)能效果。
[0005]第一方面,本發(fā)明實(shí)施例提供一種文件處理方法,包括:
接收待存儲(chǔ)于RAID中的T個(gè)文件,所述T的值為不小于3的自然數(shù),且所述T的值等于構(gòu)建所述RAID的存儲(chǔ)器的數(shù)量;
確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào);
獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由I遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào);
根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊;
將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。
[0006]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述文件處理方法還包括:
當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述T個(gè)文件之外的其他文件;
若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件;
將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。[0007]結(jié)合第一方面,在第一方面的第二種可能的實(shí)施方式中,所述方法還包括:
當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述T個(gè)文件之外的其他文件,則將所述分條的第K個(gè)數(shù)據(jù)塊填充為O。
[0008]結(jié)合第一方面或第一方面的第一種至第二種任意一種可能的實(shí)現(xiàn)的方式,在第三種可能實(shí)現(xiàn)的方式中,所述方法還包括:
接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址;
根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址;
根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器;
將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
[0009]第二方面,本發(fā)明實(shí)施例提供一種用于將文件存儲(chǔ)于獨(dú)立磁盤冗余陣列(Redundant Arrays of Independent Disks, RAID)中的方法,所述 RAID 包括 D 個(gè)數(shù)據(jù)存儲(chǔ)器以及P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器,所述D的值為不小于2的自然數(shù),所述P的值為不小于I的自然數(shù),所述方法包括:
接收待存儲(chǔ)于所述RAID中的D個(gè)文件;
獲取所述D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,K的取值分別由I遞增到D;
根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊;
將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)存儲(chǔ)器,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器中。
[0010]在第二方面的第一種可能的實(shí)現(xiàn)方式中,該方法還包括:
當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述D個(gè)文件之外的其他文件;
若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件;
將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊。
[0011]結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,該方法還包括:
當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述D個(gè)文件之外的其他文件,則將所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊填充為O。
[0012]結(jié)合第二方面或第二方面的第一種至第二種任意一種可能的實(shí)現(xiàn)的方式,在第三種可能實(shí)現(xiàn)的方式中,該方法還包括:
接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址;
根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址;
根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器;
將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
[0013]第三方面,本發(fā)明實(shí)施例提供一種存儲(chǔ)設(shè)備,包括控制器和獨(dú)立磁盤冗余陣列(Redundant Array of Independent Disks, RAID),其中: 所述RAID,用于存儲(chǔ)文件,所述RAID包含有T個(gè)存儲(chǔ)器,其中,所述T的值為不小于3的自然數(shù);
所述控制器包括:
通信接口,用于與主機(jī)及所述獨(dú)立磁盤冗余陣列(Redundant Array of IndependentDisks, RAID)通信;
處理器,用于接收待存儲(chǔ)于所述RAID中的T個(gè)文件;
確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào);
獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由I遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào);
根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊;
將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。
[0014]在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述T個(gè)文件之外的其他文件;
若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件;
將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。
[0015]結(jié)合第三方面,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述T個(gè)文件之外的其他文件,則將所述分條的第K個(gè)數(shù)據(jù)塊填充為O。
[0016]結(jié)合第三方面或第三方面的第一種至第二種任意一種可能的實(shí)現(xiàn)的方式,在第三種可能實(shí)現(xiàn)的方式中,所述處理器還用于:
接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址;
根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址;
根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器;
將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
[0017]第四方面,本發(fā)明實(shí)施例提供一種存儲(chǔ)設(shè)備,包括控制器和獨(dú)立磁盤冗余陣列(Redundant Array of Independent Disks, RAID),其特征在于,所述 RAID 包括 D 個(gè)數(shù)據(jù)存儲(chǔ)器以及P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器,所述D的值為不小于2的自然數(shù),所述P的值為不小于I的自然數(shù),
所述RAID,用于存儲(chǔ)文件;
所述控制器包括:
通信接口,用于與主機(jī)及所述獨(dú)立磁盤冗余陣列(Redundant Array of IndependentDisks, RAID)通信;
處理器,用于接收待存儲(chǔ)于所述RAID中的D個(gè)文件;
獲取所述D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,K的取值分別由I遞增到D; 根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊;
將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)存儲(chǔ)器,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器中。
[0018]在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述D個(gè)文件之外的其他文件;
若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件;
將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊。
[0019]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述D個(gè)文件之外的其他文件,則將所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊填充為O。
[0020]結(jié)合第四方面或第四方面的第一種至第二種任意一種可能的實(shí)現(xiàn)的方式,在第三種可能實(shí)現(xiàn)的方式中,所述處理器還用于:
接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址;
根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址;
根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器;
將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
[0021]第五方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行如權(quán)利要求1-4任意一項(xiàng)所述的方法。
[0022]第六方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行如權(quán)利要求5-8任意一項(xiàng)所述的方法。
[0023]本發(fā)明實(shí)施例中提供的文件處理方法中,存儲(chǔ)設(shè)備通過(guò)確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào),將接收的T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的取值不等于所述校驗(yàn)塊在該分條中的序號(hào)。在從文件中獲取數(shù)據(jù)塊后,存儲(chǔ)設(shè)備根據(jù)獲取的該分條中的數(shù)據(jù)塊計(jì)算獲得該分條中的校驗(yàn)塊,并將該分條中的數(shù)據(jù)塊和校驗(yàn)塊寫入構(gòu)建所述RAID的磁盤中。由于存儲(chǔ)設(shè)備在將文件寫入磁盤前可以將同一個(gè)文件的數(shù)據(jù)塊與分條中同一個(gè)位置對(duì)應(yīng),進(jìn)而可以將同一個(gè)文件的數(shù)據(jù)塊與所述RAID中的同一個(gè)磁盤對(duì)應(yīng),因此,存儲(chǔ)設(shè)備可以將同一個(gè)文件的所有數(shù)據(jù)塊寫入同一個(gè)磁盤中。在歸檔的應(yīng)用場(chǎng)景中,當(dāng)需要訪問(wèn)通過(guò)本發(fā)明實(shí)施例的方法存儲(chǔ)于RAID中的某一個(gè)文件時(shí),存儲(chǔ)設(shè)備可以不用將整個(gè)RAID中的磁盤都喚醒或上電,只需要對(duì)存儲(chǔ)有該文件的一個(gè)磁盤進(jìn)行操作,從而能夠達(dá)到顯著的節(jié)能效果。
【專利附圖】
【附圖說(shuō)明】
[0024]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例。
[0025]圖1為本發(fā)明實(shí)施例的一種文件處理方法的應(yīng)用場(chǎng)景圖;
[0026]圖2為本發(fā)明實(shí)施例提供的一種存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
[0027]圖3為本發(fā)明實(shí)施例提供的一種文件處理方法的流程圖;
[0028]圖4-A為本發(fā)明實(shí)施例提供的一種位置示意圖;
[0029]圖4-B為本發(fā)明實(shí)施例提供的一種文件中數(shù)據(jù)塊劃分示意圖;
[0030]圖4-C為本發(fā)明實(shí)施例提供的一種文件存儲(chǔ)結(jié)構(gòu)示意圖;
[0031]圖5為本發(fā)明實(shí)施例提供的又一種文件處理方法的流程圖;
[0032]圖6為本發(fā)明實(shí)施例提供的又一種文件處理方法的流程圖;
[0033]圖6-A為本發(fā)明實(shí)施例提供的又一種文件存儲(chǔ)結(jié)構(gòu)示意圖;
[0034]圖7為本發(fā)明實(shí)施例提供的再一種文件處理方法的流程圖;
[0035]圖8為本發(fā)明實(shí)施例提供的一種文件讀取方法流程示意圖。
【具體實(shí)施方式】
[0036]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。
[0037]如圖1所示,圖1為本發(fā)明實(shí)施例的一種應(yīng)用場(chǎng)景圖,在圖1所述的一種應(yīng)用場(chǎng)景中,該存儲(chǔ)系統(tǒng)包括主機(jī)100、連接設(shè)備105和存儲(chǔ)設(shè)備110。
[0038]主機(jī)100可以包括當(dāng)前技術(shù)已知的任何計(jì)算設(shè)備,如服務(wù)器、臺(tái)式計(jì)算機(jī)、應(yīng)用服務(wù)器等等,在主機(jī)100中安裝有操作系統(tǒng)以及其他應(yīng)用程序,主機(jī)100可以有多個(gè)。
[0039]連接設(shè)備105可以包括當(dāng)前技術(shù)已知的存儲(chǔ)設(shè)備和主機(jī)之間的任何接口,如光纖交換機(jī),或者其他現(xiàn)有的交換機(jī)。
[0040]存儲(chǔ)設(shè)備110可以包括當(dāng)前技術(shù)已知的存儲(chǔ)設(shè)備,如存儲(chǔ)陣列、磁盤簇(Just aBunch Of Disks, JBOD)、直接存取存儲(chǔ)器(Direct Access Storage Device, DASD)的一個(gè)或多個(gè)互連的磁盤驅(qū)動(dòng)器,其中,直接存取存儲(chǔ)器可以包括諸如磁帶庫(kù)、一個(gè)或多個(gè)存儲(chǔ)單元的磁帶存儲(chǔ)設(shè)備。
[0041]圖2為本發(fā)明實(shí)施例提供的一種存儲(chǔ)設(shè)備110的結(jié)構(gòu)示意圖,圖2所示的存儲(chǔ)設(shè)備為一種存儲(chǔ)陣列。如圖2所示,存儲(chǔ)設(shè)備110可以包括控制器115以及磁盤陣列125,其中,這里的磁盤陣列指的是獨(dú)立磁盤冗余陣列(Redundant Arrays of Independent Disks,RAID),磁盤陣列125可以有多個(gè),磁盤陣列125由多個(gè)磁盤130構(gòu)成。磁盤陣列125與控制器115之間可以通過(guò)小型計(jì)算機(jī)系統(tǒng)接口(Small Computer System Interface, SCSI)協(xié)議等通信協(xié)議進(jìn)行通信連接,在此不進(jìn)行限定。
[0042]控制器115是存儲(chǔ)設(shè)備110的“大腦”,主要包括處理器(processor) 118、緩存(cache)120、存儲(chǔ)器(memory) 122、通信總線(簡(jiǎn)稱總線)126以及通信接口(CommunicationInterface) 128。處理器118、緩存120、存儲(chǔ)器122以及通信接口 128通過(guò)通信總線126完成相互間的通信。
[0043]通信接口 128,用于與主機(jī)100及磁盤陣列125通信。
[0044]存儲(chǔ)器122,用于存放程序124,存儲(chǔ)器124可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器??梢岳斫獾氖?,存儲(chǔ)器124可以為隨機(jī)存儲(chǔ)器(Random-Access Memory, RAM)、磁碟、硬盤、光盤、固態(tài)硬盤(Solid State Disk, SSD)或者非易失性存儲(chǔ)器等各種可以存儲(chǔ)程序代碼的非短暫性的(non-transitory)機(jī)器可讀介質(zhì)。
[0045]程序124可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。
[0046]緩存120 (Cache)用于緩存從主機(jī)100接收的數(shù)據(jù)以及緩存從磁盤陣列125讀取的數(shù)據(jù),以提高陣列的性能和可靠性。緩存120可以是RAM、R0M、閃存(Flash memory)或固態(tài)硬盤(Solid State Disk, SSD)等各種可以存儲(chǔ)數(shù)據(jù)的非短暫性的(non-transitory)機(jī)器可讀介質(zhì),在此不做限定。
[0047]處理器118可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。在處理器118中安裝有操作系統(tǒng)和其他軟件程序,不同的軟件程序可以視作一個(gè)處理模塊,具有不同的功能。例如,處理對(duì)磁盤130的輸入/輸出(Input/Output, 1/0)請(qǐng)求,對(duì)磁盤中的數(shù)據(jù)進(jìn)行其他處理,或者修改存儲(chǔ)設(shè)備中保存的元數(shù)據(jù)等等。從而使控制器115可以實(shí)現(xiàn)10操作、RAID管理功能,還能夠提供如快照、鏡像、復(fù)制等各種的數(shù)據(jù)管理功能。在本發(fā)明實(shí)施例中,處理器118用于執(zhí)行程序124,具體可以執(zhí)行下述方法實(shí)施例中的相關(guān)步驟。
[0048]磁盤陣列125用于存儲(chǔ)數(shù)據(jù),在本發(fā)明實(shí)施例中,磁盤陣列125的組織形式為帶校驗(yàn)的RAID方式,例如:RAID3、RAID4、RAID5或RAID6等,在此不做限定。
[0049]結(jié)合圖1,任意一個(gè)存儲(chǔ)設(shè)備110均可以通過(guò)連接設(shè)備105接收一個(gè)或多個(gè)主機(jī)100發(fā)送的多個(gè)文件,并將接收的多個(gè)文件分成多個(gè)數(shù)據(jù)塊并存儲(chǔ)在構(gòu)成磁盤陣列125的多個(gè)磁盤130中。任意一個(gè)存儲(chǔ)設(shè)備110也可以接收任意一個(gè)主機(jī)100發(fā)送的文件讀取請(qǐng)求,根據(jù)文件讀取請(qǐng)求將磁盤130中存儲(chǔ)的文件的數(shù)據(jù)塊返回給主機(jī)100。
[0050]需要說(shuō)明的是,磁盤130僅僅是構(gòu)建磁盤陣列125的存儲(chǔ)器的一種示例,實(shí)際應(yīng)用中,還可以在包含多個(gè)磁盤的機(jī)柜之間構(gòu)建磁盤陣列等實(shí)施方式。因此,本發(fā)明實(shí)施例中的存儲(chǔ)器可以包括磁盤、固態(tài)硬盤(Solid State Drives, SSD)、由多個(gè)磁盤構(gòu)成的機(jī)柜或服務(wù)器等裝置,在此不做限定。
[0051]圖3為本發(fā)明實(shí)施例所示的一種文件處理方法的流程圖,該方法可以由圖2所示的存儲(chǔ)設(shè)備110的控制器115來(lái)執(zhí)行,該方法可以應(yīng)用于文件歸檔的場(chǎng)景中。該方法主要應(yīng)用于分布式校驗(yàn)的RAID組織形式中,其中,分布式校驗(yàn)的RAID組織形式包括但不限于RAID5和RAID6。如圖3所示,該方法包括:
[0052]在步驟300中,存儲(chǔ)設(shè)備110接收待存儲(chǔ)于RAID中的T個(gè)文件,所述T的值為不小于3的自然數(shù),且所述T的值等于構(gòu)建所述RAID的存儲(chǔ)器的數(shù)量。
[0053]在本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備110的控制器115可以接收一個(gè)或多個(gè)主機(jī)100發(fā)送的文件存儲(chǔ)請(qǐng)求,該文件存儲(chǔ)請(qǐng)求用于請(qǐng)求將文件存儲(chǔ)于RAID中,該文件存儲(chǔ)請(qǐng)求中可以包含有待存儲(chǔ)的一個(gè)或多個(gè)文件。
[0054]結(jié)合圖2所示,在存儲(chǔ)設(shè)備110中可以包括多個(gè)RAID,且每個(gè)RAID中應(yīng)該包括不少于3個(gè)磁盤??梢岳斫獾氖?,同一個(gè)存儲(chǔ)設(shè)備110中包含的多個(gè)RAID的組織形式可以相同,例如,所有RAID都是RAID5的組織形式。當(dāng)然,同一個(gè)存儲(chǔ)設(shè)備110中包含的多個(gè)RAID的組織形式也可以不同,例如,如果存儲(chǔ)設(shè)備110中包含有兩個(gè)RAID,則一個(gè)RAID可以為RAID3,另一個(gè)RAID可以為RAID5。在此并不限定。本發(fā)明實(shí)施例以存儲(chǔ)設(shè)備110中的一個(gè)RAID為例進(jìn)行說(shuō)明。
[0055]可以理解的是,存儲(chǔ)設(shè)備110可以接收到T個(gè)文件即對(duì)該T個(gè)文件進(jìn)行處理。存儲(chǔ)設(shè)備Iio也可以先將接收的多個(gè)文件在緩存120中進(jìn)行緩存,等達(dá)到存儲(chǔ)時(shí)限時(shí),再?gòu)慕邮盏亩鄠€(gè)文件中任意選擇T個(gè)文件進(jìn)行處理。其中,T的值等于所述RAID的中的磁盤的數(shù)量。例如,所述RAID中包含有4個(gè)磁盤,則存儲(chǔ)設(shè)備110可以對(duì)接收的4個(gè)文件同時(shí)進(jìn)行處理。
[0056]存儲(chǔ)時(shí)限是預(yù)先設(shè)定的需要將文件寫入構(gòu)建RAID的磁盤的時(shí)限。例如,可以規(guī)定I小時(shí)存儲(chǔ)一次,則存儲(chǔ)時(shí)限為I小時(shí)。存儲(chǔ)時(shí)限可以根據(jù)需要寫入磁盤的數(shù)據(jù)量等實(shí)際情況來(lái)確定,可以I天存儲(chǔ)一次也可以10分鐘存儲(chǔ)一次,在此不做限定。
[0057]在步驟305中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào)。其中,本發(fā)明實(shí)施例中描述的分條(stripe),是指并行寫入構(gòu)建RAID的各個(gè)存儲(chǔ)器上的數(shù)據(jù)塊的集合,其中,分條中的各個(gè)數(shù)據(jù)塊的大小相同,且同一個(gè)分條上的數(shù)據(jù)塊位于各個(gè)存儲(chǔ)器中的偏移位置相同。分條上的數(shù)據(jù)塊也稱為條帶(strip),條帶是一個(gè)盤區(qū)上的連續(xù)地址塊。在磁盤陣列中,控制器通常采用條帶將虛擬磁盤的塊地址(block addresses)映射到成員盤的塊地址。條帶也被稱為分條元素(stripe element)。
[0058]在具體操作中,存儲(chǔ)設(shè)備110可以根據(jù)所述RAID的組織形式確定校驗(yàn)塊在一個(gè)分條中的序號(hào)。這里的序號(hào)是指校驗(yàn)塊在分條中的位置的編號(hào)。在本發(fā)明實(shí)施例中,分條中的位置的編號(hào)是以從I開始依次遞增I的形式編號(hào)的。例如,如圖4-A所示,分條I中包括數(shù)據(jù)塊1、數(shù)據(jù)塊2和數(shù)據(jù)塊3的校驗(yàn)塊1,數(shù)據(jù)塊I的序號(hào)為1,數(shù)據(jù)塊2的序號(hào)為2,數(shù)據(jù)塊3的序號(hào)為3,校驗(yàn)塊I位于分條I的第4個(gè)位置,則校驗(yàn)塊I的序號(hào)則為4。分條2中包括數(shù)據(jù)塊4、數(shù)據(jù)塊5、校驗(yàn)塊2和數(shù)據(jù)塊6,其中,校驗(yàn)塊2位于分條2中的第3個(gè)位置,則校驗(yàn)塊2的序號(hào)為3??梢岳斫獾氖?,分條上的序號(hào)是與所述RAID中的成員盤的序號(hào)相對(duì)應(yīng)的。例如,校驗(yàn)塊在分條上的序號(hào)為4,則該校驗(yàn)塊可能被寫入所述RAID中第4個(gè)成員盤上。
[0059]在分布式校驗(yàn)的RAID中,具體的校驗(yàn)塊在條帶中如何分布,可以按照所述第一RAID的組織方式和設(shè)置的校驗(yàn)塊分布方式來(lái)確定。例如,RAID5中校驗(yàn)塊在磁盤上的分布方式可以為向左對(duì)稱(backward parity或Left Synchronous)、向左非對(duì)稱(backwarddynamic 或 Left Asynchronous)、向右對(duì)稱(forward parity 或 Right Synchronous)或向右非對(duì)稱(forward dynamic或Right Asynchronous)。其中,“左”或“右”是指校驗(yàn)信息如何分布,而“對(duì)稱”或“非對(duì)稱”是指數(shù)據(jù)如何分布。在“左”的算法中,校驗(yàn)塊從最后一個(gè)磁盤開始,每一個(gè)分條將校驗(yàn)塊向靠近第一個(gè)磁盤的方向移動(dòng)一個(gè)磁盤的位置(必要時(shí)重復(fù)循環(huán)分布)。而“右”算法中,校驗(yàn)塊從第一個(gè)磁盤開始,每一個(gè)分條將校驗(yàn)塊向靠近最后一個(gè)磁盤的方向移動(dòng)一個(gè)磁盤的位置(必要時(shí)重復(fù)循環(huán)分布)。RAID6在RAID5的基礎(chǔ)上又增加了 一組校驗(yàn)塊。
[0060]在步驟310中,存儲(chǔ)設(shè)備110獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由I遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào)。[0061]例如,RAID中共有4個(gè)磁盤,如果在步驟305中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在當(dāng)前分條中的序號(hào)為如圖4-A所示的分條I中的序號(hào):4。則在步驟310中,存儲(chǔ)設(shè)備110在對(duì)接收的4個(gè)文件:F1、F2、F3和F4進(jìn)行處理時(shí),K的值由I開始依次遞增1,可以理解的是,K的值不能大于T。并且由于需要在分條中為校驗(yàn)塊預(yù)留位置,因此,在本發(fā)明實(shí)施例中,K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào)。換句話說(shuō),存儲(chǔ)設(shè)備110可以依次從第I個(gè)文件開始獲取分條中相應(yīng)位置的數(shù)據(jù)塊,但存儲(chǔ)設(shè)備HO不會(huì)從與所述校驗(yàn)塊在該分條中的序號(hào)的值對(duì)應(yīng)的文件中獲取數(shù)據(jù)塊。例如,將第I個(gè)文件Fl中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條I中的第I個(gè)數(shù)據(jù)塊(如圖4-A所示的分條I中的數(shù)據(jù)塊1),將第2個(gè)文件F2中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條I中的第2個(gè)數(shù)據(jù)塊(如圖4-A所示的分條I中的數(shù)據(jù)塊2),將第3個(gè)文件F3中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條I中的第3個(gè)數(shù)據(jù)塊(如圖4-A所示的分條I中的數(shù)據(jù)塊3)。由于K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào),因此,在步驟310中,存儲(chǔ)設(shè)備110不會(huì)獲取第4個(gè)文件F4中的數(shù)據(jù)塊。
[0062]可以理解的是,如果在步驟305中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在當(dāng)前分條中的序號(hào)為如圖4-A所示的分條2中的序號(hào):3。則在步驟310中,存儲(chǔ)設(shè)備110可以將第I個(gè)文件Fl中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條I中的第I個(gè)數(shù)據(jù)塊(如圖4-A所示的分條2中的數(shù)據(jù)塊4),將第2個(gè)文件F2中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條I中的第2個(gè)數(shù)據(jù)塊(如圖4-A所示的分條2中的數(shù)據(jù)塊5),將第4個(gè)文件F4中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為分條2中的第4個(gè)數(shù)據(jù)塊(如圖4-A所示的分條2中的數(shù)據(jù)塊6)。在這種情況下,由于校驗(yàn)塊位于分條2中的序號(hào)為3,因此,存儲(chǔ)設(shè)備110不會(huì)獲取第3個(gè)文件F3中的數(shù)據(jù)塊。
[0063]需要說(shuō)明的是,在本發(fā)明實(shí)施例中,并不對(duì)分條中校驗(yàn)塊的個(gè)數(shù)進(jìn)行限定??梢岳斫獾氖?,如果所述RAID的一個(gè)分條中包含有I個(gè)校驗(yàn)塊,且該校驗(yàn)塊在分條中的序號(hào)為3,則存儲(chǔ)設(shè)備110不會(huì)獲取第3個(gè)文件中的數(shù)據(jù)塊。如果所述RAID的一個(gè)分條中包含有2個(gè)校驗(yàn)塊,且這兩個(gè)校驗(yàn)塊在分條中的序號(hào)分別為3和4,則存儲(chǔ)設(shè)備110不會(huì)從第3個(gè)文件和第4個(gè)文件中獲取數(shù)據(jù)塊。
[0064]在本發(fā)明實(shí)施例中描述的數(shù)據(jù)塊是指由多個(gè)數(shù)據(jù)組成的數(shù)據(jù)單元。本發(fā)明實(shí)施例中描述的校驗(yàn)塊是指由校驗(yàn)數(shù)據(jù)組成的數(shù)據(jù)單元。由于從不同文件中獲取的數(shù)據(jù)塊被組成RAID中的一個(gè)分條,因此,可以理解的是,存儲(chǔ)設(shè)備110可以按照所述RAID的條帶大小(strip size)從文件中獲取數(shù)據(jù)塊。換句話說(shuō),數(shù)據(jù)塊的大小等于所述RAID的條帶大小。其中,條帶大小(strip size),有時(shí)也被叫做block size, chunk size 或者 granularity,指的是寫在每塊磁盤上的數(shù)據(jù)塊的大小。通常,RAID的條帶大小一般在2KB到512KB之間(或者更大),其數(shù)值是2的η次方,即2KB, 4KB, 8KB, 16ΚΒ等。
[0065]可以理解的是,在實(shí)際應(yīng)用中,可以按照文件的起始地址以及條帶大小從文件中獲取數(shù)據(jù)塊,還可以預(yù)先將接收的T個(gè)文件分別按照所述RAID的條帶大小切分為至少2個(gè)數(shù)據(jù)塊。在對(duì)文件進(jìn)行切分時(shí),如果有個(gè)文件的大小小于條帶大小,可以將該文件作為一個(gè)數(shù)據(jù)塊。如果某個(gè)文件切分后剩下的數(shù)據(jù)小于條帶大小,則將該文件剩下的數(shù)據(jù)作為一個(gè)數(shù)據(jù)塊。例如,如圖4-B所示,控制器115將接收到的4個(gè)待存儲(chǔ)的文件F1-F4按照所述RAID的條帶大小進(jìn)行切分。將文件Fl切分為5個(gè)數(shù)據(jù)塊:F1-1、F1-2、F1-3、F1_4和F1-5。將文件F2切分為3個(gè)數(shù)據(jù)塊:F2-l、F2-2和F2-3。將文件F3切分為一個(gè)數(shù)據(jù)塊:F3_1。將文件F4切分為5個(gè)數(shù)據(jù)塊:?4-1、?4-2、?4-3、?4-4和?4-5。在步驟310中,存儲(chǔ)設(shè)備110可以直接獲取各個(gè)文件中未寫入磁盤的數(shù)據(jù)塊,將其作為分條上對(duì)應(yīng)位置的數(shù)據(jù)塊。例如,在確定如圖4-A中所示的分條I中的數(shù)據(jù)塊時(shí),可以將Fl-1作為分條I中的數(shù)據(jù)塊1,將F2-1作為分條I中的數(shù)據(jù)塊2,將F3-1作為分條I中的數(shù)據(jù)塊3。
[0066]需要說(shuō)明的是,在獲取文件的數(shù)據(jù)塊時(shí),可以獲取文件中任意一塊未寫入磁盤中的數(shù)據(jù)塊作為分條中與所述文件對(duì)應(yīng)位置的數(shù)據(jù)塊。例如,如果Fl中的數(shù)據(jù)塊均為未寫入磁盤的數(shù)據(jù)塊,則可以將Fl-1、Fl-2、Fl-3、F1-4或F1-5任意一塊數(shù)據(jù)塊作為分條I中的數(shù)據(jù)塊I。
[0067]在步驟315中,存儲(chǔ)設(shè)備110根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊。當(dāng)獲得分條中的數(shù)據(jù)塊后,存儲(chǔ)設(shè)備110可以根據(jù)所述RAID的校驗(yàn)算法對(duì)該分條中的數(shù)據(jù)塊進(jìn)行校驗(yàn)計(jì)算,獲得該分條的校驗(yàn)塊,并將獲得的校驗(yàn)塊作為該分條中與在步驟305中確定的序號(hào)對(duì)應(yīng)位置的檢驗(yàn)塊??梢岳斫獾氖?,RAID的校驗(yàn)算法包括但不限于奇偶校驗(yàn)算法。
[0068]在步驟320中,存儲(chǔ)設(shè)備110將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。具體的,存儲(chǔ)設(shè)備110可以將該分條中的數(shù)據(jù)塊以及校驗(yàn)塊并行寫入構(gòu)建所述RAID的T個(gè)磁盤中。例如,如果F1-1、F2-1、F3-1以及根據(jù)Fl_l、F2-1和F3-1計(jì)算獲得的校驗(yàn)塊I組成圖4-A中的分條I,則可以將Fl-1、F2_l、F3-1以及校驗(yàn)塊I并行寫入構(gòu)建所述RAID的4個(gè)磁盤中。從而形成如圖4-C中所示的分條I的存儲(chǔ)結(jié)構(gòu)。
[0069]可以理解的是,當(dāng)寫完分條I后,存儲(chǔ)設(shè)備110可以繼續(xù)獲取分條2上的數(shù)據(jù)塊,并根據(jù)獲取的數(shù)據(jù)塊獲得分條2的校驗(yàn)塊,并將分條2上的數(shù)據(jù)塊和校驗(yàn)塊并行寫入磁盤中,從而可以形成如圖4-C中所示的分條2的存儲(chǔ)結(jié)構(gòu)。依次類推,直到將所有文件均存儲(chǔ)到磁盤中。
[0070]可以理解的是,在本發(fā)明實(shí)施例中,當(dāng)將文件中的某個(gè)數(shù)據(jù)塊寫入磁盤后,可以將該數(shù)據(jù)塊標(biāo)記為已寫入磁盤的數(shù)據(jù)塊或?qū)⒃撘褜懭氪疟P的數(shù)據(jù)塊從文件中刪除,以便在獲取下一個(gè)分條中的數(shù)據(jù)塊時(shí),可以識(shí)別該文件中的未寫入磁盤的數(shù)據(jù)塊。在本發(fā)明實(shí)施例中,對(duì)如何識(shí)別文件中未寫入磁盤的數(shù)據(jù)塊的方法不做限定。
[0071]由上述描述可知,在本發(fā)明實(shí)施例所述的文件處理方法中,存儲(chǔ)設(shè)備110通過(guò)確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào),將接收的T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的取值不等于所述校驗(yàn)塊在該分條中的序號(hào)。在從文件中獲取數(shù)據(jù)塊后,存儲(chǔ)設(shè)備110根據(jù)獲取的該分條中的數(shù)據(jù)塊計(jì)算獲得該分條中的校驗(yàn)塊,并將該分條中的數(shù)據(jù)塊和校驗(yàn)塊寫入構(gòu)建所述RAID的磁盤中。通過(guò)這種方法,由于存儲(chǔ)設(shè)備110在將文件寫入磁盤前可以將同一個(gè)文件的數(shù)據(jù)塊與分條中同一個(gè)位置對(duì)應(yīng),進(jìn)而可以將同一個(gè)文件的數(shù)據(jù)塊與所述RAID中的同一個(gè)磁盤對(duì)應(yīng),因此,存儲(chǔ)設(shè)備110可以將同一個(gè)文件的所有數(shù)據(jù)塊寫入同一個(gè)磁盤中。在歸檔的應(yīng)用場(chǎng)景中,當(dāng)需要訪問(wèn)利用本發(fā)明實(shí)施例所述的文件處理方法存儲(chǔ)于RAID中的某一個(gè)文件時(shí),可以不用將整個(gè)RAID中的磁盤都喚醒或上電,只需要對(duì)存儲(chǔ)有該文件的一個(gè)磁盤進(jìn)行操作,從而能夠達(dá)到顯著的節(jié)能效果。
[0072]此外,在本發(fā)明實(shí)施例所述的文件處理方法中,存儲(chǔ)設(shè)備110將不同文件的數(shù)據(jù)塊構(gòu)成一個(gè)分條寫入磁盤。當(dāng)某個(gè)數(shù)據(jù)塊被損壞時(shí),存儲(chǔ)設(shè)備110可以通過(guò)同一個(gè)分條中的校驗(yàn)塊和其他文件的數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行恢復(fù)。從而在保證了文件的寫入效率的基礎(chǔ)上保證了文件存儲(chǔ)的安全性。
[0073]圖5為本發(fā)明實(shí)施例提供的又一種文件處理方法的流程圖,該方法可以由圖2所示的存儲(chǔ)設(shè)備110的控制器115來(lái)執(zhí)行,該方法可以應(yīng)用于文件歸檔的場(chǎng)景中。本發(fā)明實(shí)施例以包含4個(gè)磁盤的RAID為例進(jìn)行描述。下面將結(jié)合圖2、圖4-B和圖4-C對(duì)圖5進(jìn)行描述。如圖5所示,該方法包括:
[0074]在步驟400中,接收待存儲(chǔ)于RAID中的T個(gè)文件。
[0075]在步驟405中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào)。
[0076]步驟400與圖3中的步驟300類似,步驟405與圖3中的步驟305類似,因而可以參見步驟300和步驟305的相關(guān)描述,此處不再贅述。
[0077]在步驟410中,存儲(chǔ)設(shè)備110判斷所述T個(gè)文件中的第K個(gè)文件中是否存在未寫入磁盤的數(shù)據(jù)塊。如果第K個(gè)文件中存在未寫入磁盤的數(shù)據(jù)塊,則進(jìn)入步驟415,否則進(jìn)入步驟420。在一種情形下,如果在步驟405中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在所述RAID中的一個(gè)分條的序號(hào)不為I,則在本步驟中,可以先令K的初始值為I。換句話說(shuō),存儲(chǔ)設(shè)備110首先需要判斷T個(gè)文件中第I個(gè)文件是否存在未寫入磁盤的數(shù)據(jù)塊,如果第I個(gè)文件中存在未寫入磁盤的數(shù)據(jù)塊,則進(jìn)入步驟415,否則,進(jìn)入步驟420。在另一種情形下,如果在步驟405中,存儲(chǔ)設(shè)備110確定校驗(yàn)塊在所述RAID中的一個(gè)分條的序號(hào)為I,則在本步驟中,可以令K的初始值為2。換句話說(shuō),存儲(chǔ)設(shè)備110需要判斷第2個(gè)文件是否存在未寫入磁盤的數(shù)據(jù)塊,如果第2個(gè)文件中存在未寫入磁盤的數(shù)據(jù)塊,則進(jìn)入步驟415,否則,進(jìn)入步驟420。換一種表達(dá)方式,如果所述校驗(yàn)塊在一個(gè)分條中的序號(hào)不為1,則存儲(chǔ)設(shè)備需要從第I個(gè)文件開始獲取一個(gè)分條中的數(shù)據(jù)塊。如果所述校驗(yàn)塊在一個(gè)分條中的序號(hào)為I,則存儲(chǔ)設(shè)備需要從第2個(gè)文件開始獲取一個(gè)分條中的數(shù)據(jù)塊。
[0078]可以理解的是,在本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備110可以通過(guò)對(duì)已寫入磁盤的數(shù)據(jù)塊進(jìn)行標(biāo)識(shí)或?qū)⒁褜懭氪疟P的數(shù)據(jù)塊從文件中刪除的方法對(duì)文件中的已寫入磁盤的數(shù)據(jù)塊進(jìn)行識(shí)別,從而存儲(chǔ)設(shè)備110能夠?qū)ξ募形磳懭氪疟P的數(shù)據(jù)塊進(jìn)行識(shí)別。在此不對(duì)存儲(chǔ)設(shè)備110如何識(shí)別文件中未寫入磁盤的數(shù)據(jù)塊的方法進(jìn)行限定。
[0079]在步驟415中,存儲(chǔ)設(shè)備110獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入磁盤的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào)。換句話說(shuō),當(dāng)存儲(chǔ)設(shè)備110在獲取文件的數(shù)據(jù)塊時(shí),存儲(chǔ)設(shè)備110不能獲取與校驗(yàn)塊在分條中的序號(hào)對(duì)應(yīng)的文件的數(shù)據(jù)塊,以便能夠在所述分條中為所述校驗(yàn)數(shù)據(jù)預(yù)留相應(yīng)的位置。步驟415的具體描述可以參見圖3中步驟310的相關(guān)描述。
[0080]在步驟420中,存儲(chǔ)設(shè)備110判斷是否接收有除所述T個(gè)文件之外的其他文件。實(shí)際應(yīng)用中,若存儲(chǔ)設(shè)備110在步驟410中判斷所述T個(gè)文件中的第K個(gè)文件中不存在未寫入磁盤的數(shù)據(jù)塊,則說(shuō)明第K個(gè)文件已經(jīng)全部存儲(chǔ)于磁盤中。存儲(chǔ)設(shè)備110需要進(jìn)一步判斷是否接收有需要存入構(gòu)建所述RAID的磁盤中的除所述T個(gè)文件之外的其他文件。如果存儲(chǔ)設(shè)備110接收了除所述T個(gè)文件之外的其他文件,則該方法進(jìn)入步驟423,否則該方法進(jìn)入步驟430。
[0081 ] 例如,如圖4-B和圖4-C所示,在圖4-B所示的4個(gè)文件中,第3個(gè)文件F3比較小,F(xiàn)3被作為一個(gè)數(shù)據(jù)塊F3-1。當(dāng)數(shù)據(jù)塊F1-1、F2-1、F3-1以及校驗(yàn)塊Pl組成分條I被寫入構(gòu)建RAID中的4個(gè)磁盤后,存儲(chǔ)設(shè)備110在確定分條3上的數(shù)據(jù)塊時(shí),由于校驗(yàn)塊P3在分條3中的序號(hào)為2,因此分條3需要將第三個(gè)文件F3中的未寫入磁盤的數(shù)據(jù)塊作為分條3中第3個(gè)數(shù)據(jù)塊。由于文件F3中的數(shù)據(jù)塊F3-1已經(jīng)被寫入分條I中,文件F3已經(jīng)沒有未寫入磁盤中的數(shù)據(jù)塊,因此存儲(chǔ)設(shè)備110需要判斷是否接收到除所述文件F1-F4之外的其他文件,例如,在圖4-B所示的例子中,存儲(chǔ)設(shè)備110需要判斷是否接收到第5個(gè)文件F5。
[0082]在步驟423中,存儲(chǔ)設(shè)備110從除T個(gè)文件之外的其他文件中選擇一個(gè)文件。具體的,存儲(chǔ)設(shè)備110可以從接收的其他文件中任意選擇一個(gè)文件。
[0083]在步驟425中,存儲(chǔ)設(shè)備110將選擇的文件中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。實(shí)際應(yīng)用中,在一種情形下,當(dāng)所述T個(gè)文件中的第K個(gè)文件已經(jīng)全部寫入磁盤中時(shí),若存儲(chǔ)設(shè)備Iio接收到需要存入構(gòu)建所述RAID的磁盤中的除所述T個(gè)文件之外的其他文件,則存儲(chǔ)設(shè)備110可以將其他文件中任意一個(gè)文件的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。根據(jù)這種方式,存儲(chǔ)設(shè)備110可以將接收的其他文件中的任意一個(gè)文件的數(shù)據(jù)塊與所述T個(gè)文件中其他未寫入磁盤的文件的數(shù)據(jù)塊一起構(gòu)成一個(gè)分條寫入磁盤中。例如,在上述示例中,若存儲(chǔ)設(shè)備110接收到待存儲(chǔ)于所述RAID中的第5個(gè)文件F5,則存儲(chǔ)設(shè)備110可以將文件F5中的一個(gè)未寫入磁盤的數(shù)據(jù)塊F5-1作為分條3中序號(hào)為3的位置的數(shù)據(jù)塊,并進(jìn)入步驟435,將數(shù)據(jù)塊F5-1與文件Fl及F4中的數(shù)據(jù)塊一起組成分條3上的數(shù)據(jù)塊。具體可以參見如圖4-C中所示的分條3的結(jié)構(gòu)。
[0084]在步驟430中,存儲(chǔ)設(shè)備110將所述分條中的第K個(gè)數(shù)據(jù)塊填充為O。實(shí)際應(yīng)用中,在另一種情形下,當(dāng)存儲(chǔ)設(shè)備110在步驟420中判斷沒有接收到需要存儲(chǔ)在所述RAID中的除所述T個(gè)文件之外的其他文件時(shí),則在步驟430中,存儲(chǔ)設(shè)備110可以將所述分條中的第K個(gè)數(shù)據(jù)塊填充為0,用于表明該數(shù)據(jù)塊沒有使用。
[0085]在步驟435中,存儲(chǔ)設(shè)備110判斷K的值是否大于T。如果K的值不大于T,則進(jìn)入步驟440,否則,進(jìn)入步驟445。
[0086]在步驟440中,存儲(chǔ)設(shè)備110令K=K+1。換句話說(shuō),存儲(chǔ)設(shè)備110將變量K的值設(shè)置為Κ+1的值,并返回步驟410,開始獲取所述分條中的下一個(gè)數(shù)據(jù)塊。通過(guò)步驟410、步驟415、步驟435和步驟440,存儲(chǔ)設(shè)備110可以獲取除與校驗(yàn)塊在分條中的序號(hào)對(duì)應(yīng)的文件外的其他文件中的數(shù)據(jù)塊,進(jìn)而能夠獲得所述分條中的所有數(shù)據(jù)塊。
[0087]在步驟445中,存儲(chǔ)設(shè)備110根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊。本步驟的具體描述可以參見圖3中步驟315的相關(guān)描述。
[0088]在步驟450中,存儲(chǔ)設(shè)備110將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)磁盤中。本步驟的具體描述可以參見圖3中步驟320的相關(guān)描述。
[0089]在步驟455中,存儲(chǔ)設(shè)備110判斷判斷是否存在未全部寫入所述RAID的磁盤中的文件。如果所述T個(gè)文件中存在未全部存儲(chǔ)于磁盤的文件,換句話說(shuō),如果文件沒有存完,則返回步驟405,存儲(chǔ)設(shè)備110繼續(xù)確定校驗(yàn)塊在下一個(gè)分條中的序號(hào),并獲取下一個(gè)分條中的數(shù)據(jù)塊,以便將下一個(gè)分條中的數(shù)據(jù)塊和校驗(yàn)塊寫入磁盤中。若在步驟455中,存儲(chǔ)設(shè)備110判斷所有待存儲(chǔ)于所述RAID中的文件已經(jīng)全部存儲(chǔ)完畢,則該方法進(jìn)入步驟460,結(jié)束存儲(chǔ)流程。通過(guò)圖5所示的文件處理方法,將文件存儲(chǔ)到RAID中后可以將同一個(gè)文件存儲(chǔ)于RAID的同一個(gè)磁盤中,具體的存儲(chǔ)結(jié)構(gòu)可以如圖4-C所示。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,圖5所述實(shí)施例中的部分步驟的描述可以參見圖3所示的實(shí)施例中的相應(yīng)過(guò)程的具體描述。
[0090]在另一種情形下,當(dāng)RAID為帶獨(dú)立校驗(yàn)盤的RAID組織形式時(shí),例如,當(dāng)RAID為RAID3或RAID4時(shí),控制器115可以按照?qǐng)D6所示的方法進(jìn)行文件存儲(chǔ)。本發(fā)明實(shí)施例以包括4個(gè)成員盤的RAID為例進(jìn)行描述,且該RAID的組織形式為RAID3,其中,所述RAID中包含有3個(gè)數(shù)據(jù)盤以及I個(gè)獨(dú)立校驗(yàn)盤。本領(lǐng)域人員可以知道,數(shù)據(jù)盤是指在陣列中用于存儲(chǔ)數(shù)據(jù)塊的成員盤,獨(dú)立校驗(yàn)盤是指陣列中專門用于存儲(chǔ)校驗(yàn)塊的成員盤。下面將結(jié)合圖
2、圖4-B和圖6-A對(duì)圖6進(jìn)行描述。如圖6所示,該方法包括:
[0091]在步驟600中,存儲(chǔ)設(shè)備110接收待存儲(chǔ)于所述RAID中的D個(gè)文件。其中D的值等于所述RAID中數(shù)據(jù)盤的數(shù)量。例如,在如上所述的包含4個(gè)成員盤的RAID中,若該RAID為RAID3的組織形式,則該RAID中的數(shù)據(jù)盤的數(shù)量為3,獨(dú)立校驗(yàn)盤的數(shù)量為I。
[0092]可以理解的是,存儲(chǔ)設(shè)備110可以接收到D個(gè)文件即對(duì)該D個(gè)文件進(jìn)行處理。存儲(chǔ)設(shè)備Iio也可以先將接收的多個(gè)文件在緩存120中進(jìn)行緩存,等達(dá)到存儲(chǔ)時(shí)限時(shí),再?gòu)慕邮盏亩鄠€(gè)文件中任意選擇D個(gè)文件進(jìn)行處理。例如,如圖4-B所示,存儲(chǔ)設(shè)備110可以從接收的待存儲(chǔ)于所述RAID中的4個(gè)文件:F1、F2、F3和F4中選擇3個(gè)文件:F1_F3進(jìn)行處理。
[0093]在步驟605中,存儲(chǔ)設(shè)備110獲取所述D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,K的取值分別由I遞增到D。
[0094]由于本發(fā)明實(shí)施例中的RAID為帶獨(dú)立校驗(yàn)盤的RAID組織方式,因此在本步驟中,存儲(chǔ)設(shè)備110在獲取分條上的數(shù)據(jù)塊時(shí),需要為寫入獨(dú)立校驗(yàn)盤的校驗(yàn)塊預(yù)留位置。存儲(chǔ)設(shè)備110可以將所述第K個(gè)文件中的一個(gè)未寫入數(shù)據(jù)盤的數(shù)據(jù)塊作為所述分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)盤的數(shù)據(jù)塊。例如,在如圖6-A所示RAID中,成員盤Dl、D2和D3均為數(shù)據(jù)盤,成員盤D4為獨(dú)立校驗(yàn)盤。存儲(chǔ)設(shè)備110在獲取分條上的數(shù)據(jù)時(shí),首先令K的初始值為1,并在獲取一個(gè)數(shù)據(jù)塊之后令K的值以依次遞增I的方式遞增,但K的值不大于D。根據(jù)這種方式,存儲(chǔ)設(shè)備HO將從第I個(gè)文件開始獲取數(shù)據(jù)塊,然后依次獲取第2-3個(gè)文件中的數(shù)據(jù)塊。如圖4-B所示,存儲(chǔ)設(shè)備110可以依次將第I個(gè)文件Fl中的數(shù)據(jù)塊Fl-1作為分條I中待寫入第I個(gè)數(shù)據(jù)盤Dl的數(shù)據(jù)塊,將第2個(gè)文件F2中的數(shù)據(jù)塊F2-1作為分條I中待寫入第2個(gè)數(shù)據(jù)盤D2的數(shù)據(jù)塊,并且將第3個(gè)文件F3中的數(shù)據(jù)塊F3-1作為分條I中待寫入第3個(gè)數(shù)據(jù)盤D3的數(shù)據(jù)塊。需要說(shuō)明的是,本發(fā)明實(shí)施例中并不對(duì)獨(dú)立校驗(yàn)盤在RAID中的位置進(jìn)行限定,例如可以將成員盤D3作為獨(dú)立校驗(yàn)盤,將成員盤D4為所述RAID中的第3個(gè)數(shù)據(jù)盤。
[0095]在步驟610中,存儲(chǔ)設(shè)備110根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊。例如,當(dāng)獲得圖6-A中分條I中的三個(gè)數(shù)據(jù)塊:F1-1、F2-1和F3-1后,可以根據(jù)所述RAID的校驗(yàn)算法對(duì)分條I中的三個(gè)數(shù)據(jù)塊進(jìn)行校驗(yàn)計(jì)算,獲得分條I中的校驗(yàn)塊Pl。需要說(shuō)明的是,在具有獨(dú)立校驗(yàn)盤的RAID中,分條上的校驗(yàn)塊的個(gè)數(shù)與具體的RAID組織形式有關(guān)。例如,RAID3有I個(gè)獨(dú)立校驗(yàn)盤,則I個(gè)分條上具有I個(gè)校驗(yàn)塊。RAID4具有兩個(gè)獨(dú)立校驗(yàn)盤,則I個(gè)分條上具有2個(gè)校驗(yàn)塊。本發(fā)明實(shí)施例并不對(duì)RAID的組織形式進(jìn)行具體限定,并且也不對(duì)分條中的校驗(yàn)塊的個(gè)數(shù)進(jìn)行限定。此外,本發(fā)明實(shí)施例中的校驗(yàn)算法包括但不限于奇偶校驗(yàn)算法。
[0096]在步驟615中,存儲(chǔ)設(shè)備110將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)存儲(chǔ)器,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器中。例如,存儲(chǔ)設(shè)備Iio可以將分條I中的3個(gè)數(shù)據(jù)塊以及I個(gè)校驗(yàn)塊并行寫入所述RAID的成員盤中。本領(lǐng)域人員可以知道,在將分條上的數(shù)據(jù)塊和校驗(yàn)塊寫入成員盤中,在具有獨(dú)立校驗(yàn)盤的RAID中,需要將數(shù)據(jù)塊寫入數(shù)據(jù)盤,將分條中的校驗(yàn)塊寫入獨(dú)立校驗(yàn)盤。當(dāng)將數(shù)據(jù)寫入磁盤后,可以形成如圖6-A所示的分條I中的存儲(chǔ)結(jié)構(gòu)。
[0097]在圖6所示的實(shí)施例中,存儲(chǔ)設(shè)備110將D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)盤的數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)盤的數(shù)據(jù)塊。通過(guò)這種方式,將同一個(gè)文件的數(shù)據(jù)塊與RAID中的同一個(gè)數(shù)據(jù)盤相對(duì)應(yīng),進(jìn)而可以將屬于同一個(gè)文件的所有數(shù)據(jù)塊均寫入同一個(gè)數(shù)據(jù)盤中。在歸檔的應(yīng)用場(chǎng)景中,當(dāng)需要訪問(wèn)該RAID中的某一個(gè)文件時(shí),可以不用將整個(gè)RAID中的磁盤都喚醒,只需要喚醒存儲(chǔ)有該文件的一個(gè)磁盤,從而能夠起到節(jié)能的效果。
[0098]此外,在圖6所述的文件處理方法中,存儲(chǔ)設(shè)備110將不同文件的數(shù)據(jù)塊構(gòu)成一個(gè)分條寫入磁盤。當(dāng)某個(gè)數(shù)據(jù)塊被損壞時(shí),存儲(chǔ)設(shè)備110可以通過(guò)同一個(gè)分條中的校驗(yàn)塊和其他文件的數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行恢復(fù)。從而在保證了文件的寫入效率的基礎(chǔ)上保證了文件存儲(chǔ)的安全性。
[0099]圖7為本發(fā)明實(shí)施例提供的又一種文件處理方法的流程圖,該方法可以由圖2所示的存儲(chǔ)設(shè)備110的控制器115來(lái)執(zhí)行,該方法可以應(yīng)用于帶獨(dú)立校驗(yàn)盤的RAID中。本發(fā)明實(shí)施例仍以包含4個(gè)磁盤的RAID3為例進(jìn)行描述。下面將結(jié)合圖2、圖4-B、圖6-A對(duì)圖7進(jìn)行描述。如圖7所示,該方法包括:
[0100]在步驟700中,存儲(chǔ)設(shè)備110接收待存儲(chǔ)于RAID中的D個(gè)文件。本步驟可以參見步驟600的相關(guān)描述。
[0101]在步驟705中,存儲(chǔ)設(shè)備110判斷所述D個(gè)文件中的第K個(gè)文件中是否存在未寫入所述RAID的數(shù)據(jù)盤的數(shù)據(jù)塊。如果所述第K個(gè)文件中存在未寫入所述RAID的數(shù)據(jù)盤的數(shù)據(jù)塊,則該方法進(jìn)入步驟710,否則,該方法進(jìn)入步驟715。其中,K的初始值為I。換一種表達(dá)方式,存儲(chǔ)設(shè)備110需要首先判斷所述D個(gè)文件中的第I個(gè)文件中是否存在未寫入所述RAID的數(shù)據(jù)盤中的數(shù)據(jù)塊。具體的判斷第K個(gè)文件中是否存在未寫入RAID中的數(shù)據(jù)塊的方法可以參見圖5中步驟410的相關(guān)描述。
[0102]在步驟710中,存儲(chǔ)設(shè)備110獲取所述第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)盤的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)盤的數(shù)據(jù)塊。步驟710的具體描述可以參見圖6中步驟605的相關(guān)描述。
[0103]在步驟715中,存儲(chǔ)設(shè)備110判斷是否了除D個(gè)文件之外的其他文件。如果接收了除D個(gè)文件之外的其他文件,則該方法進(jìn)入步驟718,否則,該方法進(jìn)入步驟725。實(shí)際應(yīng)用中,若存儲(chǔ)設(shè)備110在步驟705中判斷所述D個(gè)文件中的第K個(gè)文件中不存在未寫入磁盤的數(shù)據(jù)塊,則說(shuō)明第K個(gè)文件已經(jīng)全部存儲(chǔ)于磁盤中。在這種情況下,存儲(chǔ)設(shè)備110需要進(jìn)一步判斷是否接收有需要寫入構(gòu)建所述RAID的數(shù)據(jù)盤中的其他文件。如果存儲(chǔ)設(shè)備110接收了除D個(gè)文件之外的其他文件,則該方法進(jìn)入步驟718,否則該方法進(jìn)入步驟725。
[0104]例如,在圖4-B所示的3個(gè)文件:F1、F2和F3中,第3個(gè)文件F3比較小,F(xiàn)3被作為一個(gè)數(shù)據(jù)塊F3-1,且數(shù)據(jù)塊F3-1已經(jīng)被寫入如圖6-A所示的RAID中。存儲(chǔ)設(shè)備110當(dāng)前需要獲取分條2中的數(shù)據(jù)塊,則存儲(chǔ)設(shè)備110可以判斷出第3個(gè)文件F3中已經(jīng)不存在未寫入RAID中的數(shù)據(jù)塊。在這種情況下,存儲(chǔ)設(shè)備110需要判斷是否接收有除F1-F3外的其他文件,例如第4個(gè)文件F4,如果接收了其他文件,則該方法進(jìn)入步驟718,否則進(jìn)入步驟725。
[0105]在步驟718中,存儲(chǔ)設(shè)備110從接收的除D個(gè)文件之外的其他文件中選擇一個(gè)文件。具體的,存儲(chǔ)設(shè)備110可以從接收的其他文件中任意選擇一個(gè)文件。
[0106]在步驟720中,存儲(chǔ)設(shè)備110將選擇的文件中的一個(gè)未寫入磁盤的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。例如,在上述示例中,若存儲(chǔ)設(shè)備110接收到待存儲(chǔ)于所述RAID中的第4個(gè)文件F4,則存儲(chǔ)設(shè)備110可以將文件F4中的一個(gè)未寫入磁盤的數(shù)據(jù)塊F4-1作為分條2中第3個(gè)數(shù)據(jù)塊。換一種表達(dá)方式,當(dāng)存儲(chǔ)設(shè)備110將所述D個(gè)文件中的第K個(gè)文件中的數(shù)據(jù)塊全部存儲(chǔ)在RAID中后,存儲(chǔ)設(shè)備110開始存儲(chǔ)除D個(gè)文件之外的其他文件中的數(shù)據(jù)塊。
[0107]在步驟725中,存儲(chǔ)設(shè)備110將所述分條中的第K個(gè)數(shù)據(jù)塊填充為O。在另一種情形下,當(dāng)存儲(chǔ)設(shè)備Iio在步驟715中判斷沒有接收到需要存儲(chǔ)在所述RAID中的除所述D個(gè)文件之外的其他文件時(shí),則在步驟725中,存儲(chǔ)設(shè)備110可以將所述分條中的第K個(gè)數(shù)據(jù)塊填充為0,用于表明該數(shù)據(jù)塊沒有使用。
[0108]在步驟730中,存儲(chǔ)設(shè)備110判斷K的值是否大于D。若K的值不大于D,則該方法進(jìn)入步驟735,否則,該方法進(jìn)入步驟740。由于在本發(fā)明實(shí)施例中,K的初始值為1,因此在獲取了分條中I個(gè)數(shù)據(jù)塊后,可以判斷K的值是否大于D。如果不大于D,則該方法進(jìn)入步驟735。如果K的值大于D,則說(shuō)明已經(jīng)獲取了該分條中的D個(gè)數(shù)據(jù)塊。該方法進(jìn)入步驟740。
[0109]在步驟735中,存儲(chǔ)設(shè)備110令K=K+1,并返回執(zhí)行步驟705,以獲取所述分條中的下一個(gè)數(shù)據(jù)塊。換句話說(shuō),存儲(chǔ)設(shè)備110將變量K的值設(shè)置為Κ+1的值,并返回步驟410,開始采用前述方法步驟循環(huán)獲取所述分條中的下一個(gè)數(shù)據(jù)塊,直到獲取完分條中的所有數(shù)據(jù)塊為止。
[0110]在步驟740中,存儲(chǔ)設(shè)備110根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊。本步驟的具體描述可以參見圖6中步驟610的相關(guān)描述。
[0111]在步驟745中,存儲(chǔ)設(shè)備110將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)盤,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)盤。本步驟的具體描述可以參見圖6中步驟615的相關(guān)描述。
[0112]在步驟750中,存儲(chǔ)設(shè)備110判斷是否存在未全部寫入所述RAID的磁盤中的文件。如果所述D個(gè)文件中存在未全部存儲(chǔ)于磁盤的文件,換句話說(shuō),如果文件沒有存完,則該方法返回步驟705。存儲(chǔ)設(shè)備110繼續(xù)確定校驗(yàn)塊在下一個(gè)分條中的序號(hào),并獲取下一個(gè)分條中的數(shù)據(jù)塊,以便將下一個(gè)分條中的數(shù)據(jù)塊和校驗(yàn)塊寫入構(gòu)建所述RAID的磁盤中。若在步驟750中,存儲(chǔ)設(shè)備110判斷所有待存儲(chǔ)于所述RAID中的文件已經(jīng)全部存儲(chǔ)完畢,則該方法進(jìn)入步驟755,結(jié)束本次存儲(chǔ)流程。
[0113]圖6和圖7介紹了將多個(gè)文件存儲(chǔ)于具有獨(dú)立校驗(yàn)盤的RAID的方法,通過(guò)圖6或圖7所示的文件處理方法,可以將文件存儲(chǔ)到RAID中后可以將同一個(gè)文件存儲(chǔ)于RAID的同一個(gè)磁盤中,具體的存儲(chǔ)結(jié)構(gòu)可以如圖6-A所示。[0114]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,圖7所述實(shí)施例中的部分步驟的描述可以參見圖6所示的實(shí)施例中的相應(yīng)過(guò)程的具體描述。并且,由于圖6和圖7描述的文件處理方法與圖3和圖5描述的文件處理方法是基于相同的發(fā)明構(gòu)思。在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。通過(guò)上述實(shí)施例所述的文件處理方法,均能夠?qū)⑼粋€(gè)文件的數(shù)據(jù)塊存儲(chǔ)在RAID的一個(gè)磁盤中。并且,存儲(chǔ)設(shè)備110將不同文件的數(shù)據(jù)塊構(gòu)成一個(gè)分條寫入磁盤。當(dāng)某個(gè)數(shù)據(jù)塊被損壞時(shí),存儲(chǔ)設(shè)備110可以通過(guò)同一個(gè)分條中的校驗(yàn)塊和其他文件的數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行恢復(fù),保證了文件存儲(chǔ)的安全性。
[0115]在本發(fā)明實(shí)施例中,通過(guò)上述圖3、圖5、圖6或圖7所示的文件處理方法將文件存儲(chǔ)于RAID中后。在歸檔的場(chǎng)景下,存儲(chǔ)的文件被訪問(wèn)的頻率較低,因此,為了達(dá)到節(jié)能目的,通常會(huì)將磁盤進(jìn)行休眠或下電。在需要讀取文件時(shí),可以按照?qǐng)D8所述的方法進(jìn)行讀取。下面結(jié)合圖1、圖2對(duì)圖8進(jìn)行描述。該方法包括:
[0116]在步驟800中,存儲(chǔ)設(shè)備110接收主機(jī)100的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件。其中,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址??梢岳斫獾氖?,訪問(wèn)請(qǐng)求中還可以攜帶要訪問(wèn)的文件的文件名。
[0117]在步驟805中,存儲(chǔ)設(shè)備110根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址。通常,存儲(chǔ)設(shè)備110存儲(chǔ)數(shù)據(jù)之后,會(huì)構(gòu)建一個(gè)數(shù)據(jù)存儲(chǔ)的物理地址與邏輯地址對(duì)應(yīng)關(guān)系的映射表。當(dāng)接收到讀取文件的訪問(wèn)請(qǐng)求后,存儲(chǔ)設(shè)備110可以根據(jù)訪問(wèn)請(qǐng)求中攜帶的邏輯地址在映射表中查詢所述數(shù)據(jù)在磁盤上的物理地址??梢岳斫獾氖?,在RAID中,對(duì)緩存120以及磁盤130上的數(shù)據(jù)都會(huì)建立映射表。查詢物理地址時(shí),通常會(huì)先查詢緩存120的映射表,再查詢磁盤130的映射表。如果數(shù)據(jù)在緩存中,則會(huì)直接將緩存中的數(shù)據(jù)返回給主機(jī)。
[0118]在步驟810中,存儲(chǔ)設(shè)備110根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)磁盤。由于在本發(fā)明實(shí)施例中,通過(guò)上述實(shí)施例中所述的文件處理方法將文件存儲(chǔ)于構(gòu)建RAID的磁盤中后,能夠使一個(gè)文件被存儲(chǔ)于一個(gè)磁盤中,因此在本步驟中,存儲(chǔ)設(shè)備110能夠根據(jù)物理地址確定存儲(chǔ)該文件的一個(gè)磁盤。
[0119]在步驟815中,存儲(chǔ)設(shè)備110將存儲(chǔ)于所述磁盤中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)100。由于通過(guò)本發(fā)明實(shí)施例的上述文件處理方法,能夠?qū)⒁粋€(gè)文件存儲(chǔ)于一個(gè)磁盤中,因此,在讀取存儲(chǔ)的文件時(shí),存儲(chǔ)設(shè)備110可以根據(jù)所述物理地址喚醒存儲(chǔ)所述文件一個(gè)磁盤130或?qū)υ摯疟P130進(jìn)行上電,,將存儲(chǔ)于一個(gè)磁盤130中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)100。具體的,存儲(chǔ)設(shè)備110可以根據(jù)獲得的物理地址讀取磁盤130中的數(shù)據(jù),并將數(shù)據(jù)返回給主機(jī)100。
[0120]在本發(fā)明實(shí)施例中,由于文件是按照?qǐng)D3、圖5、圖6或圖7所示的方法存儲(chǔ)的,因此屬于同一個(gè)文件的數(shù)據(jù)能夠被存儲(chǔ)于一個(gè)磁盤中。因此,在讀取文件時(shí),只需要將存儲(chǔ)該文件的一個(gè)磁盤喚醒或上電,并從該磁盤中讀取該文件的數(shù)據(jù)返回給主機(jī)。而無(wú)需對(duì)RAID中的所有磁盤進(jìn)行喚醒或上電,節(jié)能效果顯著。
[0121]本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理的計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行前述任意一個(gè)方法實(shí)施例所述的方法流程。本領(lǐng)域普通技術(shù)人員可以理解,前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、磁碟、光盤、隨機(jī)存儲(chǔ)器(Random-Access Memory, RAM)、固態(tài)硬盤(Solid State Disk, SSD)或者非易失性存儲(chǔ)器(non-volatile memory)等各種可以存儲(chǔ)程序代碼的非短暫性的(non-transitory)機(jī)器可讀介質(zhì)。
[0122]本領(lǐng)域人員可以理解的是,在本發(fā)明實(shí)施例中,存放元數(shù)據(jù)的磁盤以及緩存120始終是保持上電狀態(tài)的,以便于能對(duì)主機(jī)的訪問(wèn)請(qǐng)求做出及時(shí)的響應(yīng)。其中,本領(lǐng)域人員可以知道,元數(shù)據(jù)是描述RAID中存儲(chǔ)的數(shù)據(jù)及其環(huán)境的數(shù)據(jù),例如元數(shù)據(jù)中可以包含邏輯地址與物理地址的映射關(guān)系。
[0123]由于磁盤頻繁的上電或下電會(huì)影響存儲(chǔ)系統(tǒng)的節(jié)能效果,同時(shí)會(huì)影響磁盤壽命。為了避免磁盤被頻繁的上電或下電,在實(shí)際應(yīng)用中,可以將磁盤進(jìn)行分級(jí)。將少量高性能磁盤始終保持上電狀態(tài),大量的高容量磁盤進(jìn)入節(jié)能狀態(tài)。其中,這里的高性能磁盤指訪問(wèn)時(shí)延較低或每秒進(jìn)行讀寫(I/O)操作的次數(shù)(Input/Output Operations Per Second, IOPS)較高的磁盤,例如,固態(tài)硬盤(Solid State Disk, SSD)。高容量磁盤是指容量比較大的磁盤。存儲(chǔ)后,可以根據(jù)文件訪問(wèn)情況,將訪問(wèn)頻率較高的文件遷移到預(yù)留的少量始終上電的磁盤中。以有效減少磁盤被上電或喚醒的次數(shù),提升響應(yīng)速度。
[0124]進(jìn)一步的,為了避免磁盤的頻繁上電和下電,在本發(fā)明實(shí)施例的存儲(chǔ)系統(tǒng)中還可以提供預(yù)警機(jī)制和保護(hù)機(jī)制。通過(guò)統(tǒng)計(jì)RAID中各磁盤累計(jì)上電和下電的次數(shù),當(dāng)預(yù)定時(shí)間內(nèi)某個(gè)磁盤的上電和下電次數(shù)超過(guò)預(yù)設(shè)的閾值時(shí),系統(tǒng)進(jìn)行提示或告警,并可以采取一些保護(hù)措施。其中,設(shè)置的閾值例如可以為10次/天或100次/月。保護(hù)措施可以設(shè)置為在設(shè)定的時(shí)間內(nèi)不再對(duì)該磁盤進(jìn)行上電或下電操作等等,在此不做限定。
[0125]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制。
【權(quán)利要求】
1.一種文件處理方法,其特征在于,包括: 接收待存儲(chǔ)于RAID中的T個(gè)文件,所述T的值為不小于3的自然數(shù),且所述T的值等于構(gòu)建所述RAID的存儲(chǔ)器的數(shù)量; 確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào); 獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由I遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào); 根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊; 將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。
2.根據(jù)權(quán)利要求1所述的文件處理方法,其特征在于,還包括: 當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述T個(gè)文件之外的其他文件; 若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件; 將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。
3.根據(jù)權(quán)利要求1所述的文件處理方法,其特征在于,還包括: 當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述T個(gè)文件之外的其他文件,則將所述分條的第K個(gè)數(shù)據(jù)塊填充為O。
4.根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的文件處理方法,其特征在于,還包括: 接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址; 根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址; 根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器; 將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
5.一種用于將文件存儲(chǔ)于獨(dú)立磁盤冗余陣列(Redundant Arrays of IndependentDisks, RAID)中的方法,其特征在于,所述RAID包括D個(gè)數(shù)據(jù)存儲(chǔ)器以及P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器,所述D的值為不小于2的自然數(shù),所述P的值為不小于I的自然數(shù),所述方法包括: 接收待存儲(chǔ)于所述RAID中的D個(gè)文件; 獲取所述D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,K的取值分別由I遞增到D; 根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊; 將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)存儲(chǔ)器,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器中。
6.根據(jù)權(quán)利要求5所述的文件處理方法,其特征在于,還包括: 當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述D個(gè)文件之外的其他文件; 若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件; 將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求5所述的文件處理方法,其特征在于,還包括: 當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述D個(gè)文件之外的其他文件,則將所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊填充為O。
8.根據(jù)權(quán)利要求5-7任意一項(xiàng)所述的文件處理方法,其特征在于,還包括: 接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址; 根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址; 根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器; 將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
9.一種存儲(chǔ)設(shè)備,其特征在于,包括控制器和獨(dú)立磁盤冗余陣列(Redundant Array ofIndependent Disks, RAID),其中: 所述RAID,用于存儲(chǔ) 文件,所述RAID包含有T個(gè)存儲(chǔ)器,其中,所述T的值為不小于3的自然數(shù); 所述控制器包括: 通信接口,用于與主機(jī)及所述獨(dú)立磁盤冗余陣列(Redundant Array of IndependentDisks, RAID)通信; 處理器,用于接收待存儲(chǔ)于所述RAID中的T個(gè)文件; 確定校驗(yàn)塊在所述RAID的一個(gè)分條中的序號(hào); 獲取所述T個(gè)文件中的第K個(gè)文件的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊,將所述第K個(gè)文件的所述數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊,其中,K的值分別由I遞增到T,且K的值不等于所述校驗(yàn)塊在所述分條中的序號(hào); 根據(jù)所述分條中的數(shù)據(jù)塊獲得所述分條中的校驗(yàn)塊; 將所述分條中的數(shù)據(jù)塊以及獲得的所述分條中的校驗(yàn)塊寫入所述T個(gè)存儲(chǔ)器中。
10.根據(jù)權(quán)利要求9所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述T個(gè)文件之外的其他文件; 若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件; 將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中的第K個(gè)數(shù)據(jù)塊。
11.根據(jù)權(quán)利要求9所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 當(dāng)所述第K個(gè)文件中沒有未寫入存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述T個(gè)文件之外的其他文件,則將所述分條的第K個(gè)數(shù)據(jù)塊填充為O。
12.根據(jù)權(quán)利要求9-11任意一項(xiàng)所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址; 根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址; 根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器; 將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
13.—種存儲(chǔ)設(shè)備,其特征在于,包括控制器和獨(dú)立磁盤冗余陣列(Redundant Arrayof Independent Disks, RAID),其特征在于,所述RAID包括D個(gè)數(shù)據(jù)存儲(chǔ)器以及P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器,所述D的值為不小于2的自然數(shù),所述P的值為不小于I的自然數(shù), 所述RAID,用于存儲(chǔ)文件; 所述控制器包括: 通信接口,用于與主機(jī)及所述獨(dú)立磁盤冗余陣列(Redundant Array of IndependentDisks, RAID)通信; 處理器,用于接收待存儲(chǔ)于所述RAID中的D個(gè)文件; 獲取所述D個(gè)文件中的第K個(gè)文件的一個(gè)未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,將所述數(shù)據(jù)塊作為所述RAID的一個(gè)分條中待存儲(chǔ)于第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊,K的取值分別由I遞增到D; 根據(jù)獲得的所述D個(gè)數(shù)據(jù)塊獲得所述分條中的P個(gè)校驗(yàn)塊; 將所述D個(gè)數(shù)據(jù)塊寫入所述D個(gè)數(shù)據(jù)存儲(chǔ)器,并將所述P個(gè)校驗(yàn)塊寫入所述P個(gè)獨(dú)立校驗(yàn)存儲(chǔ)器中。
14.根據(jù)權(quán)利要求13所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),判斷是否接收到除所述D個(gè)文件之外的其他文件; 若接收到所述其他文件,則從接收的其他文件中選擇一個(gè)文件; 將選擇的所述文件中的一個(gè)未寫入存儲(chǔ)器的數(shù)據(jù)塊作為所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊。
15.根據(jù)權(quán)利要求13所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 當(dāng)所述第K個(gè)文件中沒有未寫入數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊時(shí),如果沒有接收到除所述D個(gè)文件之外的其他文件,則將所述分條中待存儲(chǔ)于所述第K個(gè)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)塊填充為O。
16.根據(jù)權(quán)利要求13-15任意一項(xiàng)所述的存儲(chǔ)設(shè)備,其特征在于,所述處理器還用于: 接收主機(jī)的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求用于讀取存儲(chǔ)于所述RAID中的文件,所述訪問(wèn)請(qǐng)求中攜帶有要訪問(wèn)的文件的邏輯地址; 根據(jù)所述邏輯地址查詢存放所述文件的數(shù)據(jù)塊的物理地址; 根據(jù)所述物理地址確定存儲(chǔ)所述文件的一個(gè)存儲(chǔ)器; 將存儲(chǔ)于所述存儲(chǔ)器中的所述文件的數(shù)據(jù)塊返回給所述主機(jī)。
17.一種計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行如權(quán)利要求1-4任意一項(xiàng)所述的方法。
18.一種計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行如權(quán)利要求5-8任意一項(xiàng)所述的方法。
【文檔編號(hào)】G06F12/06GK103718151SQ201380001817
【公開日】2014年4月9日 申請(qǐng)日期:2013年8月9日 優(yōu)先權(quán)日:2013年8月9日
【發(fā)明者】孔晗, 王靜 申請(qǐng)人:華為技術(shù)有限公司