本發(fā)明公開一種提升元數(shù)據(jù)集群性能的方法,涉及數(shù)據(jù)集群管理領(lǐng)域,具體的說是一種通過虛擬目錄來提升元數(shù)據(jù)集群性能的方法。
背景技術(shù):
元數(shù)據(jù)是用來描述一個文件系統(tǒng)特征的數(shù)據(jù)。比如對于磁盤文件系統(tǒng)來說,關(guān)于文件組織和管理的信息就是該文件的元數(shù)據(jù)。在 UNIX 系統(tǒng)中,文件的元數(shù)據(jù)主要是文件目錄項和索引節(jié)點結(jié)構(gòu)。目錄項和文件系統(tǒng)的名字空間相關(guān),每個目錄項對應(yīng)一個文件名。索引節(jié)點結(jié)構(gòu)中則存儲著文件的很多重要信息,諸如訪問權(quán)限、文件大小、文件的創(chuàng)建時間、最后存取時間、最后修改時間等屬性信息,以及文件數(shù)據(jù)的物理分布信息,如直接塊指針、間接塊指針。此外,還有一些重要的系統(tǒng)數(shù)據(jù),如超級塊信息,記錄了整個文件系統(tǒng)的使用情況,如空閑塊的大小、己使用的空間大小等,也是一種元數(shù)據(jù)。
元數(shù)據(jù)的訪問性能影響著分布式文件系統(tǒng)的性能。在分布式文件系統(tǒng)中,元數(shù)據(jù)的訪問很頻繁,而元數(shù)據(jù)文件通常又很小,這樣對大量小文件的訪問,會對系統(tǒng)性能造成沖擊,不利于元數(shù)據(jù)的使用。本發(fā)明提供一種通過虛擬子目錄來提升元數(shù)據(jù)集群性能的方法,為了提升元數(shù)據(jù)集群的性能,對虛擬子目錄的創(chuàng)建,虛擬子目錄可以分配不同的mds,實現(xiàn)負(fù)載均衡,單個目錄可以利用多個mds,實現(xiàn)單目錄小文件性能的提升,從而進(jìn)一步實現(xiàn)元數(shù)據(jù)集群性能的提升。
技術(shù)實現(xiàn)要素:
本發(fā)明針對目前技術(shù)發(fā)展的需求和不足之處,提供一種通過虛擬目錄來提升元數(shù)據(jù)集群性能的方法,高效、便捷、實用性強(qiáng)、為元數(shù)據(jù)集群系統(tǒng)提升性能,解決瓶頸問題。
一種通過虛擬目錄來提升元數(shù)據(jù)集群性能的方法,根據(jù)系統(tǒng)請求,建立元數(shù)據(jù)集群的虛擬子目錄或者將普通目錄設(shè)置為虛擬子目錄,虛擬子目錄建立后對元數(shù)據(jù)集群的操作請求,判斷父目錄是否為虛擬目錄,不是則進(jìn)行原有流程進(jìn)行操作,否則進(jìn)入虛擬目錄,對操作名進(jìn)行hash計算,根據(jù)hash值進(jìn)入到相應(yīng)的虛擬子目錄中進(jìn)行操作。
通過更改集群節(jié)點配置文件的參數(shù),設(shè)置元數(shù)據(jù)集群的虛擬子目錄的開啟和關(guān)閉功能。
所述建立虛擬子目錄,先創(chuàng)建虛擬父目錄,再根據(jù)每個mds需要創(chuàng)建的目錄個數(shù),創(chuàng)建虛擬子目錄,根據(jù)虛擬子目錄導(dǎo)出規(guī)則將虛擬子目錄導(dǎo)出到對應(yīng)mds。
所述將普通目錄設(shè)置為虛擬子目錄:根據(jù)配置文件的參數(shù)創(chuàng)建虛擬子目錄,遍歷目錄的一層通過hash算法計算存放位置,移動到對應(yīng)的虛擬子目錄。
先判斷普通目錄是否為虛擬子目錄,不是則進(jìn)行創(chuàng)建,是則結(jié)束創(chuàng)建。
通過更改配置文件目錄inode中的xattr屬性字段,設(shè)置元數(shù)據(jù)集群的虛擬子目錄的開啟和關(guān)閉功能。
更改目錄inode中的xattr屬性字段的User.vartualdir 的屬性,設(shè)置元數(shù)據(jù)集群的虛擬子目錄的開啟和關(guān)閉功能。
本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果是:
本發(fā)明提供一種通過虛擬子目錄來提升元數(shù)據(jù)集群性能的方法,根據(jù)系統(tǒng)請求,建立元數(shù)據(jù)集群的虛擬子目錄或者將普通目錄設(shè)置為虛擬子目錄,虛擬子目錄建立后對元數(shù)據(jù)集群的操作請求,判斷父目錄是否為虛擬目錄,不是則進(jìn)行原有流程進(jìn)行操作,否則進(jìn)入虛擬目錄,對操作名進(jìn)行hash計算,根據(jù)hash值進(jìn)入到相應(yīng)的虛擬子目錄中進(jìn)行操作。
為了提升元數(shù)據(jù)集群的性能,利用本發(fā)明對虛擬子目錄的創(chuàng)建,虛擬子目錄可以分配不同的mds,實現(xiàn)負(fù)載均衡,單個目錄可以利用多個mds,實現(xiàn)單目錄小文件性能的提升,從而進(jìn)一步實現(xiàn)元數(shù)據(jù)集群性能的提升。
附圖說明
圖1本發(fā)明中建立虛擬子目錄的流程示意圖;
圖2 本發(fā)明中對元數(shù)據(jù)集群的操作請求進(jìn)行處理的流程示意圖;
圖3本發(fā)明中將普通目錄設(shè)置為虛擬子目錄的流程示意圖;
圖4本發(fā)明中虛擬子目錄恢復(fù)成普通目錄的流程示意圖。
具體實施方式
本發(fā)明提供一種通過虛擬目錄來提升元數(shù)據(jù)集群性能的方法,根據(jù)系統(tǒng)請求,建立元數(shù)據(jù)集群的虛擬子目錄或者將普通目錄設(shè)置為虛擬子目錄,虛擬子目錄建立后對元數(shù)據(jù)集群的操作請求,判斷父目錄是否為虛擬目錄,不是則進(jìn)行原有流程進(jìn)行操作,否則進(jìn)入虛擬目錄,對操作名進(jìn)行hash計算,根據(jù)hash值進(jìn)入到相應(yīng)的虛擬子目錄中進(jìn)行操作。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施,對本發(fā)明進(jìn)一步詳細(xì)說明。
利用本發(fā)明方法,根據(jù)系統(tǒng)請求,建立元數(shù)據(jù)集群的虛擬子目錄或者將普通目錄設(shè)置為虛擬子目錄,如下:
其中建立虛擬子目錄,先創(chuàng)建虛擬父目錄,再根據(jù)每個mds需要創(chuàng)建的目錄個數(shù)n,創(chuàng)建n個虛擬子目錄,根據(jù)虛擬子目錄導(dǎo)出規(guī)則將虛擬子目錄導(dǎo)出到對應(yīng)mds;此外在創(chuàng)建虛擬父目錄前,可以對創(chuàng)建目錄請求進(jìn)行問詢,是否創(chuàng)建虛擬目錄,如是則繼續(xù)進(jìn)行,否則按照原有創(chuàng)建流程創(chuàng)建普通目錄,參考圖1;
將普通目錄設(shè)置為虛擬子目錄:根據(jù)配置文件的參數(shù)設(shè)置虛擬子目錄,比如更改目錄inode中的xattr屬性字段,增加user.virtualdir字段屬性,用virtual_dir_num參數(shù)0-5來設(shè)置元數(shù)據(jù)集群的普通目錄是否為虛擬子目錄,其中數(shù)值是0則表明不是虛擬子目錄,是普通目錄;而參數(shù)是大于0的正數(shù),則表明是虛擬子目錄;
利用上述更改配置文件參數(shù)實例,普通目錄設(shè)置為虛擬子目錄流程可以參考圖3,其中接收將普通目錄設(shè)置為虛擬子目錄的指令后,如啟用更改配置文件參數(shù)來設(shè)置虛擬子目錄,則創(chuàng)建虛擬子目錄,然后遍歷目錄的一層通過hash算法計算存放位置,利用Mv移動到對應(yīng)的虛擬子目錄,導(dǎo)出虛擬子目錄,設(shè)置user.virtualdir值等于1,大于0,因此為虛擬子目錄;其中可以預(yù)先對普通目錄是否為虛擬子目錄進(jìn)行判斷,不是則進(jìn)行創(chuàng)建,是則結(jié)束創(chuàng)建;
虛擬子目錄建立后對元數(shù)據(jù)集群的操作請求,判斷父目錄是否為虛擬目錄,不是則進(jìn)行原有流程進(jìn)行操作,否則進(jìn)入虛擬目錄,對操作名進(jìn)行hash計算,根據(jù)hash值進(jìn)入到相應(yīng)的虛擬子目錄中進(jìn)行操作。
此外,普通目錄可以通過更改配置文件目錄inode中的xattr屬性字段,設(shè)置元數(shù)據(jù)集群的虛擬子目錄的開啟和關(guān)閉功能,繼續(xù)上述實施例,則利用將user.virtualdir值設(shè)置等于0,使虛擬子目錄恢復(fù)成普通目錄,恢復(fù)后相應(yīng)虛擬子目錄可被刪除,此過程為:更改該目錄的User.vartualdir 的屬性為0,將該目錄下的虛擬子目錄的分配mds導(dǎo)回0,之后遍歷目錄的一層,通過Mv操作移動到上級目錄下,相關(guān)目錄操作完成后,將這些目錄刪除。
利用本發(fā)明方法可以高效、便捷地提升元數(shù)據(jù)集群系統(tǒng)的性能,實用性強(qiáng),并且操作便利,不需要人為干預(yù),在提升元數(shù)據(jù)性能的同時,還能夠很好的隱藏目錄。