盤的例子類似,文件系統(tǒng)由多個(gè)block group組織而成。最后一個(gè)block group的next block group為空。前面的磁盤中block group依次指向后續(xù)的block group,這些block group組成的邏輯空間是連續(xù)的。
[0048]參照?qǐng)D8。當(dāng)需要?jiǎng)討B(tài)向該系統(tǒng)中增加存儲(chǔ)設(shè)備時(shí),首先在新的磁盤上分配blockgroup,最后一個(gè)block group 為 dummy block group。讀取舊的 dummy block group 信息,根據(jù)原有虛擬空間減去新增可用空間得到新的dummy block group的信息。找到原來文件系統(tǒng)的倒數(shù)第二塊block group,將其next指針指向新磁盤的第一個(gè)block group。根據(jù)增加的block group數(shù)量修改超級(jí)塊中的相關(guān)信息。根據(jù)可用空間、已用空間以及預(yù)警閾值,調(diào)整alert block group的位置。清除舊的alert block group的alert flag,并根據(jù)計(jì)算所得結(jié)果,找到新的閾值所在block group,并設(shè)置其alert flag。
[0049]參照?qǐng)D9。在向系統(tǒng)中增加存儲(chǔ)設(shè)備完成后,需要向該系統(tǒng)中增加文件系統(tǒng)大小。增加文件系統(tǒng)大小僅增加虛擬空間的大小,所以只需修改dummy block group的相關(guān)信息,增加虛擬block數(shù)量即可。
[0050]參照?qǐng)D10。在文件系統(tǒng)向使用者提供服務(wù)前,需要設(shè)定預(yù)警用的alert blockgroup,如預(yù)警閾值為70 %,則根據(jù)可用空間的大小找到其70 %的地方,并設(shè)置對(duì)應(yīng)的block group 的 alert flag。
[0051]參照?qǐng)D11。在使用者擴(kuò)展文件或?qū)懳募r(shí),需要分配空間時(shí),首先定位文件inode所在的block group,判斷其上是否有足夠的空閑塊。如果有空閑塊,判斷是否是普通的block group (不是alert group)。如果是普通的block group,則直接分配空間寫入數(shù)據(jù)。如果是alert block group,說明可用空間數(shù)量不足,需要發(fā)送alert請(qǐng)求或自動(dòng)增加設(shè)備隨后再分配block進(jìn)行讀寫。如果當(dāng)前block group沒有足夠的空間,則移到下一個(gè)blockgroup ο判斷該group是否是dummy group。如果不是判斷該group是否有足夠的空閑塊。如果是dummy group說明目前沒有可用的空間,需要發(fā)送alert或自動(dòng)增加設(shè)備。
[0052]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)器中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(個(gè)人計(jì)算機(jī),服務(wù)器,網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例某些部分所述的方法。
【主權(quán)項(xiàng)】
1.一種實(shí)現(xiàn)存儲(chǔ)系統(tǒng)自動(dòng)精簡(jiǎn)的方法,其特征在于包括以下步驟: 文件系統(tǒng)元數(shù)據(jù)管理模塊用于定義元數(shù)據(jù)的布局及格式;通過所述元數(shù)據(jù)管理多個(gè)塊存儲(chǔ)設(shè)備,并將多個(gè)塊存儲(chǔ)設(shè)備組織為統(tǒng)一的文件系統(tǒng)向外提供服務(wù);操作系統(tǒng)及應(yīng)用程序調(diào)用統(tǒng)一的文件系統(tǒng),統(tǒng)一的文件系統(tǒng)提供1讀寫方法,并在其中實(shí)現(xiàn)1讀寫監(jiān)測(cè)模塊;10讀寫監(jiān)測(cè)模塊通過監(jiān)測(cè)1寫請(qǐng)求,給1寫操作分配可用的block空間;在此監(jiān)測(cè)過程中判斷是否有可用的block空間,本次分配的block空間是否已達(dá)到了預(yù)警的要求;存儲(chǔ)空間監(jiān)測(cè)模塊和1讀寫監(jiān)測(cè)模塊共同處理block空間不足的情況;在使用空間達(dá)到全部可使用空間預(yù)先設(shè)定的閾值后,1監(jiān)測(cè)模塊向存儲(chǔ)空間監(jiān)測(cè)模塊發(fā)送消息,存儲(chǔ)空間監(jiān)測(cè)模塊根據(jù)預(yù)定的策略,向用戶發(fā)送警報(bào)信息或者通過云存儲(chǔ)或者SAN存儲(chǔ)區(qū)域網(wǎng)絡(luò)提供的接口自動(dòng)申請(qǐng)塊存儲(chǔ)資源,并利用存儲(chǔ)空間伸縮調(diào)整模塊自動(dòng)對(duì)統(tǒng)一的文件系統(tǒng)進(jìn)行擴(kuò)容;統(tǒng)一的文件系統(tǒng)伸縮調(diào)整模塊通過修改文件系統(tǒng)的元數(shù)據(jù),達(dá)到文件系統(tǒng)擴(kuò)容的功能,在統(tǒng)一的文件系統(tǒng)伸縮調(diào)整虛擬空間的大??; 所述文件系統(tǒng)由多個(gè)不同的Block Group組成,第一個(gè)Block group中保存超級(jí)塊信息,其中保存Block Group數(shù)量和位置信息;超級(jí)塊也在若干其他block group中進(jìn)行備份;每個(gè) BlockGroup 包括 Group Descriptors,數(shù)據(jù)塊 bitmap, inode bitmap,以及存放具體數(shù)據(jù)的inode表和data表;其中Group Descriptors包括組信息組類型、設(shè)備信息、下一個(gè)組的位置、預(yù)警flag及其他常規(guī)信息; Group type分為normal和dummy兩種;Dummy block group僅記錄虛擬空間的大小,其中空間大小使用Group info中的塊大小和數(shù)量確定,但是其中并不保存inode和data的各種信息;根據(jù)預(yù)定的預(yù)警閾值,當(dāng)使用到某些塊時(shí)說明已用空間與可用空間比例達(dá)到所述的預(yù)警閾值,需要通知管理員處理或自動(dòng)申請(qǐng)存儲(chǔ)資源并添加; 根據(jù)每個(gè)塊的空間大小,每個(gè)block group都保存了本block group的塊大小和數(shù)量,并保存了邏輯上相鄰的下一個(gè)block group的位置;其中最后一個(gè)block group保存虛擬空間的信息,其中僅有塊大小和塊數(shù)量有效,但是并無實(shí)際的存儲(chǔ)空間;該block group的next block group 為空; 多個(gè)磁盤上部署該文件系統(tǒng)與單個(gè)磁盤類似,文件系統(tǒng)由多個(gè)block group組織而成;最后一個(gè)block group的next block group為空;前面的磁盤中block group依次指向后續(xù)的block group,這些block group組成的邏輯空間是連續(xù)的; 當(dāng)需要?jiǎng)討B(tài)向所述文件系統(tǒng)中增加存儲(chǔ)設(shè)備時(shí),首先在新的磁盤上分配block group,最后一個(gè) block group 為 dummy block group ;讀取舊的 dummy block group 信息,根據(jù)原有虛擬空間減去新增可用空間得到新的dummy block group的信息;找到原來文件系統(tǒng)的倒數(shù)第二塊block group,將其next指針指向新磁盤的第一個(gè)block group ;根據(jù)增加的block group數(shù)量修改超級(jí)塊中的相關(guān)信息;根據(jù)可用空間、已用空間以及預(yù)警閾值,調(diào)整alert block group的位置;清除舊的alert block group的alert flag,并根據(jù)計(jì)算所得結(jié)果,找到新的閾值所在block group,并設(shè)置其alert flag ; 在向系統(tǒng)中增加存儲(chǔ)設(shè)備完成后,需要向該系統(tǒng)中增加文件系統(tǒng)大小;增加文件系統(tǒng)大小僅增加虛擬空間的大小,所以只需修改dummy block group的相關(guān)信息,增加虛擬block數(shù)量即可; 在文件系統(tǒng)向使用者提供服務(wù)前,需要設(shè)定預(yù)警用的alert block group,并設(shè)置對(duì)應(yīng)的 block group 的 alert flag ; 在使用者擴(kuò)展文件或?qū)懳募r(shí),需要分配空間時(shí),首先定位文件inode所在的blockgroup,判斷其上是否有足夠的空閑塊;如果有空閑塊,判斷是否是普通的block group ;如果是普通的block group,則直接分配空間寫入數(shù)據(jù);如果是alert block group,說明可用空間數(shù)量不足,需要發(fā)送alert請(qǐng)求或自動(dòng)增加設(shè)備隨后再分配block進(jìn)行讀寫;如果當(dāng)前block group沒有足夠的空間,則移到下一個(gè)block group ;判斷該group是否是dummygroup ;如果不是判斷該group是否有足夠的空閑塊;如果是dummy group說明目前沒有可用的空間,需要發(fā)送alert或自動(dòng)增加設(shè)備。
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)存儲(chǔ)系統(tǒng)自動(dòng)精簡(jiǎn)的方法,用于解決現(xiàn)有存儲(chǔ)系統(tǒng)自動(dòng)精簡(jiǎn)方法實(shí)用性差的技術(shù)問題。技術(shù)方案是統(tǒng)一資源的使用者和管理者,通過在文件系統(tǒng)元數(shù)據(jù)中增加控制信息,確保數(shù)據(jù)存儲(chǔ)的按需分配,并且保證數(shù)據(jù)不會(huì)存放到未分配空間,結(jié)合云存儲(chǔ)系統(tǒng)提供的API,實(shí)現(xiàn)在線存儲(chǔ)空間的擴(kuò)容和使用,達(dá)到自動(dòng)精簡(jiǎn)配置的目的。重新定義文件系統(tǒng)元數(shù)據(jù)信息,使其包含設(shè)備信息和地址映射信息;在文件系統(tǒng)中將邏輯空間分為已分配空間和未分配空間,并進(jìn)行地址映射管理;通過監(jiān)測(cè)讀寫過程,確保讀寫操作不會(huì)訪問到未分配空間。本發(fā)明方法能夠方便地管理存儲(chǔ)空間,實(shí)現(xiàn)存儲(chǔ)空間的動(dòng)態(tài)伸縮,實(shí)用性強(qiáng)。
【IPC分類】G06F17-30, G06F3-06, G06F12-08
【公開號(hào)】CN104820575
【申請(qǐng)?zhí)枴緾N201510205674
【發(fā)明人】張曉 , 趙曉南, 朱巖冰, 李戰(zhàn)懷
【申請(qǐng)人】西北工業(yè)大學(xué)
【公開日】2015年8月5日
【申請(qǐng)日】2015年4月27日