日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

網(wǎng)絡(luò)文件系統(tǒng)協(xié)議( 二 )


2.1文件系統(tǒng)模型
NFS假定文件系統(tǒng)是分層次的,除了最底層是文件,其它層次都是目錄 。在目錄中的每一個(gè)條目(文件,目錄,設(shè)備等)都有一個(gè)字符串名 。不同的操作系統(tǒng)可能在目錄樹的深度或者使用的名字上有所限制,就象用不同的語義來描述“路徑名”,它是在名字中把所有組成部分(目錄和文件名)串聯(lián)起來 。一個(gè)“文件系統(tǒng)”就是在一個(gè)單一的服務(wù)器上(通常是一個(gè)磁盤或者物理分區(qū))有一個(gè)指定的“根”的樹 。一些操作系統(tǒng)提供了“安裝”操作使所有的文件系統(tǒng)出現(xiàn)在一棵單一的樹上 。而其它的操作系統(tǒng)保持著一個(gè)文件系統(tǒng)“森林” 。文件是由無解釋字節(jié)組成的無結(jié)構(gòu)流 。第三版的NFS使用更普遍的文件系統(tǒng)模型 。
NFS一次只查詢路徑名中的一個(gè)組成部分 。為什么不一次就得到整個(gè)路徑名,返回一個(gè)文件句柄呢?這里有一些不這樣做的原因 。首先,路徑名需要在路徑的組成部分之間有分隔符 。不同的操作系統(tǒng)使用不同的分隔符 。我們可以定義一種網(wǎng)絡(luò)上標(biāo)準(zhǔn)的路徑表示法,但是每一個(gè)路徑名在每一個(gè)終點(diǎn)上將必須進(jìn)行語法分析和轉(zhuǎn)換 。其它的問題在第三節(jié)(NFS實(shí)現(xiàn)中的問題)里討論 。
盡管文件和目錄在許多方面是相似的對象,但是讀目錄和讀文件也需要不同的過程 。這里提供了描述目錄的網(wǎng)絡(luò)標(biāo)準(zhǔn)格式 。使用象上面相同的參數(shù)來確定一個(gè)過程,此過程在每次調(diào)用的時(shí)候只返回一個(gè)目錄項(xiàng) 。這種方法產(chǎn)生的問題就是效率不高 。目錄包含著許多目錄項(xiàng),遠(yuǎn)程調(diào)用要返回每一項(xiàng)將是非常緩慢的 。
2.2服務(wù)器過程
這個(gè)協(xié)議被定義為一組過程,這組過程具有用RPC語言(XDR語言在程序,版本,過程聲明方面的擴(kuò)展)定義的參數(shù)和結(jié)果 。每一個(gè)過程功能的簡要描述都應(yīng)該提供足夠答應(yīng)實(shí)現(xiàn)的信息 。2.3節(jié)具體地描述了基本數(shù)據(jù)類型 。
在NFS協(xié)議中的所有過程都假定是同步的 。當(dāng)一個(gè)過程返回給客戶端,客戶可以假定此操作已經(jīng)完成,與請求相關(guān)的任何數(shù)據(jù)現(xiàn)在在一個(gè)穩(wěn)定的存儲(chǔ)上 。例如,客戶端的WRITE請求可能導(dǎo)致服務(wù)器更新數(shù)據(jù)塊,文件系統(tǒng)信息塊(比如間接塊),和文件屬性信息(大小和修改時(shí)間) 。當(dāng)WRITE返回給客戶端,客戶端假定這個(gè)寫操作是可靠的 。甚至在服務(wù)器崩潰的情況下,它也能丟棄這些已經(jīng)寫的數(shù)據(jù) 。這就是服務(wù)器無狀態(tài)的一個(gè)非常重要的部分 。假如服務(wù)器等待來自遠(yuǎn)程請求的刷新數(shù)據(jù),客戶端必須保存這些請求,以便在服務(wù)器崩潰的情況下再次發(fā)送這些請求 。
/*
*遠(yuǎn)程文件服務(wù)程序
*/
programNFS_PROGRAM{
versionNFS_VERSION{
voidNFSPROC_NULL(void)=0;
attrstatNFSPROC_GETATTR(fhandle)=1;
attrstatNFSPROC_SETATTR(sattrargs)=2;
voidNFSPROC_ROOT(void)=3;
diropresNFSPROC_LOOKUP(diropargs)=4;
readlinkresNFSPROC_READLINK(fhandle)=5;
readresNFSPROC_READ(readargs)=6;
voidNFSPROC_WRITECACHE(void)=7;
attrstatNFSPROC_WRITE(writeargs)=8;
diropresNFSPROC_CREATE(createargs)=9;
statNFSPROC_REMOVE(diropargs)=10;
statNFSPROC_RENAME(renameargs)=11;
statNFSPROC_LINK(linkargs)=12;
statNFSPROC_SYMLINK(symlinkargs)=13;
diropresNFSPROC_MKDIR(createargs)=14;
statNFSPROC_RMDIR(diropargs)=15;
readdirresNFSPROC_READDIR(readdirargs)=16;
statfsresNFSPROC_STATFS(fhandle)=17;
}=2;
}=100003;
2.2.1不做工作
voidNFSPROC_NULL(void)=0;
這個(gè)過程不做工作,在所有RPC服務(wù)中它可以用來答應(yīng)服務(wù)器響應(yīng)測試和定時(shí) 。
2.2.2獲得文件屬性
attrstatNFSPROC_GETATTR(fhandle)=1;
假如響應(yīng)狀態(tài)是NFS_OK,那么響應(yīng)屬性包含由輸入fhandle指定的文件的屬性 。

推薦閱讀