專利名稱:平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器,特別涉及一種平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法。
背景技術(shù):
不斷增長(zhǎng)的在不同主機(jī)之間共享文件的需求推動(dòng)了分布式文件系統(tǒng)的發(fā)展,NFS就是最早出現(xiàn)的分布式文件系統(tǒng)。隨著科學(xué)計(jì)算等應(yīng)用的運(yùn)算規(guī)模的不斷提高,網(wǎng)絡(luò)文件系統(tǒng)(NFS)服務(wù)器的存儲(chǔ)容量在不斷擴(kuò)大,因此NFS服務(wù)器開始配置百兆、千兆以太網(wǎng)卡。隨著用戶對(duì)網(wǎng)絡(luò)速度及帶寬的要求,目前NFS服務(wù)器大都配置有多塊網(wǎng)卡以提高數(shù)據(jù)傳輸速度。
然而當(dāng)前所有NFS實(shí)現(xiàn)中,NFS客戶端只能通過一塊網(wǎng)卡與NFS服務(wù)器進(jìn)行通信,這種實(shí)現(xiàn)對(duì)于擁有多個(gè)物理網(wǎng)卡的高性能I/O服務(wù)器來說,無法充分發(fā)揮服務(wù)器端網(wǎng)絡(luò)負(fù)載的支持能力。
現(xiàn)行NFS服務(wù)器對(duì)多網(wǎng)卡的配置一般采用以下幾種方法(1)服務(wù)器的多塊網(wǎng)卡配置在不同的網(wǎng)段上,同時(shí)將客戶端分成若干組,每組客戶端的網(wǎng)卡配置在相同的網(wǎng)段上,不同組的客戶端配置不同的網(wǎng)段,每組客戶端利用與自己處于相同網(wǎng)段的NFS服務(wù)器網(wǎng)卡地址掛載網(wǎng)絡(luò)文件系統(tǒng),之后的文件訪問均通過該服務(wù)器網(wǎng)卡訪問服務(wù)器。
上述的NFS多網(wǎng)卡配置方法使得網(wǎng)卡的利用率不高,當(dāng)一組客戶端訪問服務(wù)器的負(fù)載很大造成網(wǎng)絡(luò)擁塞而另一組被分配另一塊網(wǎng)卡的客戶端負(fù)載很輕的情況下,會(huì)導(dǎo)致兩塊網(wǎng)卡負(fù)載機(jī)器不均衡,也無法充分發(fā)揮服務(wù)器的I/O帶寬。另外,一旦網(wǎng)絡(luò)失效,由于無法選擇備用網(wǎng)絡(luò),使得客戶端便無法再訪問NFS服務(wù)器。若多塊網(wǎng)卡配置在同一網(wǎng)段,根據(jù)路由規(guī)則服務(wù)器總會(huì)選擇第一塊網(wǎng)卡發(fā)送數(shù)據(jù),難以同時(shí)利用多塊網(wǎng)卡的傳輸能力。
(2)利用網(wǎng)卡綁定技術(shù),多網(wǎng)卡綁定技術(shù)的主要思想是將服務(wù)器的多塊網(wǎng)卡綁定成為一個(gè)虛擬網(wǎng)卡。多個(gè)客戶端通過一個(gè)虛擬網(wǎng)卡訪問NFS服務(wù)器。當(dāng)服務(wù)器網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)時(shí),由網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)多個(gè)物理網(wǎng)卡輪循發(fā)送數(shù)據(jù)包。
上述配置方法一般需要交換機(jī)的支持,因?yàn)榻粨Q機(jī)也需要把數(shù)據(jù)包輪循發(fā)送給服務(wù)器多個(gè)物理網(wǎng)卡。而對(duì)于不支持輪循發(fā)送的交換機(jī)則對(duì)綁定模式的負(fù)載平衡效果又不理想,甚至產(chǎn)生錯(cuò)誤。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)行的NFS服務(wù)器對(duì)多網(wǎng)卡配置及使用方法均不能夠很好的解決多網(wǎng)卡之間負(fù)載平衡問題,無法充分發(fā)揮網(wǎng)絡(luò)提供的帶寬,數(shù)據(jù)傳輸效率較低的缺陷,從而提供一種可較好平衡多網(wǎng)卡間負(fù)載的方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,應(yīng)用于由網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器、交換機(jī)、客戶端組成的網(wǎng)絡(luò)文件系統(tǒng)上,所述方法包括以下步驟1)、為網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上的所有網(wǎng)卡配置網(wǎng)絡(luò)地址;2)、獲取網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上所有網(wǎng)卡的物理地址、網(wǎng)絡(luò)地址及物理設(shè)備的名稱,并記錄在網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器的網(wǎng)卡信息表中;3)、從網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上的所有網(wǎng)卡中選擇一塊網(wǎng)卡為主網(wǎng)卡,其余網(wǎng)卡為從網(wǎng)卡,并為主網(wǎng)卡指定端口號(hào);4)、網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器根據(jù)步驟2)得到的網(wǎng)卡信息表,為每個(gè)網(wǎng)卡創(chuàng)建對(duì)應(yīng)的套接字結(jié)構(gòu),并為每個(gè)從網(wǎng)卡指定一個(gè)端口號(hào),初始化所述的套接字結(jié)構(gòu),將端口號(hào)和步驟2)中所得到的網(wǎng)絡(luò)地址填充到所述的套接字結(jié)構(gòu)中;5)、選擇主網(wǎng)卡的套接字結(jié)構(gòu)為主套接字,并將主網(wǎng)卡的端口號(hào)注冊(cè)到服務(wù)器的端口映射器中;6)、將各個(gè)網(wǎng)卡與該網(wǎng)卡所指定的套接字結(jié)構(gòu)綁定在一起;7)、客戶端向服務(wù)器發(fā)送獲取服務(wù)器網(wǎng)卡物理地址信息、網(wǎng)絡(luò)地址信息及端口號(hào)信息的請(qǐng)求,保存服務(wù)器返回的結(jié)果;8)、根據(jù)步驟7)得到的網(wǎng)卡的信息,以及客戶端自帶的自動(dòng)設(shè)置客戶端arp配置文件,將服務(wù)器所有網(wǎng)卡的網(wǎng)絡(luò)地址及物理地址填充到arp協(xié)議的讀取靜態(tài)解析網(wǎng)絡(luò)地址的文件中,然后運(yùn)行arp配置文件;9)、客戶端利用服務(wù)器主網(wǎng)卡的網(wǎng)絡(luò)地址安裝網(wǎng)絡(luò)文件系統(tǒng);
10)、客戶端通過交換機(jī)與服務(wù)器進(jìn)行通信,客戶端截取遠(yuǎn)程過程調(diào)用協(xié)議數(shù)據(jù)包,該數(shù)據(jù)包的地址域中包括目的網(wǎng)卡的端口號(hào)和網(wǎng)絡(luò)地址,客戶端從步驟7)獲得的服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)作為服務(wù)器網(wǎng)卡目標(biāo)地址,修改所述數(shù)據(jù)包的地址域中目的網(wǎng)卡的網(wǎng)絡(luò)地址和端口號(hào);11)、判斷步驟10)中所選擇的服務(wù)器網(wǎng)卡目標(biāo)地址是否有效,若網(wǎng)卡有效,則執(zhí)行下一步,否則,執(zhí)行步驟13);12)、客戶端向服務(wù)器發(fā)送遠(yuǎn)程過程調(diào)用協(xié)議數(shù)據(jù)包,若發(fā)送失敗,則標(biāo)志網(wǎng)卡無效,并設(shè)置故障開始的時(shí)間,再按照步驟10)重新選擇網(wǎng)卡,若發(fā)送成功,則執(zhí)行步驟15);13)、網(wǎng)卡為無效狀態(tài),探測(cè)從故障時(shí)間到當(dāng)前時(shí)間是否到達(dá)無效時(shí)間間隔閾值,如果到達(dá)無效時(shí)間間隔閾值,執(zhí)行下一步,否則按照步驟10)重新選擇網(wǎng)卡;14)、試探網(wǎng)絡(luò)是否處于連通的狀態(tài),若網(wǎng)絡(luò)連通,則重新發(fā)送數(shù)據(jù)包,發(fā)送成功后,標(biāo)志網(wǎng)卡有效位為有效,若網(wǎng)絡(luò)尚未連通,則重新設(shè)置故障時(shí)間為當(dāng)前時(shí)間,然后按照步驟10)重新選擇網(wǎng)卡;15)、服務(wù)器從網(wǎng)卡接收到數(shù)據(jù)包后,通過步驟4)所創(chuàng)建的套接字結(jié)構(gòu)將數(shù)據(jù)包傳遞給網(wǎng)絡(luò)文件系統(tǒng)服務(wù)線程進(jìn)行處理,服務(wù)器將處理后的結(jié)果通過接受到請(qǐng)求的網(wǎng)卡返還給客戶端。
上述技術(shù)方案中,在所述的步驟1)中,所述的網(wǎng)絡(luò)地址配置在同一網(wǎng)段中。
上述技術(shù)方案中,在所述的步驟2)中,利用ifconfig-a獲取網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上所有網(wǎng)卡的網(wǎng)絡(luò)地址、物理地址以及物理設(shè)備的名稱。
上述技術(shù)方案中,在所述的步驟3)中,所述的主網(wǎng)卡的端口號(hào)為2049號(hào)端口。
上述技術(shù)方案中,在所述的步驟6)中,將所有套接字結(jié)構(gòu)的“sk_bound_dev_if”字段設(shè)置為“1”,使所述的網(wǎng)卡與該網(wǎng)卡所指定的套接字結(jié)構(gòu)綁定在一起。
上述技術(shù)方案中,在所述的步驟10)中,所述的客戶端從步驟7)獲得的服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)作為服務(wù)器網(wǎng)卡目標(biāo)地址時(shí),采用輪循選擇的策略。
上述技術(shù)方案中,所述的多網(wǎng)卡指2個(gè)以上的網(wǎng)卡。
采用本發(fā)明的方法可以使得每個(gè)客戶端充分利用網(wǎng)絡(luò)帶寬,提高網(wǎng)絡(luò)傳輸效率。
圖1為本發(fā)明采用的網(wǎng)絡(luò)文件系統(tǒng)組成圖;圖2為本發(fā)明的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法在客戶端的操作;圖3為本發(fā)明的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法在服務(wù)器端的操作;圖4為本發(fā)明的方法中選擇目標(biāo)地址發(fā)送數(shù)據(jù)請(qǐng)求的流程圖;圖5為網(wǎng)絡(luò)文件系統(tǒng)客戶端與服務(wù)器端的結(jié)構(gòu)圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明的方法進(jìn)行具體說明。
如圖1所示,為常見的NFS系統(tǒng)的結(jié)構(gòu)圖,本實(shí)施例的方法是利用該系統(tǒng),該系統(tǒng)中包括客戶端、交換機(jī)和服務(wù)器,其中的交換機(jī)不需要支持輪循操作,服務(wù)器上具有多塊網(wǎng)卡。
圖5是對(duì)客戶端和服務(wù)器端的進(jìn)一步說明??蛻舳税ㄏ到y(tǒng)調(diào)用層、虛擬文件系統(tǒng)層、網(wǎng)絡(luò)文件系統(tǒng)客戶端模塊、請(qǐng)求負(fù)載分發(fā)模塊、遠(yuǎn)程過程調(diào)用客戶端模塊。服務(wù)器端包括系統(tǒng)調(diào)用層、虛擬文件系統(tǒng)層、網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器端模塊、網(wǎng)絡(luò)通道并發(fā)模塊、遠(yuǎn)程過程調(diào)用服務(wù)器端模塊。
利用本發(fā)明的方法平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載時(shí),需要在服務(wù)器和客戶端分別進(jìn)行操作,下面對(duì)其操作過程分別進(jìn)行以下描述。
對(duì)服務(wù)器的操作步驟1.1、為NFS服務(wù)器上的所有網(wǎng)卡配置網(wǎng)絡(luò)地址,這些地址可配置為屬于同一個(gè)網(wǎng)段,也可配置為屬于不同的網(wǎng)段。
步驟1.2、利用ifconfig-a獲取NFS服務(wù)器上所有網(wǎng)卡的網(wǎng)絡(luò)地址、物理地址以及物理設(shè)備的名稱,并將所得到的每塊網(wǎng)卡的信息記錄在一個(gè)表中。例如,在NFS服務(wù)器上的第一塊網(wǎng)卡的網(wǎng)絡(luò)地址是159.211.10.101,其物理設(shè)備名稱是eth0,其物理地址為00:0C:76:9D:37:69,上述信息都記錄到網(wǎng)卡信息表中。
步驟1.3、從NFS服務(wù)器的網(wǎng)卡中選擇一塊主網(wǎng)卡,服務(wù)器中的其他網(wǎng)卡即為從網(wǎng)卡。在選擇主網(wǎng)卡時(shí),可任意選定一塊網(wǎng)卡為主網(wǎng)卡,并將主網(wǎng)卡的端口號(hào)指定為2049號(hào)端口。
步驟1.4、服務(wù)器根據(jù)步驟1.2得到的網(wǎng)卡信息表,為每個(gè)網(wǎng)卡創(chuàng)建對(duì)應(yīng)的套接字結(jié)構(gòu),并初始化套接字結(jié)構(gòu),為網(wǎng)卡指定一個(gè)端口號(hào),將步驟1.2中所得到的網(wǎng)絡(luò)地址和端口號(hào)填充到所述的套接字結(jié)構(gòu)中。通過上述操作,擴(kuò)展了網(wǎng)卡與NFS服務(wù)線程的數(shù)據(jù)傳輸通道個(gè)數(shù),由原來共用一個(gè)通道擴(kuò)展為與網(wǎng)卡個(gè)數(shù)匹配的通道數(shù),增加了數(shù)據(jù)傳輸?shù)牟l(fā)度,可以提高數(shù)據(jù)的傳輸性能。
步驟1.5、選擇主網(wǎng)卡的套接字為主套接字,其服務(wù)端口號(hào)為2049,向服務(wù)器端口映射器進(jìn)行端口號(hào)注冊(cè),其余套接字并不向端口映射器注冊(cè)端口號(hào)。
所述的端口映射器的作用是當(dāng)客戶端不知道服務(wù)端口號(hào)時(shí),可以向服務(wù)器查詢。服務(wù)器根據(jù)端口映射器中注冊(cè)的信息,返回給用戶所請(qǐng)求服務(wù)的端口號(hào)。
在此步驟中,為NFS服務(wù)器指定了多個(gè)服務(wù)端口(即套接字),但是只有公開默認(rèn)的2049號(hào)端口向端口映射器進(jìn)行了注冊(cè)。由于在安裝(mount)服務(wù)器端NFS文件系統(tǒng)時(shí),為了保留原有的mount協(xié)議,只指定了服務(wù)器端主網(wǎng)卡的地址。
步驟1.6、同時(shí)將所有套接字的“sk_bound_dev_if”字段設(shè)置為“1”,使得套接字結(jié)構(gòu)與所指定的網(wǎng)卡綁定在一起。將套接字與指定的網(wǎng)卡綁定在一起,使得當(dāng)網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)包時(shí)就不會(huì)查詢路由表發(fā)送數(shù)據(jù),避免了對(duì)于處于同一網(wǎng)段的網(wǎng)卡總是選擇首個(gè)網(wǎng)卡發(fā)送的問題。
完成服務(wù)器端的操作后,服務(wù)器把主網(wǎng)卡的網(wǎng)絡(luò)地址和服務(wù)器端口號(hào)發(fā)送給客戶端,然后在客戶端中完成以下的操作步驟2.1、客戶端向服務(wù)器發(fā)送獲取服務(wù)器網(wǎng)卡物理地址信息和網(wǎng)絡(luò)地址信息及端口號(hào)信息的請(qǐng)求,將服務(wù)器返回的結(jié)果保存在表中;在本步驟中所述的服務(wù)器網(wǎng)卡包括前述的主網(wǎng)卡和從網(wǎng)卡。
步驟2.2、根據(jù)得到的網(wǎng)卡信息及自動(dòng)設(shè)置客戶端arp配置文件,將服務(wù)器多個(gè)網(wǎng)卡的網(wǎng)絡(luò)地址及物理地址填充到arp協(xié)議的讀取靜態(tài)解析網(wǎng)絡(luò)地址的文件中;然后運(yùn)行arp使配置生效,使得后續(xù)步驟中ethernet協(xié)議可以把目標(biāo)IP地址轉(zhuǎn)化為網(wǎng)卡物理地址,可以在媒體介質(zhì)上傳輸數(shù)據(jù)。
步驟2.3、客戶端利用服務(wù)器主網(wǎng)卡的網(wǎng)絡(luò)地址安裝(mount)NFS文件系統(tǒng)。完成本步驟的操作后,客戶端即可使用網(wǎng)絡(luò)文件系統(tǒng)。
步驟2.4、當(dāng)客戶端通過交換機(jī)與服務(wù)器進(jìn)行通信時(shí),客戶端截取遠(yuǎn)程過程調(diào)用協(xié)議(RPC)數(shù)據(jù)包,該數(shù)據(jù)包的地址域中包括發(fā)送的目的網(wǎng)卡端口號(hào)和網(wǎng)絡(luò)地址,在默認(rèn)情況下,所述的目的網(wǎng)卡和網(wǎng)絡(luò)地址是服務(wù)器中的主網(wǎng)卡的地址,網(wǎng)卡端口號(hào)為2049端口號(hào)。客戶端從步驟2.1獲得的服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)目標(biāo)地址,修改RPC數(shù)據(jù)包中的地址域中目的網(wǎng)卡的地址和端口號(hào),這樣網(wǎng)絡(luò)層就可以根據(jù)目標(biāo)地址將數(shù)據(jù)包發(fā)送到指定服務(wù)器網(wǎng)卡。在從服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)目標(biāo)地址時(shí),采用輪循選擇的策略,根據(jù)該策略可實(shí)現(xiàn)對(duì)網(wǎng)卡的動(dòng)態(tài)選擇。
步驟2.5、判斷上一步驟中選擇的服務(wù)器網(wǎng)卡目標(biāo)地址是否有效,若網(wǎng)卡標(biāo)志為有效狀態(tài),則執(zhí)行下一步,否則,執(zhí)行步驟2.7;步驟2.6、客戶端向服務(wù)器發(fā)送遠(yuǎn)程過程調(diào)用協(xié)議(RPC)數(shù)據(jù)包,若發(fā)送失敗,則標(biāo)志網(wǎng)卡無效,并設(shè)置故障開始的時(shí)間,再按照步驟2.4重新選擇網(wǎng)卡,若發(fā)送成功,則執(zhí)行步驟2.9步驟2.7、網(wǎng)卡為無效狀態(tài),探測(cè)從故障時(shí)間到當(dāng)前時(shí)間是否到達(dá)無效時(shí)間間隔閾值,如果到達(dá)無效時(shí)間間隔閾值,執(zhí)行下一步,否則按照步驟2.4重新選擇網(wǎng)卡;步驟2.8、試探網(wǎng)絡(luò)是否處于連通的狀態(tài),若網(wǎng)絡(luò)連通,則重新發(fā)送數(shù)據(jù)包,發(fā)送成功后,標(biāo)志網(wǎng)卡有效位為有效,若網(wǎng)絡(luò)尚未連通,則重新設(shè)置故障時(shí)間為當(dāng)前時(shí)間,然后按照步驟2.4重新選擇網(wǎng)卡;步驟2.9、服務(wù)器從網(wǎng)卡接收到數(shù)據(jù)包后,通過所述創(chuàng)建的套接字傳遞給網(wǎng)絡(luò)文件系統(tǒng)服務(wù)線程(nfsd),服務(wù)器將處理后的結(jié)果仍然從接受到請(qǐng)求的網(wǎng)卡發(fā)送給客戶端。
圖4是客戶端發(fā)起服務(wù)器文件訪問請(qǐng)求的流程實(shí)例。以客戶端寫操作為例,客戶端應(yīng)用程序調(diào)用寫操作系統(tǒng),虛擬文件系統(tǒng)層將操作轉(zhuǎn)化為多個(gè)網(wǎng)絡(luò)文件系統(tǒng)寫操作請(qǐng)求,請(qǐng)求負(fù)載分發(fā)模塊截獲請(qǐng)求,為其選擇目標(biāo)地址,遠(yuǎn)程過程調(diào)用客戶端模塊將請(qǐng)求發(fā)往所指定的服務(wù)器目標(biāo)地址。服務(wù)器將接受到的請(qǐng)求交給網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器端模塊進(jìn)行處理,將數(shù)據(jù)寫回磁盤后,將應(yīng)答信息交給網(wǎng)絡(luò)通道并發(fā)模塊,該模塊按照初始化時(shí)設(shè)置的網(wǎng)卡設(shè)備與套接字綁定的原則將應(yīng)答數(shù)據(jù)包傳給遠(yuǎn)程過程調(diào)用服務(wù)器端模塊,并從接受與該應(yīng)答數(shù)據(jù)包相應(yīng)的請(qǐng)求數(shù)據(jù)包的網(wǎng)卡發(fā)送給客戶端。
權(quán)利要求
1.一種平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,應(yīng)用于由網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器、交換機(jī)、客戶端組成的網(wǎng)絡(luò)文件系統(tǒng)上,所述方法分別在服務(wù)器和客戶端進(jìn)行操作,包括以下步驟1)、首先給網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上的所有網(wǎng)卡配置網(wǎng)絡(luò)地址;2)、獲取網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上所有網(wǎng)卡的物理地址、網(wǎng)絡(luò)地址及物理設(shè)備的名稱,并記錄在網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器的網(wǎng)卡信息表中;3)、從網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上的所有網(wǎng)卡中選擇一塊網(wǎng)卡為主網(wǎng)卡,其余網(wǎng)卡為從網(wǎng)卡,并為主網(wǎng)卡指定端口號(hào);4)、網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器根據(jù)步驟2)得到的網(wǎng)卡信息表,為每個(gè)網(wǎng)卡創(chuàng)建對(duì)應(yīng)的套接字結(jié)構(gòu),并為每個(gè)從網(wǎng)卡指定一個(gè)端口號(hào),初始化所述的套接字結(jié)構(gòu),將端口號(hào)和步驟2)中所得到的網(wǎng)絡(luò)地址填充到所述的套接字結(jié)構(gòu)中;5)、選擇主網(wǎng)卡的套接字結(jié)構(gòu)為主套接字,并將主網(wǎng)卡的端口號(hào)注冊(cè)到服務(wù)器的端口映射器中;6)、將各個(gè)網(wǎng)卡與該網(wǎng)卡所指定的套接字結(jié)構(gòu)綁定在一起;7)、客戶端向服務(wù)器發(fā)送獲取服務(wù)器網(wǎng)卡物理地址信息、網(wǎng)絡(luò)地址信息及端口號(hào)信息的請(qǐng)求,保存服務(wù)器返回的結(jié)果;8)、根據(jù)步驟7)得到的網(wǎng)卡的信息,以及客戶端自帶的自動(dòng)設(shè)置客戶端arp配置文件,將服務(wù)器所有網(wǎng)卡的網(wǎng)絡(luò)地址及物理地址填充到arp協(xié)議的讀取靜態(tài)解析網(wǎng)絡(luò)地址的文件中,然后運(yùn)行arp配置文件;9)、客戶端利用服務(wù)器主網(wǎng)卡的網(wǎng)絡(luò)地址安裝網(wǎng)絡(luò)文件系統(tǒng);10)、客戶端通過交換機(jī)與服務(wù)器進(jìn)行通信,客戶端截取遠(yuǎn)程過程調(diào)用協(xié)議數(shù)據(jù)包,該數(shù)據(jù)包的地址域中包括目的網(wǎng)卡的端口號(hào)和網(wǎng)絡(luò)地址,客戶端從步驟7)獲得的服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)作為服務(wù)器網(wǎng)卡目標(biāo)地址,修改所述數(shù)據(jù)包的地址域中目的網(wǎng)卡的網(wǎng)絡(luò)地址和端口號(hào);11)、判斷步驟10)中所選擇的服務(wù)器網(wǎng)卡目標(biāo)地址是否有效,若網(wǎng)卡有效,則執(zhí)行下一步,否則,執(zhí)行步驟13);12)、客戶端向服務(wù)器發(fā)送遠(yuǎn)程過程調(diào)用協(xié)議數(shù)據(jù)包,若發(fā)送失敗,則標(biāo)志網(wǎng)卡無效,并設(shè)置故障開始的時(shí)間,再按照步驟10)重新選擇網(wǎng)卡,若發(fā)送成功,則執(zhí)行步驟15);13)、網(wǎng)卡為無效狀態(tài),探測(cè)從故障時(shí)間到當(dāng)前時(shí)間是否到達(dá)無效時(shí)間間隔閾值,如果到達(dá)無效時(shí)間間隔閾值,執(zhí)行下一步,否則按照步驟10)重新選擇網(wǎng)卡;14)、試探網(wǎng)絡(luò)是否處于連通的狀態(tài),若網(wǎng)絡(luò)連通,則重新發(fā)送數(shù)據(jù)包,發(fā)送成功后,標(biāo)志網(wǎng)卡有效位為有效,若網(wǎng)絡(luò)尚未連通,則重新設(shè)置故障時(shí)間為當(dāng)前時(shí)間,然后按照步驟10)重新選擇網(wǎng)卡;15)、服務(wù)器從網(wǎng)卡接收到數(shù)據(jù)包后,通過步驟4)所創(chuàng)建的套接字結(jié)構(gòu)將數(shù)據(jù)包傳遞給網(wǎng)絡(luò)文件系統(tǒng)服務(wù)線程進(jìn)行處理,服務(wù)器將處理后的結(jié)果通過接受到請(qǐng)求的網(wǎng)卡返還給客戶端。
2.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,在所述的步驟1)中,所述的網(wǎng)絡(luò)地址配置在同一網(wǎng)段中。
3.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,在所述的步驟2)中,利用ifconfig-a獲取網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器上所有網(wǎng)卡的網(wǎng)絡(luò)地址、物理地址以及物理設(shè)備的名稱。
4.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,在所述的步驟3)中,所述的主網(wǎng)卡的端口號(hào)為2049號(hào)端口。
5.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,在所述的步驟6)中,將所有套接字結(jié)構(gòu)的“sk_bound_dev_if”字段設(shè)置為“1”,使所述的網(wǎng)卡與該網(wǎng)卡所指定的套接字結(jié)構(gòu)綁定在一起。
6.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,在所述的步驟10)中,所述的客戶端從步驟7)獲得的服務(wù)器網(wǎng)絡(luò)地址和端口地址對(duì)中選擇一個(gè)作為服務(wù)器網(wǎng)卡目標(biāo)地址時(shí),采用輪循選擇的策略。
7.根據(jù)權(quán)利要求1所述的平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,其特征在于,所述的多網(wǎng)卡指2個(gè)以上的網(wǎng)卡。
全文摘要
本發(fā)明提供一種平衡網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器多網(wǎng)卡間負(fù)載的方法,包括網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器為每個(gè)網(wǎng)卡配置網(wǎng)絡(luò)地址;在多個(gè)網(wǎng)卡中選擇一個(gè)主網(wǎng)卡,為每個(gè)網(wǎng)卡創(chuàng)建套接字;將網(wǎng)卡與套接字結(jié)構(gòu)綁定在一起;網(wǎng)絡(luò)文件系統(tǒng)客戶端獲取服務(wù)器以太網(wǎng)地址;客戶端從獲取的服務(wù)器多塊網(wǎng)卡地址中以輪循選擇的方式選擇一個(gè)網(wǎng)絡(luò)地址發(fā)送文件訪問請(qǐng)求;服務(wù)器端接受到請(qǐng)求后交由網(wǎng)絡(luò)文件系統(tǒng)服務(wù)進(jìn)程進(jìn)行處理,將處理結(jié)果通過接受請(qǐng)求的網(wǎng)卡發(fā)送給客戶端。本發(fā)明充分利用了服務(wù)器網(wǎng)絡(luò)帶寬資源,提高了文件訪問吞吐率。
文檔編號(hào)H04L12/28GK1878147SQ200610089538
公開日2006年12月13日 申請(qǐng)日期2006年6月30日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者陳歡, 唐榮鋒, 熊勁, 馬捷 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所