專利名稱::嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)及其方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及的嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)包括NFS客戶端和NFS服務(wù)器端,其中NFS客戶端和NFS服務(wù)器端相連傳輸網(wǎng)絡(luò)報(bào)文信息和請(qǐng)求信息。所述的NFS客戶端包括NFS模塊和RPC客戶模塊,其中NFS模塊與RPC客戶模塊相連傳輸用戶的讀寫文件請(qǐng)求信息,RPC客戶模塊與NFS服務(wù)器端相連傳輸RPC請(qǐng)求報(bào)文信息。所述的NFS服務(wù)器端包括接收請(qǐng)求模塊、處理請(qǐng)求模塊、FCB管理模塊和RPC服務(wù)模塊,其中RPC服務(wù)模塊與NFS客戶端相連傳輸RPC請(qǐng)求報(bào)文信息,RPC服務(wù)模塊與接收請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,接收請(qǐng)求模塊與處理請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,處理請(qǐng)求模塊與FCB管理模塊相連傳輸文件信息,處理請(qǐng)求模塊與RPC服務(wù)模塊相連傳輸RPC應(yīng)答報(bào)文信息。本發(fā)明涉及的上述嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的存儲(chǔ)方法,包括以下步驟第一步,NFS服務(wù)器端根據(jù)已知的文件名F,為文件F分配N1大小的連續(xù)空間,并向文件F寫入Nl個(gè)空字符"NULL"。第二步,NFS服務(wù)器端進(jìn)入只寫不讀的應(yīng)用情景,啟動(dòng)NFS服務(wù),輸出共享目錄D,此時(shí)NFS服務(wù)器端的接收請(qǐng)求模塊和RPC服務(wù)模塊處于運(yùn)行狀態(tài),監(jiān)聽NFS客戶端的請(qǐng)求。第三步,當(dāng)NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求掛載NFS服務(wù)器端輸出的共享目錄D至本地文件系統(tǒng),NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理。第四步,NFS客戶端掛載共享目錄D成功后,再次向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求寫該目錄中的文件F,NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求,從而完成NFS服務(wù)器端處理寫文件的請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的寫文件的應(yīng)答報(bào)文。所述的NFS服務(wù)器端處理寫文件的請(qǐng)求,具體步驟為1)處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,當(dāng)找到FCB結(jié)構(gòu)后,執(zhí)行3);否則執(zhí)行2);2)處理請(qǐng)求模塊將文件句柄轉(zhuǎn)換為文件名,并調(diào)用FCB管理模塊創(chuàng)建一個(gè)該文件的FCB結(jié)構(gòu),放入FCB數(shù)組中;3)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,若文件未打開過,進(jìn)行本地系統(tǒng)調(diào)用open()打開文件,并將文件描述符存放到FCB中,若文件已打開,直接獲取其文件描述符;4)處理請(qǐng)求模塊根據(jù)文件描述符對(duì)該文件進(jìn)行寫操作,若寫入文件大小超過第一步中預(yù)分配的文件范圍,使用文件系統(tǒng)自動(dòng)為其分配的空間,寫完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端。第五步,NFS服務(wù)器端進(jìn)入只讀不寫的應(yīng)用情景,用戶在NFS服務(wù)器端獲取文件真實(shí)大小后,進(jìn)行本地系統(tǒng)調(diào)用執(zhí)行ftruncate操作對(duì)文件重新設(shè)置大小。所述的獲取文件真實(shí)大小,具體步驟為1)設(shè)定置信長度N2,并設(shè)定一個(gè)低端L和高端H用于限定查找范圍,L的初始值為文件頭,即第1個(gè)字節(jié),H的初始值為文件尾,即第Nl個(gè)字節(jié);2)判斷Nl與置信長度N2的大小,當(dāng)Nl小于N2時(shí),從文件末尾起向前掃描文件直到第一個(gè)非"NULL"字符作為文件真實(shí)大小的末端;當(dāng)N1大于N2時(shí),找到(L,H)的中間字符,即第(Nl+1)/2個(gè)字節(jié)或第Nl/2個(gè)字符;3)判斷該字符是否是"NULL";4)當(dāng)該字符為非"NULL",則將L置為該字符之后的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)字符為"NULL",則從該字符起向前掃描,統(tǒng)計(jì)前面的連續(xù)"NULL"字符的數(shù)量N3,若N3達(dá)到置信長度N2,停止統(tǒng)計(jì);5)判斷N3與置信長度N2的大小,當(dāng)N3等于置信長度N2,則將H置為該字符之前的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)N3小于置信長度N2,則從該字符起向后掃描,統(tǒng)計(jì)后面的連續(xù)"NULL"字符的數(shù)量N4,若N3+N4達(dá)到置信長度N2,停止統(tǒng)計(jì);6)判斷N3+N4與置信長度N2的大小,當(dāng)N3+N4小于置信長度N2,則將L置為該字符之后的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)N3+N4等于置信長度N2,則從該字符起向前掃描文件直到第一個(gè)非"NULL"字符作為文件真實(shí)大小的末端。第六步,NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求讀目錄D中的文件F,NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理,從而完成NFS服務(wù)器端處理讀文件的請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的讀文件的應(yīng)答報(bào)文。所述的NFS服務(wù)器端處理讀文件的請(qǐng)求,具體步驟為1)處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,當(dāng)找到FCB結(jié)構(gòu)時(shí),執(zhí)行3);當(dāng)沒有找到FCB結(jié)構(gòu)時(shí),執(zhí)行2);2)處理請(qǐng)求模塊將文件句柄轉(zhuǎn)換為文件名,并調(diào)用FCB管理模塊創(chuàng)建一個(gè)該文件的FCB結(jié)構(gòu),放入FCB數(shù)組中;3)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,若該文件未打開過,進(jìn)行本地系統(tǒng)調(diào)用open()打開文件,并將文件描述符存放到FCB中;若文件已打開,直接獲取其文件描述符;4)處理請(qǐng)求模塊根據(jù)文件描述符對(duì)該文件進(jìn)行讀操作,讀完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是NFS服務(wù)器端在處理讀寫文件請(qǐng)求時(shí)減少了打開和關(guān)閉文件的次數(shù),同時(shí)有效減少了磁盤尋道時(shí)間和旋轉(zhuǎn)等待時(shí)間,降低了嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的CPU開銷,提高了NFS系統(tǒng)的吞吐量。圖1為本發(fā)明的系統(tǒng)組成示意圖。具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的方法進(jìn)一步描述本實(shí)施例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。實(shí)施例如圖1所示,本實(shí)施例涉及的嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)包括NFS客戶端和NFS服務(wù)器端,其中NFS客戶端和NFS服務(wù)器端相連傳輸網(wǎng)絡(luò)報(bào)文信息和請(qǐng)求信息。所述的NFS客戶端包括NFS模塊和RPC客戶模塊,其中NFS模塊與RPC客戶模塊相連傳輸用戶的讀寫文件請(qǐng)求信息,RPC客戶模塊與NFS服務(wù)器端相連傳輸RPC請(qǐng)求報(bào)文信息。所述的NFS服務(wù)器端包括接收請(qǐng)求模塊、處理請(qǐng)求模塊、FCB管理模塊和RPC服務(wù)模塊,其中RPC服務(wù)模塊與RPC客戶模塊相連傳輸RPC請(qǐng)求報(bào)文信息,RPC服務(wù)模塊與接收請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,接收請(qǐng)求模塊與處理請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,處理請(qǐng)求模塊與FCB管理模塊相連傳輸文件信息,處理請(qǐng)求模塊與RPC服務(wù)模塊相連傳輸RPC應(yīng)答報(bào)文信息。本實(shí)施例涉及的上述嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的存儲(chǔ)方法,包括以下步驟第一步,NFS服務(wù)器端根據(jù)已知的文件名foo,為文件foo分配20480字節(jié)大小的連續(xù)空間,并向文件foo寫入20480個(gè)空字符"NULL"。第二步,NFS服務(wù)器端進(jìn)入只寫不讀的應(yīng)用情景,啟動(dòng)NFS服務(wù),輸出共享目錄bar,此時(shí)NFS服務(wù)器端的接收請(qǐng)求模塊和RPC服務(wù)模塊處于運(yùn)行狀態(tài),監(jiān)聽NFS客戶端的請(qǐng)求。第三步,當(dāng)NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求掛載NFS服務(wù)器端輸出的共享目錄bar至本地文件系統(tǒng),NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理。第四步,NFS客戶端掛載共享目錄bar成功后,再次向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求向該目錄中的文件foo的開頭寫入10240個(gè)字節(jié),NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求,從而完成NFS服務(wù)器端處理寫文件的請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的寫文件的應(yīng)答報(bào)文。所述的NFS服務(wù)器端處理寫文件的請(qǐng)求,具體步驟為1)由于這是一個(gè)寫文件請(qǐng)求,處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,由于這是第一個(gè)寫文件請(qǐng)求,F(xiàn)CB數(shù)組目前為空,找不到對(duì)應(yīng)的FCB結(jié)構(gòu);2)處理請(qǐng)求模塊將文件句柄轉(zhuǎn)換為文件名,并調(diào)用FCB管理模塊創(chuàng)建一個(gè)文件foo的FCB結(jié)構(gòu),放入FCB數(shù)組中;3)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,文件foo未打開過,進(jìn)行本地系統(tǒng)調(diào)用open()打開文件,并將文件描述符存放到FCB中;4)處理請(qǐng)求模塊根據(jù)文件foo的文件描述符對(duì)該文件進(jìn)行寫操作,向該文件寫入10240字節(jié)大小的數(shù)據(jù),寫完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端。第五步,NFS服務(wù)器端進(jìn)入只讀不寫的應(yīng)用情景,用戶在NFS服務(wù)器端獲取文件foo真實(shí)大小后,進(jìn)行本地系統(tǒng)調(diào)用執(zhí)行ftruncate操作對(duì)文件重新設(shè)置大小。所述的獲取文件foo真實(shí)大小,具體步驟為1)設(shè)定置信長度4096字節(jié)大小,并設(shè)定一個(gè)低端L和高端H用于限定查找范圍,L的初始值為文件頭,即第1個(gè)字節(jié),H的初始值為文件尾,即第20480個(gè)字節(jié);2)判斷foo文件大小20480字節(jié)與置信長度4096字節(jié)的大小,foo文件大于置信長度,找到(1,20480)的中間字符,即第10240個(gè)字節(jié);3)判斷該字符是否是"NULL";4)該字符為非"NULL",則將L置為畫l,找到(10241,20480)的中間字符,即第15360個(gè)字符,該字符為"NULL",則從該字符起向前掃描,統(tǒng)計(jì)前面的連續(xù)"NULL"字符的數(shù)量,一共是2560個(gè);5)由于2560小于4096,從該字符起向后掃描,統(tǒng)計(jì)后面的連續(xù)"NULL"字符,統(tǒng)計(jì)到1536個(gè)為止,這樣前后一共統(tǒng)計(jì)了4096個(gè)"NULL"字符;6)由于4096等于置信長度,則從該字符起向前掃描文件直到第一個(gè)非"NULL"字符,即第10240個(gè)字節(jié),作為文件有效范圍的末端,文件的真實(shí)大小就是10240字節(jié),獲取文件真實(shí)大小之后,進(jìn)行本地系統(tǒng)調(diào)用執(zhí)行ftruncate操作對(duì)文件重新設(shè)置大小為10240字節(jié)。第六步,NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求讀目錄bar中的文件foo開頭起2560個(gè)字節(jié),NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理,從而完成NFS服務(wù)器端的讀文件請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的讀文件的應(yīng)答報(bào)文。所述的NFS服務(wù)器端處理讀文件的請(qǐng)求,具體步驟為1)由于這是一個(gè)讀文件請(qǐng)求,處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,找到FCB結(jié)構(gòu);2)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,由于foo文件已打開,直接獲取其文件描述符;3)處理請(qǐng)求模塊根據(jù)文件foo的文件描述符對(duì)該文件進(jìn)行讀操作,讀完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端,NFS客戶端收到NFS服務(wù)器端的應(yīng)答報(bào)文。采用本實(shí)施例方法和現(xiàn)有技術(shù)從NFS客戶端向NFS服務(wù)器端拷貝一個(gè)大小為120MB的文件,所花時(shí)間以及寫文件速度的對(duì)比數(shù)值如表1所示,從表1中可以發(fā)現(xiàn),本實(shí)施例方法大大提高了NFS服務(wù)器端讀寫文件的性能。表18<table>tableseeoriginaldocumentpage9</column></row><table>權(quán)利要求一種嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),其特征在于,包括NFS客戶端和NFS服務(wù)器端,其中NFS客戶端和NFS服務(wù)器端相連傳輸網(wǎng)絡(luò)報(bào)文信息和請(qǐng)求信息;所述的NFS客戶端包括NFS模塊和RPC客戶模塊,其中NFS模塊與RPC客戶模塊相連傳輸用戶的讀寫文件請(qǐng)求信息,RPC客戶模塊與NFS服務(wù)器端相連傳輸RPC請(qǐng)求報(bào)文信息;所述的NFS服務(wù)器端包括接收請(qǐng)求模塊、處理請(qǐng)求模塊、FCB管理模塊和RPC服務(wù)模塊,其中RPC服務(wù)模塊與NFS客戶端相連傳輸RPC請(qǐng)求報(bào)文信息,RPC服務(wù)模塊與接收請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,接收請(qǐng)求模塊與處理請(qǐng)求模塊相連傳輸NFS請(qǐng)求報(bào)文信息,處理請(qǐng)求模塊與FCB管理模塊相連傳輸文件信息,處理請(qǐng)求模塊與RPC服務(wù)模塊相連傳輸RPC應(yīng)答報(bào)文信息。2.—種根據(jù)權(quán)利要求1所述的嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的存儲(chǔ)方法,其特征在于,包括以下步驟第一步,NFS服務(wù)器端根據(jù)已知的文件名F,為文件F分配N1大小的連續(xù)空間,并向文件F寫入Nl個(gè)空字符"NULL";第二步,NFS服務(wù)器端進(jìn)入只寫不讀的應(yīng)用情景,啟動(dòng)NFS服務(wù),輸出共享目錄D,此時(shí)NFS服務(wù)器端的接收請(qǐng)求模塊和RPC服務(wù)模塊處于運(yùn)行狀態(tài),監(jiān)聽NFS客戶端的請(qǐng)求;第三步,當(dāng)NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求掛載NFS服務(wù)器端輸出的共享目錄D至本地文件系統(tǒng),NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理;第四步,NFS客戶端掛載共享目錄D成功后,再次向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求寫該目錄中的文件F,NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,而NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求,從而完成NFS服務(wù)器端處理寫文件的請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的寫文件的應(yīng)答報(bào)文;第五步,NFS服務(wù)器端進(jìn)入只讀不寫的應(yīng)用情景,用戶在NFS服務(wù)器端獲取文件真實(shí)大小后,進(jìn)行本地系統(tǒng)調(diào)用執(zhí)行ftruncate操作對(duì)文件重新設(shè)置大?。坏诹?,NFS客戶端向NFS服務(wù)器端發(fā)送RPC請(qǐng)求,請(qǐng)求讀目錄D中的文件F,NFS服務(wù)器端的接收請(qǐng)求模塊將該請(qǐng)求放入請(qǐng)求隊(duì)列,NFS服務(wù)器端的處理請(qǐng)求模塊從請(qǐng)求隊(duì)列中取出該請(qǐng)求并進(jìn)行處理,從而完成NFS服務(wù)器端處理讀文件的請(qǐng)求,NFS客戶端收到NFS服務(wù)器端的讀文件的應(yīng)答報(bào)文。3.根據(jù)權(quán)利要求2所述的嵌入式網(wǎng)絡(luò)存儲(chǔ)方法,其特征是,所述的NFS服務(wù)器端處理寫文件的請(qǐng)求,具體步驟為1)處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,當(dāng)找到FCB結(jié)構(gòu)后,執(zhí)行3);否則執(zhí)行2);2)處理請(qǐng)求模塊將文件句柄轉(zhuǎn)換為文件名,并調(diào)用FCB管理模塊創(chuàng)建一個(gè)該文件的FCB結(jié)構(gòu),放入FCB數(shù)組中;3)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,若文件未打開過,進(jìn)行本地系統(tǒng)調(diào)用open()打開文件,并將文件描述符存放到FCB中,若文件已打開,直接獲取其文件描述符;4)處理請(qǐng)求模塊根據(jù)文件描述符對(duì)該文件進(jìn)行寫操作,若寫入文件大小超過第一步中預(yù)分配的文件范圍,使用文件系統(tǒng)自動(dòng)為其分配的空間,寫完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端。4.根據(jù)權(quán)利要求2所述的嵌入式網(wǎng)絡(luò)存儲(chǔ)方法,其特征是,所述的獲取文件真實(shí)大小,具體步驟為1)設(shè)定置信長度N2,并設(shè)定一個(gè)低端L和高端H用于限定查找范圍,L的初始值為文件頭,即第1個(gè)字節(jié),H的初始值為文件尾,即第Nl個(gè)字節(jié);2)判斷N1與置信長度N2的大小,當(dāng)N1小于N2時(shí),從文件末尾起向前掃描文件直到第一個(gè)非"NULL"字符作為文件真實(shí)大小的末端;當(dāng)N1大于N2時(shí),找到(L,H)的中間字符,即第(Nl+1)/2個(gè)字節(jié)或第N1/2個(gè)字符;3)判斷該字符是否是"NULL";4)當(dāng)該字符為非"NULL",則將L置為該字符之后的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)字符為"NULL",則從該字符起向前掃描,統(tǒng)計(jì)前面的連續(xù)"NULL"字符的數(shù)量N3,若N3達(dá)到置信長度N2,停止統(tǒng)計(jì);5)判斷N3與置信長度N2的大小,當(dāng)N3等于置信長度N2,則將H置為該字符之前的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)N3小于置信長度N2,則從該字符起向后掃描,統(tǒng)計(jì)后面的連續(xù)"NULL"字符的數(shù)量N4,若N3+N4達(dá)到置信長度N2,停止統(tǒng)計(jì);6)判斷N3+N4與置信長度N2的大小,當(dāng)N3+N4小于置信長度N2,則將L置為該字符之后的一個(gè)字節(jié),找到(L,H)的中間字符,返回3);當(dāng)N3+N4等于置信長度N2,則從該字符起向前掃描文件直到第一個(gè)非"NULL"字符作為文件真實(shí)大小的末端。5.根據(jù)權(quán)利要求2所述的嵌入式網(wǎng)絡(luò)存儲(chǔ)方法,其特征是,所述的NFS服務(wù)器端處理讀文件的請(qǐng)求,具體步驟為1)處理請(qǐng)求模塊調(diào)用FCB管理模塊根據(jù)文件句柄查找FCB數(shù)組,當(dāng)找到FCB結(jié)構(gòu)時(shí),執(zhí)行3);當(dāng)沒有找到FCB結(jié)構(gòu)時(shí),執(zhí)行2);2)處理請(qǐng)求模塊將文件句柄轉(zhuǎn)換為文件名,并調(diào)用FCB管理模塊創(chuàng)建一個(gè)該文件的FCB結(jié)構(gòu),放入FCB數(shù)組中;3)處理請(qǐng)求模塊調(diào)用FCB管理模塊打開FCB,若該文件未打開過,進(jìn)行本地系統(tǒng)調(diào)用open()打開文件,并將文件描述符存放到FCB中;若文件已打開,直接獲取其文件描述符;4)處理請(qǐng)求模塊根據(jù)文件描述符對(duì)該文件進(jìn)行讀操作,讀完后不關(guān)閉文件,調(diào)用RPC服務(wù)模塊將結(jié)果封裝成RPC應(yīng)答報(bào)文返回給NFS客戶端。全文摘要一種網(wǎng)絡(luò)應(yīng)用
技術(shù)領(lǐng)域:
的嵌入式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)及其方法,系統(tǒng)包括NFS客戶端和NFS服務(wù)器端,其中NFS服務(wù)器端包括接收請(qǐng)求模塊、處理請(qǐng)求模塊、FCB管理模塊和RPC服務(wù)模塊;方法包括NFS服務(wù)器端在處理讀寫請(qǐng)求時(shí),使用FCB管理模塊來緩存已打開文件的狀態(tài)信息,包括文件描述符等,有效減少了服務(wù)器本地文件系統(tǒng)打開和關(guān)閉文件的次數(shù),并通過預(yù)分配文件空間的方法來為文件獲取連續(xù)的磁盤空間,消除了數(shù)據(jù)讀寫過程中的額外的磁頭移動(dòng),從而減少了NFS服務(wù)器端的CPU開銷,提高了讀寫性能。文檔編號(hào)H04L29/08GK101789976SQ20101030079公開日2010年7月28日申請(qǐng)日期2010年1月27日優(yōu)先權(quán)日2010年1月27日發(fā)明者戰(zhàn)科宇,李小勇,鄭涔申請(qǐng)人:上海交通大學(xué)