Andrew文件系統(AFS)一個分布式網絡文件系統,其能夠使來自任何通過這個國家的 AFS 機器能夠在文件一經在本地存儲就能訪問。 AFS 一個穩定的單元,其每個單元代表文件空間中一個獨立的管理部分。單元連接在一起組成了一個在根 /afs 目錄下的一個龐大的 unix 文件系統。
簡介
Andrew是由美國卡耐基-梅隆(Carnegie Mellon)大學和IBM公司聯合開發的一種分布式計算環境。它的主要功能是用于管理分布在網絡不同節點上的文件,其能夠使來自任何通過這個國家的AFS機器能夠在文件一經在本地存儲就能訪問。AFS是專為在大的分布式環境中提供可靠文件服務而設計的。該系統創建了便于管理的帶有基于網孔結構的分布式環境。網孔是由特定機構管理的自治區域內文件服務器和客戶系統的集合。它通常代表某一組織的計算資源。用戶可以容易地與網孔內的其他用戶共享信息。根據其他網孔管理機構授予的訪問權,用戶還可以與這些單元格中的用戶共享信息。
特點
Andrew文件系統的目標是要支持至少7000個工作站(Carnegie Mellon的學生、教員和職工每人一個),同時為用戶、應用程序和系統管理提供一種合適的共享文件系統。AFS 是一個穩定的單元,其每個單元代表文件空間中一個獨立的管理部分。單元連接在一起組成了一個在根/afs 目錄下的一個龐大的 unix 文件系統。與普通文件系統相比,AFS的主要特點在于三個方面:分布式、跨平臺、高安全性。
所謂分布式文件系統,主要有兩方面的含義:其一、就是說AFS是一種采用分布式結構的文件系統,與傳統的集中式的文件系統相比,AFS的各個組件能夠分布在網絡中的不同機器上,并通過一定的機制協同工作。它并不是簡單地C/S(客戶端/服務器)結構,也并不象C/S結構的客戶端那樣僅為服務器端提供接口,所有的功能都集中在服務器端。AFS的各個組件都能夠獨立的完成某種功能,同時這些組件在一定的機制協調下,又形成一個完整的系統;分布式文件系統的第二層含義是:AFS是一種能夠管理分布式文件數據的文件系統,它不但可以把分布在不同網絡節點上的存儲資源組織成一個虛擬的存儲空間,而且能夠提供跨平臺的文件管理功能。
AFS的跨平臺管理功能夠使用戶方便、高效地共享分布在局域網或廣域網中的文件。用戶并不需要考慮文件保存在什么地方,也不用考慮文件保存在哪種操作系統上,AFS提供給用戶的只是一個完全透明的、永遠唯一的邏輯路徑,通過這個邏輯路徑,用戶就象面對一個文件目錄一樣,這個目錄下的內容無論是在什么地方訪問,都絕對的一致。因此,AFS的這種功能往往被用于用戶的home目錄,以使得用戶的home目錄唯一、而且避免了數據的不一致性。
AFS是一種高安全性的文件系統。它通過鑒權數據庫與ACL的配合為用戶提供更高的安全性。用戶使用AFS,首先需要驗證身份,只有合法的AFS用戶才能夠訪問相應的CELL(一個CELL就相當于一個AFS獨立結構,該CELL具有AFS文件系統的全部功能);其次,用戶還需要在保護數據庫中讀取相應的ACL列表,以確定他是否有權力讀寫某一個文件。因此,AFS提供了更高于傳統unix系統的安全性能。
AFS的目錄結構是全球統一的。根據規定,AFS的前兩級目錄必須由“/afs/cellname”組成,其中,cellname可替換為不同單位的Cell名稱。我們已經定義了唯一的cell名:ihep. ac. cn,并建立了唯一的前兩級目錄:/afs/ihep. ac. cn/。因此,無論用戶從什么地方去訪問/afs/ihep. ac. cn下的文件,就等于連接到高能所的網絡上,并訪問了高能所內部的資源。
AFS運行模式
.AFS采用C/S(Client/Server)的工作模式,Client發送請求到Server提取文件,Server Machine提供文件給請求的Client。
當Client Machine上的某個Porcess第一次需要某個文件資料時,Client Machine上的一個名叫Cache Manager的Process,便會負責找出存放有該文件的Server(他會從CellServ配置文件中找到 VLDB服務器,在經由VLDB找到相應文件存放的Server),使用RPC通信協議來取回文件存儲于自己的Cache中,之后就可以直接讀寫于Cache中的資料了,這期間Cache Manager會適時的和Server Machine通信來更新資料,有了Cache Manager的幫助使得網絡的負荷減輕,因為當我們讀寫一個在其他機器上的資料時,不再需要每次都經由網絡去讀取,而由Cache Manage判斷在Cache的資料是否和Server Machine上所存的相同,若相同,就直接使用Cache上的資料,如此一來 節省了部分讀取文件時所需要的傳送,更減少了原本Server上的磁盤I/O負荷。
NFS和AFS的區別
NFS和AFS的區別在于對并發寫操作的處理方法上。當一個客戶機向服務器請求一個文件(或數據庫記錄),文件被放在客戶工作站的高速緩存中,若另一個用戶也請求同一文件,則它也會被放入那個客戶工作站的高速緩存中。當兩個客戶都對文件進行修改時,從技術上而言就存在著該文件的三個版本(每個客戶機一個,再加上服務器上的一個)。有兩種方法可以在這些版本之間保持同步:
無狀態系統 在這個系統中,服務器并不保存其客戶機正在緩存的文件的信息。因此,客戶機必須協同服務器定期檢查是否有其他客戶改變了自己正在緩存的文件。這種方法在大的環境中會產生額外的LAN通信開銷,但對小型LAN來說,這是一種令人滿意的方法。NFS就是個無狀態系統。
回呼(Callback)系統 在這種方法中,服務器記錄它的那些客戶機的所作所為,并保留它們正在緩存的文件信息。服務器在一個客戶機改變了一個文件時使用一種叫回叫應答(callbackpromise)的技術通知其它客戶機。這種方法減少了大量網絡通信。AFS(及OSFDCE的DFS)就是回叫系統。客戶機改變文件時,持有這些文件拷貝的其它客戶機就被回叫并通知這些改變。
無狀態操作在運行性能上有其長處,但AFS通過保證不會被回叫應答充斥也達到了這一點。方法是在一定時間后取消回叫。客戶機檢查回叫應答中的時間期限以保證回叫應答是當前有效的。回叫應答的另一個有趣的特征是向用戶保證了文件的當前有效性。換句話說,若一個被緩存的文件有一個回叫應答,則客戶機就認為文件是當前有效的,除非服務器呼叫指出服務器上的該文件已改變了。
參考資料 >