分散式與網路作業系統

網路檔案系統(network file system,NFS)

/ NFS /

你習慣在自己的磁碟上開檔案:你雙擊一份文件,它就出現了。網路檔案系統讓你做的正是這件事——用你早就會的那些普通指令去開啟、讀取、編輯、儲存一個檔案——即使那個檔案其實住在網路另一頭的另一台電腦上。重點在於透明性:來自遠端伺服器的一個資料夾,會出現在你自己的目錄樹裡,而對你的程式而言,它看起來就和一個本機資料夾一模一樣。NFS(網路檔案系統)與 AFS(Andrew 檔案系統)是兩個經典、影響深遠的例子。

它如何運作?它通常是主從式的。一台檔案伺服器握有真正的檔案。在你的機器上,作業系統裡有一塊特殊的客戶端,它攔截你對那個掛載進來的遠端資料夾所做的普通檔案操作(開啟、讀取、寫入),把它們轉換成送給伺服器的請求;伺服器做真正的磁碟工作、再把資料送回來。為了避免向伺服器索取每一個位元組(既慢、又造成沉重負擔),客戶端會把最近用過的檔案資料快取在本機記憶體或本機磁碟上,好讓重複的讀取很快。而這個快取,正是困難問題藏身之處。

為什麼重要,以及核心難題——快取一致性:一旦有好幾個客戶端各自快取了同一個檔案的副本,其中一個客戶端改了它,其他客戶端可能還握著過時的副本。其他人應該看到什麼、又在什麼時候看到?NFS 歷來採取較寬鬆的做法(你可能短暫看到舊版本),而 AFS 採用回呼(callback,伺服器承諾在某客戶端的快取副本失效時通知它)。這裡有一個實實在在的取捨,介於效能(積極快取、很少跟伺服器說話)與一致性(每個人都立刻看到最新版本)之間。這正是 CAP 定理所精確刻劃的同一種張力:當網路可能失效時,你無法同時擁有完美的一致性與完美的可用性。

在一個大學實驗室網路上,你的家目錄放在一台中央伺服器上、掛載在 /home/you。你在一台工作站上編輯 notes.txt,它在任何其他工作站上都立刻就在那裡,因為它們開的都是同一個伺服器檔案。但如果有兩個人同時快取並編輯它,誰的版本勝出,就成了檔案系統必須回答的一個真實的一致性問題。

一個看起來像本機的遠端資料夾。快取讓它變快;維持快取一致才是難的部分。

網路檔案系統讓遠端檔案變得方便,但它無法廢除物理定律:網路會增加延遲、也可能失效,而且客戶端為了速度快取得越積極,一致性保證往往就越弱。

又称
NFSdistributed file system分散式檔案系統AFS (Andrew File System)