一種按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法及系統(tǒng),能有效提升存儲(chǔ)系統(tǒng)的I/o性能和可靠性。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,人們需要處理和訪問越來越多的數(shù)據(jù),而文件系統(tǒng)是用戶訪問存儲(chǔ)設(shè)備中數(shù)據(jù)的主要途徑,因此文件系統(tǒng)如何高效地組織和管理海量數(shù)據(jù),提高用戶訪問數(shù)據(jù)的效率是一個(gè)重要的問題。I/o密集型應(yīng)用使I/O子系統(tǒng)成為整個(gè)計(jì)算機(jī)系統(tǒng)的瓶頸,文件系統(tǒng)作為底層存儲(chǔ)資源的管理者,應(yīng)該為上層應(yīng)用提供靈活有效的服務(wù),以更有效地利用底層存儲(chǔ)資源。此外,文件系統(tǒng)中元數(shù)據(jù)的管理也成為了很多數(shù)據(jù)密集型程序的瓶頸。
[0003]文件系統(tǒng)元數(shù)據(jù)就是數(shù)據(jù)的數(shù)據(jù)。在文件系統(tǒng)領(lǐng)域每一個(gè)文件對應(yīng)一個(gè)元數(shù)據(jù)結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體包括文件的屬性,比如文件創(chuàng)建、修改及訪問的時(shí)間,文件擁有者,權(quán)限,映射信息等。用戶在訪問數(shù)據(jù)之前必須首先獲得數(shù)據(jù)的元數(shù)據(jù)信息,進(jìn)一步講,對文件的讀寫都需要先訪問文件的元數(shù)據(jù),檢查是否有訪問的權(quán)限,并計(jì)算獲得要訪問的文件的位置并獲得具體數(shù)據(jù)塊的位置,然后才能對數(shù)據(jù)進(jìn)行相應(yīng)的操作,所以在文件系統(tǒng)中超過50%的用戶訪問請求都涉及元數(shù)據(jù)的操作,本地文件系統(tǒng)中元數(shù)據(jù)I/O密集型訪問使I/O子系統(tǒng)成為了整個(gè)計(jì)算機(jī)系統(tǒng)的瓶頸。但是,在本地文件系統(tǒng)中元數(shù)據(jù)操作與數(shù)據(jù)的操作是混合在一起的,由于元數(shù)據(jù)的負(fù)載與數(shù)據(jù)的負(fù)載差別很大,當(dāng)數(shù)據(jù)密集型操作與元數(shù)據(jù)密集型操作混合在一起并發(fā)地訪問本地文件系統(tǒng)的資源時(shí),元數(shù)據(jù)的負(fù)載與數(shù)據(jù)的負(fù)載必然會(huì)相互影響,造成整個(gè)存儲(chǔ)系統(tǒng)I/O性能的下降,使I/O子系統(tǒng)對于整個(gè)計(jì)算機(jī)系統(tǒng)的瓶頸作用更加明顯。
[0004]一旦元數(shù)據(jù)丟失或發(fā)生錯(cuò)誤,整個(gè)文件系統(tǒng)中的數(shù)據(jù)將不可訪問,考慮到文件系統(tǒng)中元數(shù)據(jù)的特點(diǎn)以及元數(shù)據(jù)對整個(gè)文件系統(tǒng)的重要性,亟需一種有效的解決方法來保證文件系統(tǒng)中元數(shù)據(jù)的訪問效率及訪問可靠性。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法及系統(tǒng),根據(jù)文件系統(tǒng)中數(shù)據(jù)的屬性將數(shù)據(jù)分類存放到不同介質(zhì)、不同陣列級別的設(shè)備,能有效提高文件系統(tǒng)中元數(shù)據(jù)的訪問效率及訪問可靠性,從而提高存儲(chǔ)系統(tǒng)的性能和可靠性。
[0006]為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法,其特征在于,包括如下步驟:(I)將文件系統(tǒng)的數(shù)據(jù)和元數(shù)據(jù)分別分配在文件系統(tǒng)的每個(gè)塊組的不同區(qū)間;(2)將文件系統(tǒng)每個(gè)塊組中不同區(qū)間的數(shù)據(jù)和元數(shù)據(jù)分別存放到不同的設(shè)備中,使用硬盤驅(qū)動(dòng)器存放數(shù)據(jù),使用固態(tài)硬盤存放元數(shù)據(jù)。
[0007]優(yōu)選地,所述步驟(I)進(jìn)一步包括如下子步驟:(1-1)將元數(shù)據(jù)分為固定分配的元數(shù)據(jù)和動(dòng)態(tài)分配的元數(shù)據(jù);其中,將文件系統(tǒng)的每個(gè)塊組的超級塊到索引節(jié)點(diǎn)表之間的數(shù)據(jù)作為固定分配的元數(shù)據(jù),將文件系統(tǒng)中的目錄塊作為動(dòng)態(tài)分配的元數(shù)據(jù);(1-2)計(jì)算文件系統(tǒng)中動(dòng)態(tài)分配的元數(shù)據(jù)需要分配的數(shù)據(jù)塊總數(shù)SumMetadata ; (1-3)在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留SumMetadata個(gè)數(shù)據(jù)塊;其中,每個(gè)塊組中預(yù)留的最后一個(gè)數(shù)據(jù)塊的邏輯塊號記為M ; (1-4)將動(dòng)態(tài)分配的元數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留的SumMetadata個(gè)數(shù)據(jù)塊中;將數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的邏輯塊號大于M的數(shù)據(jù)塊中。
[0008]優(yōu)選地,所述步驟⑵進(jìn)一步包括如下子步驟:(2-1)用固態(tài)硬盤創(chuàng)建RAIDl,用硬盤驅(qū)動(dòng)器創(chuàng)建RAID5 ; (2-2)將RAIDl和RAID5創(chuàng)建成一個(gè)混合邏輯設(shè)備;(2_3)接收用戶向混合邏輯設(shè)備發(fā)送的讀寫請求,對請求的邏輯塊號進(jìn)行檢查,根據(jù)請求的邏輯塊號,對請求進(jìn)行重定向。
[0009]優(yōu)選地,所述步驟(2-3)中,在請求的邏輯塊號小于或等于M時(shí),將請求重定向到RAIDl中;在請求的邏輯塊號大于M時(shí),將請求重定向到RAID5中。
[0010]按照本發(fā)明的另一方面,提供了一種按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)系統(tǒng),其特征在于,包括:分類聚集模塊,用于將文件系統(tǒng)的數(shù)據(jù)和元數(shù)據(jù)分別分配在文件系統(tǒng)的每個(gè)塊組的不同區(qū)間;混合存儲(chǔ)地址映射模塊,用于將文件系統(tǒng)每個(gè)塊組中不同區(qū)間的數(shù)據(jù)和元數(shù)據(jù)分別存放到不同的設(shè)備中,使用硬盤驅(qū)動(dòng)器存放數(shù)據(jù),使用固態(tài)硬盤存放元數(shù)據(jù)。
[0011]優(yōu)選地,所述分類聚集模塊包括:第一模塊,用于將元數(shù)據(jù)分為固定分配的元數(shù)據(jù)和動(dòng)態(tài)分配的元數(shù)據(jù);其中,將文件系統(tǒng)的每個(gè)塊組的超級塊到索引節(jié)點(diǎn)表之間的數(shù)據(jù)作為固定分配的元數(shù)據(jù),將文件系統(tǒng)中的目錄塊作為動(dòng)態(tài)分配的元數(shù)據(jù);第二模塊,用于計(jì)算文件系統(tǒng)中動(dòng)態(tài)分配的元數(shù)據(jù)需要分配的數(shù)據(jù)塊總數(shù)SumMetadata ;第三模塊,用于在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留SumMetadata個(gè)數(shù)據(jù)塊;其中,每個(gè)塊組中預(yù)留的最后一個(gè)數(shù)據(jù)塊的邏輯塊號記為M ;第四模塊,用于將動(dòng)態(tài)分配的元數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留的SumMetadata個(gè)數(shù)據(jù)塊中;將數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的邏輯塊號大于M的數(shù)據(jù)塊中。
[0012]優(yōu)選地,所述混合存儲(chǔ)地址映射模塊包括:第五模塊,用于用固態(tài)硬盤創(chuàng)建RAID1,用硬盤驅(qū)動(dòng)器創(chuàng)建RAID5 ;第六模塊,用于將RAIDl和RAID5創(chuàng)建成一個(gè)混合邏輯設(shè)備;第七模塊,用于接收用戶向混合邏輯設(shè)備發(fā)送的讀寫請求,對請求的邏輯塊號進(jìn)行檢查,根據(jù)請求的邏輯塊號,對請求進(jìn)行重定向。
[0013]優(yōu)選地,所述第七模塊在請求的邏輯塊號小于或等于M時(shí),將請求重定向到RAIDl中;在請求的邏輯塊號大于M時(shí),將請求重定向到RAID5中。
[0014]本發(fā)明基于一種普遍存在的現(xiàn)象,即在本地文件系統(tǒng)中元數(shù)據(jù)的操作與數(shù)據(jù)的操作是混合在一起的,由于元數(shù)據(jù)的負(fù)載與數(shù)據(jù)的負(fù)載差別很大,當(dāng)數(shù)據(jù)密集型操作與元數(shù)據(jù)密集型操作混合在一起并發(fā)地訪問本地文件系統(tǒng)的資源時(shí),元數(shù)據(jù)負(fù)載與數(shù)據(jù)的負(fù)載必然會(huì)相互影響,造成整個(gè)系統(tǒng)I/o性能下降。因此,本發(fā)明考慮到元數(shù)據(jù)在文件系統(tǒng)中所占空間小、訪問頻繁等特點(diǎn),構(gòu)建了一種由硬盤驅(qū)動(dòng)器(Hard Disk Drive, HDD)和固態(tài)硬盤(Solid State Drive, SSD)組成的混合架構(gòu),將文件系統(tǒng)中的數(shù)據(jù)按數(shù)據(jù)屬性分為數(shù)據(jù)(data)和元數(shù)據(jù)(metadata),將數(shù)據(jù)存放在HDD中,將元數(shù)據(jù)存放在SSD中,以達(dá)到將文件系統(tǒng)中的數(shù)據(jù)和元數(shù)據(jù)分類存放到不同介質(zhì)、不同陣列級別的設(shè)備的目的,使得文件系統(tǒng)I/O性能和可靠性都得到提升。一方面,將文件系統(tǒng)數(shù)據(jù)和元數(shù)據(jù)分別存儲(chǔ)到多個(gè)大容量的存儲(chǔ)設(shè)備中,能聚合多個(gè)存儲(chǔ)設(shè)備的I/o帶寬,提高訪問數(shù)據(jù)的性能;另一方面,綜合考慮數(shù)據(jù)和元數(shù)據(jù)的特點(diǎn),使用不同的存儲(chǔ)設(shè)備來存放數(shù)據(jù)和元數(shù)據(jù),這樣不僅提高了系統(tǒng)性能也節(jié)約了成本。
【附圖說明】
[0015]圖1是本發(fā)明實(shí)施例的按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法流程圖;
[0016]圖2是本發(fā)明實(shí)施例的按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法的原理示意圖;
[0017]圖3是混合存儲(chǔ)地址映射原理示意圖;
[0018]圖4是用戶請求的處理流程圖。
【具體實(shí)施方式】
[0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0020]如圖1所示,本發(fā)明實(shí)施例的按數(shù)據(jù)屬性分類存放的混合存儲(chǔ)方法包括如下步驟:
[0021](I)將文件系統(tǒng)的數(shù)據(jù)和元數(shù)據(jù)分別分配在文件系統(tǒng)的每個(gè)塊組的不同區(qū)間。
[0022]進(jìn)一步包括如下子步驟:
[0023](1-1)將元數(shù)據(jù)分為固定分配的元數(shù)據(jù)和動(dòng)態(tài)分配的元數(shù)據(jù);其中,將文件系統(tǒng)的每個(gè)塊組的超級塊到索引節(jié)點(diǎn)表之間的數(shù)據(jù)作為固定分配的元數(shù)據(jù),將文件系統(tǒng)中的目錄塊作為動(dòng)態(tài)分配的元數(shù)據(jù)。
[0024](1-2)計(jì)算文件系統(tǒng)中動(dòng)態(tài)分配的元數(shù)據(jù)需要分配的數(shù)據(jù)塊總數(shù)SumMetadata。
[0025](1-3)在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留SumMetadata個(gè)數(shù)據(jù)塊;其中,每個(gè)塊組中預(yù)留的最后一個(gè)數(shù)據(jù)塊的邏輯塊號記為M0
[0026](1-4)將動(dòng)態(tài)分配的元數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的索引節(jié)點(diǎn)表后預(yù)留的SumMetadata個(gè)數(shù)據(jù)塊中;將數(shù)據(jù)分配在文件系統(tǒng)的每個(gè)塊組的邏輯塊號大于M的數(shù)據(jù)塊中。
[0027]通過修改文件系統(tǒng)的數(shù)據(jù)塊分配策略,使得文件系統(tǒng)中的所有元數(shù)據(jù)集中在一起。
[0028](2)將文件系統(tǒng)每個(gè)塊組中不同區(qū)間的數(shù)據(jù)和元數(shù)據(jù)分別存