Chapter 10 檔案系統(File-System) Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 10.1 10.2 10.3 10.4 10.5 10.6 檔案的觀念 存取方法 目錄和磁碟結構 檔案系統安裝 檔案分享 保護 1 第五篇 儲存裝置管理(Storage Management) 主記憶體通常太小而無法一成不變地配合所有資料 和程式,電腦系統必須提供輔助記憶體來備份主記 憶體。 現代電腦系統使用磁碟當作訊息(程式和資料二者) 的主要線上儲存媒體。檔案系統提供線上儲存和存 取磁碟上程式和資料的功能。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 2 1.檔案的觀念(File Concept) 1.1 檔案特性(File Attributes) 檔案的命名是為了方便人類的使用,通常以檔案名稱來指定某一檔案。 檔案有一些其它特性,這些特性隨著作業系統不同而有所差異,但通 常包括了: 名稱 (name):符號式的檔名是唯一用人看得懂的格式儲存。 識別符號 (identifier):獨一無二的標籤,通常是一個數字,用來辨識檔案系 統 內的檔案;它是這個檔案之非人類可讀的檔名。 型態 (type):這項資訊對於提供不同檔案型態的系統有需要。 位置 (location):一個指標指向該檔案所在裝置的位置。 大小 (size):該檔案目前容量的大小 (以字元、位元組或區段為單位),以及 允許以後擴增的最大範圍。 保護 (Protection):存取控制資訊,控制誰能讀、寫、執行等資料。 時問、日期和使用者辨識:這項資訊可以保存產生上次修改和上次使用資 料,以做為保護、安全,以及使用監督。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 3 1.2 檔案運作(File Operations) 檔案是一個抽象的資料形式 (abstract data type) 。為了適切地定義檔案, 我們必須考慮檔案上所表現的操作。 建立檔案 建立檔案需要兩個步驟。首先,為了這個檔案,其空間必 須在檔案系統中被找到。其次,必須在目錄中為新檔案做一個項目。 寫入檔案 需要做一次系統呼叫,指定檔案名稱和欲寫入檔案之資訊。 系統必須保 持一個寫入指標到檔案的位置,下一個寫入在這個位置 發生。 當寫入發生時, 寫入指標必須被更新。 讀取檔案 一個系統呼叫指定了檔案的名稱和檔案下個區 段被放置 的處所 (在記憶體中包括目錄、區段)。一旦那個區段被讀出,此指 標即被更新。 重置擋案(Reposition within file) 搜尋目錄以找到相關的進入點,然 後把目前檔案位置設定成某一固定值。這個檔案操作也稱為檔案搜 尋(File Seek)。 刪除檔案 搜尋目錄以找此檔案。在找到相關的目錄項目後,釋放所 有檔案的空間 ,並且將此目錄項目作廢。 縮減擋案(Truncate) 使用者可以使用此功能使檔案特性保持不變(除 了檔案長度),重設檔案長度為零。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 4 Open(Fi) – search the directory structure on disk for entry Fi, and move the content of entry to memory Close (Fi) – move the content of entry Fi in memory to directory structure on disk 對於每一個開啟(Open)的檔案都有以下相關的資訊: 檔案指標 對於read和write系統呼叫沒有包含檔案位移的系統而 言,它們必須追蹤上一次讀/寫的位置,以做為目前檔案位置的 指標。 檔案開啟計數 檔案開啟計數器記錄 開啟和關閉的次數,在最後 一個關閉(Close)動作時就變成零。然後系統就可以把該檔的進入 點從表格移去。 檔案的磁碟位置 檔案在磁碟位置的資料存放在記憶體中,以避 免每一次檔案操作時都必須從磁碟讀出。 存取權限 Process(行程)以一種存取模式開啟檔案,這個資訊被存 放在行程表中,所以作業系統可允許或拒絕輸入/輸出的需求。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 5 1.3 檔案型態(File Types – Name, Extension) Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 6 1.4 檔案結構(File Structure) 檔案型態也可以用來指出檔案的內部結構。原始檔和目的檔的結構正 符合讀取它們的程式之要求。 有些檔案必須符合一定的結構,作業系統才能夠瞭解其內容。 作業系統可能會要求一個可執行檔有一定的結構,以便決定將檔案載 入到記憶體的什麼地方,以及第一個指令的位置。 有些作業系統將此觀念延伸到一組系統支援的檔案結構,對於這些檔 案結構都有特殊的操作來處理這些檔案。 None - sequence of words, bytes Simple record structure Complex Structures Lines Fixed length Variable length Formatted document Relocatable load file Who decides: Operating system Program Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 7 1.5 內部檔案結構(Internal File Structure) 對於一套作業系統而言,找到內部某一特定位置可能十分複雜。磁碟 系統通常會有一定義完善的區段大小(sector) ,所有磁碟的輸入/輸出都 是以區段為單位來執行,此區段就是實體記錄 (Physical record),所有 的區段大小皆相同。 實體記錄的大小不太可能會和邏輯記錄 (1ogical record)正好相同。邏輯 記錄甚至會有不同的長度。將一些邏輯記錄組成實體記錄是常見到的 解決方法。 邏輯記錄的大小,實體區段的大小,以及組成區段的技巧決定了,在 每一筆實體區段中可以有多少筆邏輯記錄。 任何一種情況下,檔案都可以視為一連串的區段,所有的基本輸入 / 輸出函數皆是針對區段來操作。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 8 2.存取方法(Access Method) 2.1 循序存取(Sequential Access) 最簡單的存取方法。檔案中的資訊是依著記錄次序一筆接著一筆處 理的,這也是至今最通用的檔案存取模式。 (Rewind) 2.2 直接存取(Direct Access) 檔案是由固定長度的邏輯記錄 (logical record)所組成,這可以讓程 式不必以一定的順序,快速地讀寫記錄。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 9 2.3 其它的存取方法(Other Access Methods) 其它的存取方法以建立在一個直接存取方法的基礎上。這些方法一 般都包含了對檔案所設的索引結構。索引(index),包含指向不同區 段的指標(Pointer)。 要找檔案中某個單元,先在目錄中尋找,然後使用指標去直接存取 檔案和找出所要的單元。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 10 3.目錄和磁碟結構(Directory & Disk Structure) Directory Structure A collection of nodes containing information about all files Directory Files F1 F2 F3 F4 Fn Both the directory structure and the files reside on disk Backups of these two structures are kept on tapes Disk Structure Disk can be subdivided into partitions Disks or partitions can be RAID protected against failure RAID: Redundant Array of Independent Disks - 獨立磁碟冗餘陣列,舊 稱廉價磁盤冗餘陣列,簡稱硬碟陣列。其基本思想就是把多個相對便宜 的硬碟組合起來,成為一個硬碟陣列組,使效能達到甚至超過一個價格 昂貴、容量巨大的硬碟。 Disk or partition can be used raw – without a file system, or formatted with a file system Partitions also known as minidisks, slices Entity containing file system known as a volume Each volume containing file system also tracks that file system’s info in device directory or volume table of contents As well as general-purpose file systems there are many specialpurpose file systems, frequently all within the same operating system or computer 每個包含檔案系統的卷(Volume)包含關於系統中檔案的資訊。這個資 訊被保留在設備目錄(Device Directory)或內容的卷表(Volume Table of Contents)。設備目錄(通常稱為目錄)紀錄卷上的所有檔案資訊- 如:名稱、位置、大小和形態。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 13 3.1 儲存裝置(Storage Structure) 一般用途的電腦系統有多個儲存設備,而那些設備可以被細分為擁有檔案 系統的卷。電腦系統可能有0或多個檔案系統,而檔案系統可能有不同的型 態。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 14 3.2 目錄概觀(Directory Overview) 可對目錄執行的操作 搜尋(Search for a file) 建檔(Create a file) 刪除檔案(Delete a file) 列印目錄(List a directory) 更改檔名(Rename a file) 追蹤檔案系統(Traverse the file system):每隔一段時間 就將檔案系統的內容及結構複製備份 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 15 3.3 單層目錄(Single-Level Directory) Efficiency – locating a file quickly Naming – convenient to users 最簡單的目錄結構就是單層目錄。所有的檔案都裝在同 一目錄中,非常容易瞭解與使用。 Two users can have same name for different files The same file can have several different names Grouping – logical grouping of files by properties, (e.g., all Java programs, all games, …) Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 16 3.4 雙層目錄(Two-Level Directory) 在雙層目錄結構中,每個使用者擁有自己的使用者檔案目錄 (user file directory, UFD)。每個UFD都有一個相似的結構,但是只列出單 一使用者的檔案。 當一個使用者的任務開始了或是一個使用者簽到(login)之後,系統 的主檔案目錄 (master file directory, MFD)就被搜尋一遍。主檔案目 錄是用使用者姓名或是帳號來索引,並且其中每單元都指向一個使 用者的使用者檔案目錄 Path name The same file name for different user Efficient searching No grouping capability Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 17 3.5 樹狀目錄(Tree-Structure Directories) 把雙層目錄視為一棵二階的樹,由目錄結構發展成一棵任何型式的 樹自然產生了樹狀目錄。這將允許使用者去建立他們自己的副目錄, 並且可以適當地組合他們的檔案。樹是最常見的目錄結構。樹有一 個根部目錄,在此系統中的每一個檔案都有一個單獨的路徑名稱。 Efficient searching Grouping Capability Current directory (working directory) cd /spell/mail/prog type list Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 18 Tree-Structured Directories (Cont) Absolute or relative path name Creating a new file is done in current directory Delete a file rm <file-name> Creating a new subdirectory is done in current directory mkdir <dir-name> Example: if in current directory /mail mkdir count mail prog copy prt exp count Deleting “mail” deleting the entire subtree rooted by “mail” 3.6 非循環圖型目錄(Acyclic-Graph Directories) 一個非循環圖型 (acyclic graph)則允許目錄中的副目錄或檔案被共用。 相同的檔案或子目錄可以在兩個不同的目錄中。非循環式圖型是樹 狀結構目錄法的自然發展結果。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 20 3.7 一般圖型的目錄(General Graph Directory) 使用非循環圖型結構時最嚴重的問題就是如何保證沒有循環存在。 如果以雙層目錄開始,並且允許使用者建立子目錄,一個樹狀結構 的目錄就形成了。很容易看出來加入新的檔案和子目錄到現有的樹 狀目錄上仍可保持它的樹狀結構特性。但是,當將鏈(Link)加到現有 樹狀結構的目錄上時,樹狀結構就被破壞了,造成了一個一般圖型 結構 。 How do we guarantee no cycles? Allow only links to file not subdirectories Every time a new link is added use a cycle detection algorithm to determine whether it is OK Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 21 4.檔案系統安裝(File System Mounting) 正如同一個檔案必須先開啟才可以使用,一個檔案系統必須先安裝才 可以被系統的行程取得。更特別的是,目錄系統可以由許多分割區建 立起來,此種目錄必須被安裝才可以讓它們在檔案系統的命名空間中 被取得。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 22 5.檔案分享(File Sharing) 5.1 多使用者(Multiple Users) 當作業系統容納多位使用者時,檔案分享、檔案命名和檔案 保護等事項變得很重要。對於檔案可以被使用者分享的目錄, 系統必須調解檔案的分享。在預設情況下,系統可以允許使 用者存取其它使用者的檔案,或是它可能要求使用者獲得該 檔案的存取權。 User IDs identify users, allowing permissions and protections to be per-user Group IDs allow users to be in groups, permitting group access rights Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 23 5.2 遠端檔案系統(Remote File Systems) 網路允許遠端的電腦間彼此通信。網路允許資源的分享散佈 在校園或甚至於整個世界。一種明顯的分享資源是資料 (以檔 案的型式)。經由網路和檔案技術的演進,檔案分享的方法也 已經改變。 在最先製作的方法中,使用者以人工的方式經由類似 FTP 的程式在機器之間傳送檔案。 第二種主要的方法是一種分散式的檔案系統 (distributed file system, DFS),這種方法讓遠端的目錄在本地端也許可 以看得見。 第三種方法 (全球資訊網,World Wide Web) 。網頁瀏覽 器需要用來取得遠端檔案的存取權,而其它的操作則被用 來傳輸檔案。 24 5.2.1 客戶-伺服器模型(Client-server Model) 遠端檔案系統允許電腦從一台或多台遠端機器安裝一個或多個檔案系統。 包含檔案的機器是伺服器,希望存取檔案的機器是客戶。 5.2.2 分散式資訊系統(Distributed Information System) 為了使客戶伺服器的管理更簡單,分散式資訊系統,也稱為分散式命名 服務,distributed naming services)已經被發明用來提供遠端計算所需之資 訊的一致性存取。 領域名稱系統 (domain name system, DNS)提供整體網際網路的主機名稱 到網路位址的轉換(包括全球資訊網)。 5.2.3 失效模式(Failure Modes) 區域檔案系統可能因一些不同的原因而失效,包括存放檔案系統之磁碟 的失效、目錄結構或其它磁碟管理資訊(統稱為metadata)的損毀、磁碟控 制器的失效、纜線失效或主機轉接器失效。使用者或系統管理者的失效 可能也會造成檔案遺失或者整個目錄或分割區被刪除。 許多這種失效將造成主機毀損和錯誤情況顯示出來,並且要求人為介入 做修復。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 25 5.3 一致性語意(Consistency Semantics) 一致性語意為評估任何支援共用檔案系統的一項重要判斷標 準。它是一項系統特性,該特性規定多個使用者同時存取一 個共同檔案的語意。這些語法在由一使用者修改資料且該資 料可被其它使用者看到時更應當明白規定。 5.3.1 UNIX語意 UNIX檔案系統 使用下列一致性語意 A. 一位使用者對一已開啟檔案進行寫入的動作時,可被其它 也開啟該檔案的使用者立即看見。 B. 具有共用的模式,在該模式下使用者共同指向檔案目前位 置的指標。因此,只要有一 位使用者前進該指標會影響 所有共用的使用者。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 26 5.3.2 會議語意(Session Semantic) Andrew file system, AFS檔案系統 使用下列一致性語意: 1. 一位使用者對一已開啟檔案進行寫入之動作時,無法被其它也 開啟該檔案的使用者立即看見。 2. 一旦關閉一個檔案,其所做之改變只能在下一次會議中看見。 已開啟該檔案的其它使用者無法察覺這些改變。 5.3.3 不變共用檔案之語意(Immutable Shared Files) 一種不同而相當特殊的方法是不變共用檔案 。一旦檔案由其建檔者 宣告成共用,則它便不能再做任何修改。一個不變檔案有兩 個重要性質: 其名稱不能重複使用以及其內容不可更動。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 27 6.保護(Protection) 當資訊保存在電腦中,需關切的就是它的保護問題,其中包含有實體 上的損毀(可靠度的問題)或是不當的存取 (防護的問題)。 6.1 存取型態(Types of Access) 檔案需要保護乃是存取檔案的能力所造成的結果。在不允許其它使 用者存取檔案的系統中,根本不需要保護。我們需要的是帶有管制 的存取 (controlled access)。提供帶有管制的保護方法就是限制可以 使用的存取檔案型式。允許或是拒絕檔案被存取完全由一些因素來 決定,存取的型式就是其中之一。許多可以控制的作業類型如下: 讀取 (read):從檔案中讀取。 寫入(write):寫入或重寫某檔案。 執行 (execute):將檔案載入記憶體並且執行它。 附加 (append):將新資料寫在檔案尾端。 刪(delete):除掉某檔案並且將其所佔用空間讓給可能的重新使用。 列出(list):列出檔案的名稱和特性。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 28 6.2 存取控制(Access Control) 一種常見的保護方法是,根據對使用者的識別來決定能否做存取。 不同的使用者可能需要不同類型的存取檔案或目錄的方法。 以一個存取串列 (access control list, ACL)來對應一個檔案或目錄, 並且用它來識別使用者名稱與該使用者所被允許的存取類型。 當一個使用者要求某一個檔案的時候,作業系統就檢視該檔案的存 取串列。如果串列中該使用者被列在他所要求的存取類型中,該項 存取就會被允許。否則,就違反了保護措施,使用者的工作會被終 止。 6.3 其它保護方法 另外一種方法是每個檔案都聯結一個密碼。好像要使用電腦系統的 時候也必須通過密碼的控制一樣,要使用任何檔案也必須以相同方 法先通過密碼。 Modified by Min-Shiang Hwang (亞大黃明祥) ©2013 29 Access Lists and Groups Mode of access: read, write, execute Three classes of users RWX a) owner access 7 111 RWX b) group access 6 110 RWX c) public access 1 001 Ask manager to create a group (unique name), say G, and add some users to the group. For a particular file (say game) or subdirectory, define an appropriate access. owner chmod group 761 public game Attach a group to a file chgrp G game