基于UniWhale的分布式文件系統(tǒng)的視窗訪問(wèn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種客戶端訪問(wèn)的技術(shù)領(lǐng)域,尤其是一種基于UniWhale的分布式文件系統(tǒng)的視窗訪問(wèn)方法。
【背景技術(shù)】
[0002]目前分布式數(shù)據(jù)存儲(chǔ)產(chǎn)品UniWhale已經(jīng)成功商用,其節(jié)點(diǎn)布署關(guān)系圖如圖1所示。UniWhale實(shí)現(xiàn)了數(shù)據(jù)文件分布式存儲(chǔ)功能,可以適應(yīng)于性能不苛刻的數(shù)據(jù)共享場(chǎng)合。
[0003]UniWhale系統(tǒng)為三層組織結(jié)構(gòu),按照節(jié)點(diǎn)職能劃分分別是:客戶PC機(jī)節(jié)點(diǎn)、文件代理服務(wù)器和存儲(chǔ)服務(wù)器集群。
[0004]客戶PC機(jī)節(jié)點(diǎn)是安裝了各類(lèi)Windows操作系統(tǒng)的辦公用電腦。客戶PC機(jī)節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)路徑可以像訪問(wèn)本地文件系統(tǒng)一樣容易訪問(wèn)文件代理服務(wù)器上的代理目錄下的各級(jí)目錄和文件,并進(jìn)行創(chuàng)建、讀取、寫(xiě)入、修改、刪除等各類(lèi)操作。這些目錄和文件最終分布式地存儲(chǔ)在各個(gè)存儲(chǔ)服務(wù)器節(jié)點(diǎn),但對(duì)上層的客戶PC機(jī)是透明的。
[0005]文件代理服務(wù)器屏蔽了底層存儲(chǔ)服務(wù)器集群的實(shí)現(xiàn)細(xì)節(jié),客戶PC機(jī)節(jié)點(diǎn)對(duì)底層的數(shù)據(jù)迀移、均衡、備份、擴(kuò)容等操作不可見(jiàn)。在具體實(shí)現(xiàn)上,文件代理服務(wù)器只與存儲(chǔ)服務(wù)器集群中的單個(gè)節(jié)點(diǎn),如圖1中的UniWhale_node2進(jìn)行通迅,而對(duì)存儲(chǔ)于集群中其它節(jié)點(diǎn)上的目錄和文件的操作都需要經(jīng)過(guò)這個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā),這導(dǎo)致存取訪問(wèn)操作效率低,對(duì)文件操作無(wú)法做到并行處理,吞吐量受到嚴(yán)重限制,因而大大限制了分布式文件系統(tǒng)整體性能的發(fā)揮。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種基于UniWhale的分布式文件系統(tǒng)的視窗訪問(wèn)方法,將管理文件存儲(chǔ)位置的功能從現(xiàn)有技術(shù)中的文件存儲(chǔ)服務(wù)器集群中指定的一臺(tái)服務(wù)器移動(dòng)到UniWhale客戶端,使得UniWhale客戶端可以直接與每個(gè)存儲(chǔ)服務(wù)器節(jié)點(diǎn)通訊。UniWhale客戶端在對(duì)每個(gè)目錄或文件進(jìn)行操作之前,首先根據(jù)目錄或文件完整路徑名和存儲(chǔ)服務(wù)器集群的hash值分布空間計(jì)算出目錄或文件所在的具體節(jié)點(diǎn),然后與此節(jié)點(diǎn)進(jìn)行文件訪問(wèn)和相關(guān)操作。經(jīng)過(guò)改造,可以真正實(shí)現(xiàn)對(duì)文件存儲(chǔ)服務(wù)器集群的并行操作,使得文件存儲(chǔ)服務(wù)器系統(tǒng)性能得到極大的提升。有效地克服了存取訪問(wèn)操作效率低,對(duì)文件操作無(wú)法做到并行處理,吞吐量受到嚴(yán)重限制,因而大大限制了分布式文件系統(tǒng)整體性能的發(fā)揮的缺陷。
[0007]為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是:一種基于UniWhale的分布式文件系統(tǒng)的視窗訪問(wèn)方法,具體如下:
[0008]進(jìn)行UniWhale客戶端卷掛載流程,即用戶首先輸入要掛載的存儲(chǔ)服務(wù)器節(jié)點(diǎn)的IP、卷名和本地盤(pán)符名稱(chēng),點(diǎn)擊掛載,接著客戶端會(huì)加載文件系統(tǒng)驅(qū)動(dòng),如果不成功,就提示無(wú)法與驅(qū)動(dòng)連接并結(jié)束UniWhale客戶端卷掛載流程,如果成功,和管理服務(wù)器建立握手并獲取host文件,如果獲取不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果獲取成功了,就與存儲(chǔ)服務(wù)端建立連接,獲取vol文件,如果獲取成功,就分析vol文件和host文件,獲取有效的集群IP,如果獲取有效的集群IP不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果獲取有效的集群IP成功,從掛載服務(wù)器獲取每個(gè)brick的端口信息并建立長(zhǎng)連接,如果連接不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果連接成功,在客戶端創(chuàng)建盤(pán)符,并提示掛載成功和結(jié)束UniWhale客戶端卷掛載流程。
[0009]在UniWhale客戶端進(jìn)行文件創(chuàng)建操作時(shí),先由用戶啟動(dòng)文件創(chuàng)建流程,操作系統(tǒng)調(diào)用存儲(chǔ)客戶端,并將需要?jiǎng)?chuàng)建的路徑、文件名這樣的屬性信息作為輸入?yún)?shù)傳入,存儲(chǔ)客戶端根據(jù)路徑和文件名,得到文件即將位于的存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)客戶端向此存儲(chǔ)服務(wù)器節(jié)點(diǎn)發(fā)送文件查詢(xún)消息,判斷是否存在同名文件,如果存在同名文件,就提示文件名已存在并結(jié)束UniWhale客戶端進(jìn)行文件創(chuàng)建操作,如果不存在同名文件,執(zhí)行文件創(chuàng)建操作,如果創(chuàng)建不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件創(chuàng)建失敗信息并結(jié)束UniWhale客戶端進(jìn)行文件創(chuàng)建操作,如果創(chuàng)建成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件創(chuàng)建成功信息并結(jié)束UniWhale客戶端進(jìn)行文件創(chuàng)建操作。
[0010]在UniWhale客戶端進(jìn)行文件刪除操作時(shí),先由用戶啟動(dòng)文件刪除流程,而操作系統(tǒng)調(diào)用存儲(chǔ)客戶端,并將需要?jiǎng)h除的路徑、文件名這樣的屬性信息作為輸入?yún)?shù)傳入,存儲(chǔ)客戶端根據(jù)路徑和文件名,得到文件位于的存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)客戶端向此存儲(chǔ)服務(wù)器節(jié)點(diǎn)發(fā)送文件查詢(xún)消息,由此判斷文件是否存在,如果文件不存在,就提示文件已不存在并結(jié)束UniWhale客戶端進(jìn)行文件刪除操作,如果文件存在,查詢(xún)文件屬性,判斷文件是否可以刪除,如果不可以刪除,就提示文件不可被刪除并結(jié)束UniWhale客戶端進(jìn)行文件刪除操作,如果可以刪除,執(zhí)行文件刪除操作,如果刪除不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件刪除失敗信息并結(jié)束UniWhale客戶端進(jìn)行文件刪除操作,如果刪除成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件刪除成功信息并結(jié)束UniWhale客戶端進(jìn)行文件刪除操作。
[0011 ]在進(jìn)行查看磁盤(pán)屬性操作時(shí),先由用戶開(kāi)始讀取磁盤(pán)信息,進(jìn)入磁盤(pán)空間,從掛載服務(wù)器獲取磁盤(pán)總空間和可用空間,如果獲取成功,就顯示可用空間和總空間屬性并結(jié)束進(jìn)行查看磁盤(pán)屬性操作,如果獲取不成功,就顯示可用空間和總空間的大小都為O并結(jié)束進(jìn)行查看磁盤(pán)屬性操作。
[0012]在進(jìn)行文件讀取操作時(shí),先由用戶啟動(dòng)文件讀取流程,操作系統(tǒng)調(diào)用存儲(chǔ)客戶端,并將需要讀取的路徑、文件名這樣的屬性信息作為輸入?yún)?shù)傳入,接著判斷文件是否需要遠(yuǎn)程讀取,如果不需要遠(yuǎn)程讀取,就結(jié)束文件讀取操作,如果需要遠(yuǎn)程讀取,存儲(chǔ)客戶端根據(jù)路徑和文件名,得到文件所在的存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)客戶端向文件所在存儲(chǔ)服務(wù)器節(jié)點(diǎn)發(fā)送文件讀取消息,進(jìn)行讀取文件,如果讀取不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回錯(cuò)誤信息并結(jié)束文件讀取操作,如果讀取成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件內(nèi)容和大小這樣的信息并結(jié)束文件讀取操作。
[0013]在文件進(jìn)行寫(xiě)入操作時(shí),先由用戶啟動(dòng)文件寫(xiě)入流程,操作系統(tǒng)調(diào)用存儲(chǔ)客戶端,并將需要寫(xiě)入的路徑、文件名、偏移量、寫(xiě)入內(nèi)容這樣的信息作為輸入?yún)?shù)傳入,判斷該文件是否需要通過(guò)IRP流程,如果不需要通過(guò)IRP流程,就結(jié)束文件進(jìn)行寫(xiě)入操作,如果需要通過(guò)IRP流程,存儲(chǔ)客戶端根據(jù)路徑和文件名,得到文件所在的存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)客戶端向文件所在存儲(chǔ)服務(wù)器節(jié)點(diǎn)發(fā)送讀取文件信息消息,獲取文件屬性和文件ID,如果獲取不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件寫(xiě)入獲取信息并結(jié)束文件進(jìn)行寫(xiě)入操作,如果獲取成功,通過(guò)文件ID打開(kāi)文件,如果打開(kāi)不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件寫(xiě)入打開(kāi)信息并結(jié)束文件進(jìn)行寫(xiě)入操作,如果打開(kāi)成功,執(zhí)行文件寫(xiě)入操作,如果寫(xiě)入不成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件寫(xiě)入失敗信息并結(jié)束文件進(jìn)行寫(xiě)入操作,如果寫(xiě)入成功,存儲(chǔ)服務(wù)器節(jié)點(diǎn)返回文件寫(xiě)入成功信息,最后結(jié)束文件進(jìn)行寫(xiě)入操作。
[0014]在進(jìn)行文件重命名操作時(shí),先由用戶啟動(dòng)文件重命名流程,如果新文件和老文件名稱(chēng)一致,就結(jié)束文件重命名操作,如果新文件和老文件名稱(chēng)不一致,繼續(xù)判斷該文件是否存在,如果不存在,提示找不到指定文件并結(jié)束文件重命名操作,如果存在,繼續(xù)判斷新文件名是否存在,如果存在,就提示新文件名已經(jīng)存在并結(jié)束文件重命名操作,如果不存在,繼續(xù)判斷重命名是不是成功,如果不成功,提示重命名失敗然后結(jié)束文件重命名操作,如成功,就結(jié)束文件重命名操作。
[0015]根據(jù)目錄或文件完整路徑名和存儲(chǔ)服務(wù)器集群的hash值分布空間計(jì)算出目錄或文件所在的具體節(jié)點(diǎn),然后與此節(jié)點(diǎn)建立連接并通訊。經(jīng)過(guò)改造,可以真正實(shí)現(xiàn)對(duì)文件存儲(chǔ)服務(wù)器集群的并行操作,使得文件存儲(chǔ)服務(wù)器系統(tǒng)性能得到極大的提升。
【附圖說(shuō)明】
[0016]圖1是現(xiàn)有技術(shù)的布署關(guān)系圖。
[0017]圖2是本發(fā)明的布署關(guān)系圖。
[0018]圖3是本發(fā)明的UniWhale客戶端卷掛載的流程圖。
[0019]圖4是本發(fā)明的UniWhale客戶端進(jìn)行文件創(chuàng)建操作的流程圖。
[0020]圖5是本發(fā)明的UniWhale客戶端進(jìn)行文件刪除操作的流程圖。
[0021 ]圖6是本發(fā)明的查看磁盤(pán)屬性操作的流程圖。
[0022]圖7是本發(fā)明的文件讀取操作的流程圖。
[0023]圖8是本發(fā)明的文件寫(xiě)入操作的流程圖。
[0024]圖9是本發(fā)明的文件重命名的流程圖。
【具體實(shí)施方式】
[0025]以下結(jié)合附圖給出的實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0026]參見(jiàn)圖1-圖9所示,基于UniWhale的分布式文件系統(tǒng)的視窗訪問(wèn)方法,具體如下:
[0027]進(jìn)行UniWhale客戶端卷掛載流程,即用戶首先輸入要掛載的存儲(chǔ)服務(wù)器節(jié)點(diǎn)的IP、卷名和本地盤(pán)符名稱(chēng),點(diǎn)擊掛載,接著客戶端會(huì)加載文件系統(tǒng)驅(qū)動(dòng),如果不成功,就提示無(wú)法與驅(qū)動(dòng)連接并結(jié)束UniWhale客戶端卷掛載流程,如果成功,和管理服務(wù)器建立握手并獲取host文件,如果獲取不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果獲取成功了,就與存儲(chǔ)服務(wù)端建立連接,獲取vol文件,如果獲取成功,就分析vol文件和host文件,獲取有效的集群IP,如果獲取有效的集群IP不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果獲取有效的集群IP成功,從掛載服務(wù)器獲取每個(gè)brick的端口信息并建立長(zhǎng)連接,如果連接不成功,就提示掛載失敗并結(jié)束UniWhale客戶端卷掛載流程,如果連接成功,在客戶端創(chuàng)建盤(pán)符,并提示掛載成功和結(jié)束UniWhale客戶端卷掛載流程;在UniWhale客戶端進(jìn)行文件創(chuàng)建操作時(shí),先由用戶啟動(dòng)文件創(chuàng)建流程,操作系統(tǒng)調(diào)用存儲(chǔ)客戶端,并將需要?jiǎng)?chuàng)建的路徑、文件名這樣的屬性信息作為輸入?yún)?shù)傳入,存儲(chǔ)客戶端根據(jù)路徑和文件名,得到文件即將位于的存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)客戶端向此存儲(chǔ)服務(wù)器節(jié)點(diǎn)發(fā)送文件查詢(xún)消息,判斷是否存在同名文件,如果存在同名文件,就提示文件名已存在并結(jié)束UniWhale客戶端進(jìn)行文件創(chuàng)建操作,如果不存在同名文