本發(fā)明涉及分布式文件系統(tǒng)領域,更具體地說,涉及一種nfs掛載目錄導出方法及裝置。
背景技術:
云計算時代來臨,分布式文件系統(tǒng)是目前各大云計算廠商研發(fā)的重點之一。在與客戶溝通中發(fā)現(xiàn),通常客戶已經(jīng)有在生產(chǎn)環(huán)境使用的分布式系統(tǒng),為了保證產(chǎn)品的穩(wěn)定,在產(chǎn)品升級換代的周期內,他們希望同時運行兩種以上的文件系統(tǒng),以保證線上環(huán)境的穩(wěn)定性和無縫切換。經(jīng)分析,需要在Linux系統(tǒng)上把后端的不同文件系統(tǒng)通過標準nfs協(xié)議導出,在一臺節(jié)點掛載后端多個文件系統(tǒng),然后在該節(jié)點啟動nfs server,導出本機的nfs掛載目錄。通常,我們稱該節(jié)點為網(wǎng)關節(jié)點。這樣,用戶可以在任意節(jié)點掛載使用文件系統(tǒng)了。但是,因為nfs掛載目錄不是一個完備的文件系統(tǒng),沒有超級塊等信息,所以目前的nfs server不支持將nfs掛載目錄導出。
因此,如何解決網(wǎng)關節(jié)點nfs目錄的二次導出,是本領域技術人員需要解決的問題。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種nfs掛載目錄導出方法及裝置,以實現(xiàn)網(wǎng)關節(jié)點nfs目錄的二次導出。
為實現(xiàn)上述目的,本發(fā)明實施例提供了如下技術方案:
一種nfs掛載目錄導出方法,包括:
接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;
將所述集群根目錄掛載至本節(jié)點的第一目錄;
利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;
通過本節(jié)點的nfs server,將所述第二目錄導出。
其中,所述接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄,包括:
接收后端節(jié)點通過啟動nfs server,導出的分布式文件系統(tǒng)的集群根目錄導出。
其中,所述將所述集群根目錄掛載至本節(jié)點的第一目錄,包括:
將所述集群根目錄掛載至本節(jié)點的/mnt/nfs目錄。
其中,若所述lib-fuse庫位于用戶態(tài),則所述利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄,包括:
啟動hello程序,通過所述hello程序調用lib-fuse庫;
調用POSIX接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
其中,若所述lib-fuse庫位于內核態(tài),則所述利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄,包括:
啟動hello程序,通過所述hello程序調用lib-fuse庫;
調用VFS層的接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
一種nfs掛載目錄導出裝置,包括:
接收模塊,用于接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;
掛載模塊,用于將所述集群根目錄掛載至本節(jié)點的第一目錄;
第一導出模塊,用于利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;
第二導出模塊,用于通過本節(jié)點的nfs server,將所述第二目錄導出。
其中,所述接收模塊具體用于,接收后端節(jié)點通過啟動nfs server,導出的分布式文件系統(tǒng)的集群根目錄導出。
其中,所述掛載模塊將所述集群根目錄掛載至本節(jié)點的/mnt/nfs目錄。
其中,所述第一導出模塊,包括:
第一調用單元,用于通過hello程序調用lib-fuse庫,并調用POSIX接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
其中,所述第一導出模塊,包括:
第二調用單元,用于通過hello程序調用lib-fuse庫,并調用VFS層的接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
通過以上方案可知,本發(fā)明實施例提供的一種nfs掛載目錄導出方法,包括:接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;將所述集群根目錄掛載至本節(jié)點的第一目錄;利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;通過本節(jié)點的nfs server,將所述第二目錄導出;
可見,在本方案中,通過使用fuse用戶態(tài)文件系統(tǒng)機制作中轉,可將網(wǎng)關節(jié)點的nfs目錄通過nfs server二次導出,客戶端便可通過nfs協(xié)議掛載第二目錄至本機,從而可以正常使用分布式文件系統(tǒng),實現(xiàn)了節(jié)點的解耦合統(tǒng)一管理、多種分布式文件系統(tǒng)的共用,以及分布式文件系統(tǒng)的平穩(wěn)升級;本發(fā)明還公開了一種nfs掛載目錄導出裝置,同樣能實現(xiàn)上述技術效果。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的一種nfs掛載目錄導出方法流程示意圖;
圖2為本發(fā)明實施例公開的一種nfs掛載目錄導出裝置結構示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例公開了一種nfs掛載目錄導出方法及裝置,以實現(xiàn)網(wǎng)關節(jié)點nfs目錄的二次導出。
參見圖1,本發(fā)明實施例提供的一種nfs掛載目錄導出方法,包括:
S101、接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;
其中,所述接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄,包括:
接收后端節(jié)點通過啟動nfs server,導出的分布式文件系統(tǒng)的集群根目錄導出。
具體的,在本方案中,需要一部署分布式文件系統(tǒng)的節(jié)點作為文件存儲的后端節(jié)點,通過在該節(jié)點上啟動nfs server,導出集群根目錄,并發(fā)送至網(wǎng)關節(jié)點,也就是網(wǎng)關節(jié)點接收后端節(jié)點導出的分布式文件系統(tǒng)集群根節(jié)點。
S102、將所述集群根目錄掛載至本節(jié)點的第一目錄;
其中,所述將所述集群根目錄掛載至本節(jié)點的第一目錄,包括:將所述集群根目錄掛載至本節(jié)點的/mnt/nfs目錄。
S103、利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;
S104、通過本節(jié)點的nfs server,將所述第二目錄導出。
具體的,在本實施例中,網(wǎng)關節(jié)點通過nfs協(xié)議掛載后端節(jié)點發(fā)送的分布式文件系統(tǒng)的根目錄到本機的/mnt/nfs目錄。同時,啟動程序hello,該程序調用lib-fuse庫,并調用標準Linux POSIX接口讀取/mnt/nfs目錄,然后導出到/tmp/fuse。最后,在該節(jié)點啟動nfs server,便可將/tmp/fuse目錄通過nfs協(xié)議導出??蛻舳斯?jié)點通過nfs協(xié)議掛載/tmp/fuse目錄到本機的任意目錄,便可正常使用分布式文件系統(tǒng)了。
其中,若所述lib-fuse庫位于用戶態(tài),則所述利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄,包括:
啟動hello程序,通過所述hello程序調用lib-fuse庫;調用POSIX接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
相應的,若所述lib-fuse庫位于內核態(tài),調用VFS層的接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
具體的,在本方案中,采用fuse機制時,需要把數(shù)據(jù)從內核態(tài)和用戶態(tài)來回拷貝,這樣導致采用本方案進行讀寫性能很低。因此,可將fsue機制集成到nfs server中,并且,若lib-fuse庫位于內核態(tài),則將POSIX接口換為VFS層的接口,可提升性能??梢?,在本方案中提供的一種基于nfs協(xié)議和fuse實現(xiàn)文件服務器的方案,通過使用fuse用戶態(tài)文件系統(tǒng)機制作中轉,這樣中轉后就成了完備的文件系統(tǒng),就可以通過nfs server導出了。
下面對本發(fā)明實施例提供的nfs掛載目錄導出裝置進行介紹,下文描述的nfs掛載目錄導出裝置與上文描述的nfs掛載目錄導出方法可以相互參照。
參見圖2,本發(fā)明實施例提供的一種nfs掛載目錄導出裝置,包括:
接收模塊100,用于接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;
掛載模塊200,用于將所述集群根目錄掛載至本節(jié)點的第一目錄;
第一導出模塊300,用于利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;
第二導出模塊400,用于通過本節(jié)點的nfs server,將所述第二目錄導出。
基于上述實施例,所述接收模塊具體用于,接收后端節(jié)點通過啟動nfs server,導出的分布式文件系統(tǒng)的集群根目錄導出。
其中,所述掛載模塊將所述集群根目錄掛載至本節(jié)點的/mnt/nfs目錄。
基于上述實施例,所述第一導出模塊,包括:
第一調用單元,用于通過hello程序調用lib-fuse庫,并調用POSIX接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
基于上述實施例,所述第一導出模塊,包括:
第二調用單元,用于通過hello程序調用lib-fuse庫,并調用VFS層的接口讀取/mnt/nfs目錄,導出至lib-fuse庫,生成/tmp/fuse目錄。
本發(fā)明實施例提供的一種nfs掛載目錄導出方法,包括:接收后端節(jié)點導出的分布式文件系統(tǒng)集群根目錄;將所述集群根目錄掛載至本節(jié)點的第一目錄;利用hello程序將所述第一目錄導出至lib-fuse庫,生成第二目錄;通過本節(jié)點的nfs server,將所述第二目錄導出;
可見,在本方案中,通過使用fuse用戶態(tài)文件系統(tǒng)機制作中轉,可將網(wǎng)關節(jié)點的nfs目錄通過nfs server二次導出,客戶端便可通過nfs協(xié)議掛載第二目錄至本機,從而可以正常使用分布式文件系統(tǒng),實現(xiàn)了節(jié)點的解耦合統(tǒng)一管理、多種分布式文件系統(tǒng)的共用,以及分布式文件系統(tǒng)的平穩(wěn)升級;本發(fā)明還公開了一種nfs掛載目錄導出裝置,同樣能實現(xiàn)上述技術效果。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易 見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。