本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種集群文件系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,集群系統(tǒng)以其強(qiáng)大的運(yùn)算能力和健壯的容錯(cuò)機(jī)制讓其逐步成為計(jì)算機(jī)行業(yè)的焦點(diǎn)。但是作為配套的集群文件系統(tǒng)的發(fā)展受到分布式的影響,發(fā)展緩慢,大部分的集群文件系統(tǒng)是在原有的文件系統(tǒng)的基礎(chǔ)上重新創(chuàng)建虛擬機(jī)需求的文件系統(tǒng)格式。此類文件系統(tǒng)加深了每一次的IO操作的流程,降低了文件系統(tǒng)的訪問速率。因此如何提高集群文件系統(tǒng)的效率,是本領(lǐng)域技術(shù)人員需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種集群文件系統(tǒng),該集群文件系統(tǒng)提供塊設(shè)備使虛擬設(shè)備根據(jù)所需要的文件格式,將該塊設(shè)備格式化為自己需求的文件系統(tǒng),降低了每次IO操作的流程。
為解決上述技術(shù)問題,本發(fā)明提供一種集群文件系統(tǒng),包括:lvm管理模塊,nfs管理模塊;其中,
所述lvm管理模塊,用于根據(jù)塊設(shè)備創(chuàng)建信息創(chuàng)建對應(yīng)的塊設(shè)備提供給集群用戶,使所述集群用戶直接在所述塊設(shè)備中進(jìn)行IO操作;
所述nfs管理模塊,用于在掛載lvm存儲池的節(jié)點(diǎn)掛載nfs文件系統(tǒng),通過sanlock管理所述lvm存儲池。
可選的,所述nfs管理模塊包括:
初始化模塊,用于在創(chuàng)建lvm存儲池時(shí),在所述nfs文件系統(tǒng)中創(chuàng)建對應(yīng)的lvm存儲池鎖信息文件。
可選的,所述初始化模塊具體為在創(chuàng)建lvm存儲池時(shí),通過sanlock執(zhí)行init lockspace,并在每一臺主機(jī)上執(zhí)行add lockspace操作,創(chuàng)建以vg的uuid為名的文件,使所述文件具有對應(yīng)lvm存儲池的資源鎖。
可選的,所述nfs管理模塊包括:
元數(shù)據(jù)一致性單元,用于若接收到元數(shù)據(jù)操作請求時(shí),通過sanlock獲取對應(yīng)的vg鎖資源后執(zhí)行對應(yīng)的元數(shù)據(jù)操作,并在所述元數(shù)據(jù)操作完成后釋放所述vg鎖資源。
可選的,所述nfs管理模塊包括:
塊設(shè)備鎖信息創(chuàng)建單元,用于在創(chuàng)建塊設(shè)備時(shí),在所述nfs文件系統(tǒng)中創(chuàng)建對應(yīng)的塊設(shè)備鎖信息文件。
可選的,所述設(shè)備鎖信息創(chuàng)建單元具體為在創(chuàng)建塊設(shè)備時(shí),通過sanlock創(chuàng)建以所述塊設(shè)備的uuid為名的文件,并通過sanlock執(zhí)行init resource操作,使所述文件具有所述塊設(shè)備的資源鎖。
可選的,所述nfs管理模塊包括:
塊設(shè)備操作單元,用于若接收到塊設(shè)備操作請求時(shí),通過sanlock獲取對應(yīng)的鎖資源后執(zhí)行對應(yīng)的塊設(shè)備操作,并在所述塊設(shè)備操作完成后釋放所述鎖資源。
可選的,所述nfs管理模塊包括:
塊設(shè)備鎖信息刪除單元,用于若接收到塊設(shè)備刪除請求時(shí),通過sanlock檢測到所述塊設(shè)備對應(yīng)的鎖資源未被占用時(shí),刪除所述塊設(shè)備,并在刪除成功后刪除所述塊設(shè)備對應(yīng)的塊設(shè)備鎖信息文件。
可選的,本方案還包括:
鎖信息檢測模塊,用于定時(shí)檢測所述nfs管理模塊中的鎖信息和內(nèi)核中塊設(shè)備信息,并刪除已經(jīng)被刪除的塊設(shè)備對應(yīng)的內(nèi)核信息。
本發(fā)明所提供的一種集群文件系統(tǒng),包括:lvm管理模塊,nfs管理模塊;其中,lvm管理模塊,根據(jù)塊設(shè)備創(chuàng)建信息創(chuàng)建對應(yīng)的塊設(shè)備提供給集群用戶,使集群用戶直接在塊設(shè)備中進(jìn)行IO操作;nfs管理模塊,在掛載lvm存儲池的節(jié)點(diǎn)掛載nfs文件系統(tǒng),通過sanlock管理lvm存儲池;
可見,該集群文件系統(tǒng)提供塊設(shè)備使虛擬設(shè)備根據(jù)所需要的文件格式,直接將該塊設(shè)備格式化為自己需求的文件系統(tǒng),即用戶直接在塊設(shè)備中進(jìn)行IO操作,減少了現(xiàn)有技術(shù)中首先在文件系統(tǒng)中進(jìn)行IO操作的步驟,降低了每次IO操作的流程;同時(shí)提供了較為速度的IO操作,提高集群文件系統(tǒng)的效率,同時(shí)提高了集群的虛擬設(shè)備的IO速度。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例所提供的集群文件系統(tǒng)的結(jié)構(gòu)框圖;
圖2為本發(fā)明實(shí)施例所提供的另一集群文件系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種集群文件系統(tǒng),該集群文件系統(tǒng)提供塊設(shè)備使虛擬設(shè)備根據(jù)所需要的文件格式,將該塊設(shè)備格式化為自己需求的文件系統(tǒng),降低了每次IO操作的流程。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本實(shí)施例中l(wèi)vm即logical volume manager(邏輯卷管理),nfs(network file system)即網(wǎng)絡(luò)文件系統(tǒng),sanlock是一個(gè)軟件實(shí)現(xiàn)的輕量靈活的分布式鎖管理器,在ovirt、libvirt等開源虛擬化項(xiàng)目中都有應(yīng)用。現(xiàn)有技術(shù)中首先在文件系統(tǒng)中進(jìn)行IO操作,然后再由文件系統(tǒng)將對應(yīng)的IO操作寫到塊設(shè)備中,即進(jìn)行了兩次IO操作的流程,降低了IO操作速度。本實(shí)施例中直接提供塊設(shè)備,使其直接在塊設(shè)備中進(jìn)行IO操作,因此節(jié)省了IO操作的流程,提高了IO操作速度。具體請參考圖1,圖1為本發(fā)明實(shí)施例所提供的集群文件系統(tǒng)的結(jié)構(gòu)框圖;該系統(tǒng)可以包括:lvm管理模塊100,nfs管理模塊200;其中,
lvm管理模塊100,用于根據(jù)塊設(shè)備創(chuàng)建信息創(chuàng)建對應(yīng)的塊設(shè)備提供給集群用戶,使集群用戶直接在塊設(shè)備中進(jìn)行IO操作;
具體的,lvm管理模塊100提供具體的塊設(shè)備,以提供給集群使用,增快集群文件系統(tǒng)的訪問速度。
nfs管理模塊200,用于在掛載lvm存儲池的節(jié)點(diǎn)掛載nfs文件系統(tǒng),通過sanlock管理lvm存儲池。
具體的,nfs管理模塊200提供集群管理的依賴文件,通過nfs來判斷作為sanlock鎖管理的存儲目標(biāo)。且nfs管理模塊200中sanlock管理的目的是為了lvm更好的適合集群管理文件,同時(shí)防止集群成員共同的訪問,造成腦裂現(xiàn)象。即nfs文件系統(tǒng)提供了sanlock管理的存儲依賴,即掛載lvm存儲池的節(jié)點(diǎn)都需要掛載該nfs文件系統(tǒng),通過sanlock來管理lvm存儲池,使之適應(yīng)于集群文件系統(tǒng)。
進(jìn)一步,sanlock不僅可以提供鎖管理方案;同時(shí)Sanlock還可以提供一個(gè)弱的集群管理方案,即集群lvm存儲池訪問節(jié)點(diǎn)控制。以提高nfs管理模塊200的管理效率和管理可靠性。
該系統(tǒng)通過lvm管理模塊100和nfs管理模塊200達(dá)到管理控制集群文件系統(tǒng)。通過nfs提供的集群成員可以相互訪問的文件系統(tǒng)來提供共享式可讀寫的文件,通過sanlock提供互斥的鎖的操作,避免資源被不同的機(jī)器復(fù)用。
基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的集群文件系統(tǒng),該系統(tǒng)提供給虛擬設(shè)備以具體的塊文件,虛擬設(shè)備則根據(jù)所需要的文件格式,將該塊設(shè)備格式化為自己需求的文件系統(tǒng),降低了每次IO操作的流程。同時(shí)提供了較為速度的IO操作,提高集群文件系統(tǒng)的效率,同時(shí)提高了集群的虛擬設(shè)備的IO速度。
基于上述實(shí)施例,創(chuàng)建lv時(shí)候?qū)vm的元數(shù)據(jù)操作,因?yàn)槎嗯_主機(jī)都能同時(shí)的訪問創(chuàng)建該lvm存儲池,因此,為了保證lvm的元數(shù)據(jù)的安全性,集群的lvm的每一次對于元數(shù)據(jù)的操作必須是互斥的,因此,通過sanlock來保證集群的對于元數(shù)據(jù)的操作是互斥的,因此sanlock+nfs提供了vg鎖,即對元數(shù)據(jù)的操作必須通過sanlock來獲取vg的鎖,然后在進(jìn)行操作,并在操作完成后釋放該vg鎖。即可選的,本實(shí)施例中nfs管理模塊200可以包括:
初始化模塊,用于在創(chuàng)建lvm存儲池時(shí),在nfs文件系統(tǒng)中創(chuàng)建對應(yīng)的lvm存儲池鎖信息文件。
具體的,初始化模塊具體為在創(chuàng)建lvm存儲池時(shí),通過sanlock執(zhí)行initlockspace,并在每一臺主機(jī)上執(zhí)行add lockspace操作,創(chuàng)建以vg的uuid為名的文件,使文件具有對應(yīng)lvm存儲池的資源鎖。
即首先配置iscsi設(shè)備或者FC塊設(shè)備,通過主機(jī)能夠正常的訪問到該LUN,把每一個(gè)使用該LUN的主機(jī)上掛載一個(gè)每臺主機(jī)都可以訪問到的nfs文件系統(tǒng)。部署sanlock管理軟件,然后在一臺主機(jī)上執(zhí)行init lockspace(以即將創(chuàng)建的vg的uuid為該鎖信息的lockspace name)操作,即初始化該分布式鎖信息,然后在每一臺主機(jī)上執(zhí)行add lockspace操作,即執(zhí)行連接鎖操作,對每一臺主機(jī)進(jìn)行鎖管理操作;創(chuàng)建vg(上述的lockspace name的uuid),然后在nfs文件系統(tǒng)上創(chuàng)建該vg的鎖信息(以vg的uuid為名的文件),然后初始化。
元數(shù)據(jù)一致性單元,用于若接收到元數(shù)據(jù)操作請求時(shí),通過sanlock獲取對應(yīng)的vg鎖資源后執(zhí)行對應(yīng)的元數(shù)據(jù)操作,并在元數(shù)據(jù)操作完成后釋放vg鎖資源。
其中,將若干個(gè)磁盤分區(qū)連接為一個(gè)整塊的卷組(volume group,vg),形成一個(gè)lvm存儲池。
基于上述實(shí)施例,為了防止集群的同時(shí)訪問造成腦裂問題,本實(shí)施例中nfs管理模塊可以包括:
塊設(shè)備鎖信息創(chuàng)建單元,用于在創(chuàng)建塊設(shè)備時(shí),在nfs文件系統(tǒng)中創(chuàng)建對應(yīng)的塊設(shè)備鎖信息文件。
具體的,設(shè)備鎖信息創(chuàng)建單元具體為在創(chuàng)建塊設(shè)備時(shí),通過sanlock創(chuàng)建以塊設(shè)備的uuid為名的文件,并通過sanlock執(zhí)行init resource操作,使文件具有塊設(shè)備的資源鎖。
即每一次創(chuàng)建lv(即塊設(shè)備)的操作必須在該nfs文件系統(tǒng)上面創(chuàng)建以該lv的uuid為名的文件,同時(shí)對該文件執(zhí)行init resource操作,即該文件為該lv的鎖信息。
塊設(shè)備操作單元,用于若接收到塊設(shè)備操作請求時(shí),通過sanlock獲取對應(yīng)的鎖資源后執(zhí)行對應(yīng)的塊設(shè)備操作,并在塊設(shè)備操作完成后釋放鎖資源。
塊設(shè)備鎖信息刪除單元,用于若接收到塊設(shè)備刪除請求時(shí),通過sanlock檢測到塊設(shè)備對應(yīng)的鎖資源未被占用時(shí),刪除塊設(shè)備,并在刪除成功后刪除塊設(shè)備對應(yīng)的塊設(shè)備鎖信息文件。
具體的,每一次使用該lv時(shí)候必須獲取該lv的資源鎖,刪除lv時(shí)候必須同時(shí)刪除該資源鎖。即對于內(nèi)核的lv的殘留數(shù)據(jù)來說,每次創(chuàng)建lv的操作必須通過sanlock創(chuàng)建出來sanlock的資源的鎖,即以lv的uuid為命名的資源信息,每次使用lv的時(shí)候獲取該lv的鎖,然后才能正常的使用,對于lv的刪除操作時(shí)候必須檢查該lv是否已經(jīng)被占用,即該lv正在使用;能夠正常的刪除lv時(shí)候執(zhí)行刪除操作,刪除完成之后必須刪除該lv的鎖信息,避免信息殘留。
基于上述任意實(shí)施例,請參考圖2,本實(shí)施例還可以包括:
鎖信息檢測模塊,用于定時(shí)檢測nfs管理模塊中的鎖信息和內(nèi)核中塊設(shè)備信息,并刪除已經(jīng)被刪除的塊設(shè)備對應(yīng)的內(nèi)核信息。
具體的,其它集群成員節(jié)點(diǎn)需要有定時(shí)任務(wù)去檢測該鎖信息和內(nèi)核lv的信息的內(nèi)容,刪除該已經(jīng)被刪除的lv的內(nèi)核信息。確保系統(tǒng)資源不會被占用。
以上對本發(fā)明所提供的一種集群文件系統(tǒng)進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。