目錄管理與文件共享
文件控制塊—FCB
- 爲了能對一個文件進行正確的存取,必須爲文件設置用於描述和控制文件的數據結構,稱之爲“文件控制塊”(FCB)
文件與文件控制塊一一對應
記錄文件名及其存放地址、文件的說明和控制信息。(是誰?在哪裏?什麼權?)
文件管理程序藉助於文件控制塊中的信息對文件施以各種操作。
把文件控制塊的有序集合稱爲文件目錄, 即一個文件控制塊就是一個目錄項。通常一個文件目錄也被看作是一個文件,稱爲目錄文件。
一. 目錄管理
- 對文件實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:
基本信息記錄(FCB,目錄項)
方便檢索、管理(目錄操作) - 目錄管理的要求如下:
實現“按名存取”;(最基本功能)
提高對目錄的檢索速度;
文件共享;
允許文件重名。
1)FCB內容
在文件控制塊中,通常含有以下三類信息。
- 基本信息類
包括文件名,文件物理位置,文件邏輯結構,文件的物理結構。 - 存取控制信息類
包括文件主的存取權限,覈准用戶的存取權限和一般用戶的存取權限。 - 使用信息類
建立日期和時間、文件上次修改的日期和時間
當前使用信息:打開該文件的進程數、是否被進程鎖住、是否已修改等。
文件物理位置:
對於連續文件:文件起始塊號;
對於鏈接文件:指向第一個物理塊的指針;
對於索引文件:索引表地址。
關於文件檢索的速度:
文件FCB組成的“目錄”文件存放於磁盤;需要時,要從磁盤將目錄內容調入內存進行檢索和使用。
如果目錄佔用5個盤塊,則至多需啓動5次磁頭讀寫,如何提高檢索速度?
2)索引結點
索引結點的引入
文件目錄佔越大量的盤塊,需進行的磁盤讀寫開銷越大。減少實際檢索的信息量就減少移動磁頭的開銷,提高速度;
目錄一般是按名檢索。而直到找到正確文件前,只關心文件名,不需要其它的文件描述信息,目錄中這部分內容的調入不是必須的。
所以:將文件名、文件具體信息分開,使文件描述信息單獨形成一個索引結點。
索引結點由外存到內存的過程中有不同的形式:
- 磁盤索引結點
存放在磁盤上的索引結點。主要包括以下內容:文件主標識符、文件類型、文件存取權限、文件物理地址、文件長度、文件連接計數、文件存取時間。 - 內存索引結點
文件被打開後,將磁盤索引結點拷貝到內存索引結點中以便使用。比磁盤索引結點增加了以下內容:索引結點編號、狀態、訪問計數、文件所屬文件系統的邏輯設備號、鏈接指針。
3) 目錄結構
- 目錄結構的組織,關係到文件系統的存取速度,也關係到文件的共享性和安全性。
- 組織好文件的目錄,是設計好文件系統的重要環節。
- 目前常用的目錄結構形式有
單級目錄
兩級目錄
多級目錄
① 單級目錄結構(Single-Level Directory)
- 最簡單的目錄結構。
整個文件系統中只建立一張目錄表,每個文件一個目錄項,含有文件相關信息。 - 每建立一個新文件:
先檢索所有的目錄項,保證文件名唯一。
獲得一空白目錄項,填入相關信息,修改狀態位(表明每個目錄項是否空閒)。
刪除一個文件:
找到對應目錄項,回收文件所佔用空間
清除目錄項 - 優點:簡單、能實現目錄管理的基本功能——按名存取。
- 缺點:
文件檢索時需搜遍整個目錄文件,範圍大速度慢。
不允許重名。名字過多難於記憶,對於多用戶環境重名難以避免。
不便於實現文件共享(因爲不能重名,不同用戶使用的共享文件必須不同名字,標識哪些用戶共享文件也不方便),一般只適用單機環境。
② 兩級目錄結構( Two-Level Directory )
- 爲每一個用戶建立一個單獨的用戶文件目錄UFD,UFD由用戶所有文件的文件控制塊組成。
- 系統建立一個主文件目錄MFD, MFD中每個用戶目錄文件都佔有一個目錄項,其中包括用戶名和指向UFD的指針。
兩級目錄的特點
- 基本克服了單級目錄的缺點,並具有以下優點:
提高了檢索目錄的速度。
在不同的目錄中可重名。 - 不同用戶還可以使用相同/不同的文件名來訪問系統中的同一個共享文件。
不提供子目錄操作,還不方便;各用戶之間被完全隔離的話用戶訪問其他用戶文件時,不方便合作。
③ 多級目錄結構
- 適用於較大的文件系統管理。又稱爲樹狀目錄(tree-like)
- 在文件數目較多時,便於系統和用戶將文件分散管理。
層次結構更清晰、提供更靈活的權限管理等
但目錄級別太多時也會增加路徑檢索層次,增加磁盤訪問時間。
相關名詞:
- 目錄結構
主目錄稱爲根目錄,數據文件爲樹葉,其它目錄爲結點。多級目錄縮小檢索範圍提高檢索速度和文件系統的性能。 - 路徑名
從根目錄到任何數據文件都只有一條唯一通路。目錄文件名和數據文件名依次用“/”連接起來,即構成數據文件的路徑名。 - 當前目錄
爲每個進程設置一個“當前目錄”,又稱“工作目錄”。
從當前目錄開始,逐級經過中間的目錄文件,最後達到要訪問的數據文件。這一路徑上的目錄和數據文件名用“/”連接成路徑名,稱爲相對路徑名。
從根開始的路徑名稱爲絕對路徑名
4)目錄查詢技術
- 用戶要訪問一個已存文件
目錄數據調入內存;
按名檢索:系統利用提供的文件名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
找該文件控制塊
讀FCB或對應索引結點;
從文件物理地址換算出文件在磁盤上的物理位置;
最後通過磁盤驅動程序,將所需文件讀入內存。 - 目錄查詢方式:線性檢索法和Hash方法。
線性檢索法
- 又稱爲順序檢索法。
- 單級目錄中
用戶提供文件名,順序查找文件目錄。 - 樹型目錄中
用戶提供路徑名,如/user/ast/mbox
對多級目錄進行逐層查找。
*Hash方法
- 曾介紹的Hash文件。
- 如果建立了一張Hash索引文件目錄,便可利用Hash方法進行查詢
- 系統將用戶提供的文件名變換爲文件目錄的索引值,再利用該索引值到目錄中去查找,將顯著的提高檢索速度。
- 對於使用通配符的文件名系統無法利用Hash法檢索目錄,還是需用線性查找法。
二. 文件共享與保護
1)文件共享
- 多個用戶共享一份文件,只保留文件的一份副本,節約存儲空間
- 共享範圍:單機系統/多主機系統/網絡範圍
① 索引結點法
- 基本FCB法:
名+詳細信息。
直接在文件目錄中包含文件的物理地址,該方法實現的共享不適用文件動態變化。一個用戶對文件的修改(如物理塊號增加),對其他用戶不可見,共享文件的FCB信息記錄同步更新困難。 - 文件名+索引結點指針。
一個用戶修改指針指向地址裏的內容,指針不變,其他用戶通過指針總能感知索引結點中的最新內容
索引結點中增加count計數
主人刪除操作問題:刪,共享用戶訪問錯誤;不刪,計費問題。
② 符號鏈法
創建一個link類型的文件:“文件名+共享文件路徑”(類似快捷方式)
文件主人刪除文件,共享者只會出現找不到文件錯誤。不會發生共享文件刪除後出現懸空指針的情況。
該方法適用於網絡文件共享,但根據路徑檢索共享文件的目標位置增加了訪問開銷,link文件獨佔索引結點也耗費一定的空間。
- 無論哪種共享,鏈接就對應一個文件,如果遍歷複製整個目錄內的文件,可能會從多條路徑對共享文件進行多次訪問
2)磁盤容錯
SFT,system fault tolerance
-
防止磁盤故障造成的文件不安全
-
SFT I:磁盤表面故障
雙目錄、雙文件分配表(空間冗餘)
寫後讀校驗、熱修復重定向(時間操作冗餘)
寫入磁盤後再讀回內存做一致性校驗
熱修復寫過程:從壞道重定向到專區並記錄 -
SFT II:磁盤驅動器、控制器故障
驅動器故障:磁盤鏡像
控制器故障:磁盤雙工——並行控制器,分離搜索加快讀取 -
SFT III:高級容錯技術
雙機熱備份
雙機互備份
公用磁盤模式
*數據一致性
- 一個數據分別存儲到多個文件中,典型的如數據庫
- 保證數據一致性:
高可靠存儲器(冗餘保證穩定,磁盤雙工)+ 一致性軟件 - 概念
事務:對數據各處保存位置訪問、修改使其維持一致性的一次操作。
事務記錄:記錄事務運行時數據項修改全部信息的數據結構:事務名、數據項名、舊值、新值。
恢復算法:利用事務記錄表處理已完成、未完成事務。
檢查點:每隔一段時間,將內存中的事務記錄表、已修改數據、檢查點輸出到穩定存儲器, - 併發控制
- 重複數據的一致性