馮航 武漢學院信息及傳播學院信息系
Linux操作系統(tǒng)文件管理概論
馮航 武漢學院信息及傳播學院信息系
文件系統(tǒng)是操作系統(tǒng)用來明確存儲設備(常見的為磁盤,也有基于分區(qū)上的文件的方法以及數(shù)據(jù)結構;即是在存儲設備上組織文件的方法。操作系統(tǒng)中負責管理和存儲文件信息的軟件機構稱之為文件管理系統(tǒng),簡稱為文件系統(tǒng)。文件系統(tǒng)是由三部分組成:文件系統(tǒng)的接口,對于對象操縱和管理的軟件集合,對象以及屬性。從系統(tǒng)的角度來看,文件系統(tǒng)是對于文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統(tǒng)。具體點說,它主要負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等功能。
inode中文譯為索引節(jié)點,它是用來存放檔案及目錄的基本信息,包含時間、檔名、使用者及群組等。
inode分為內存中的inode和文件系統(tǒng)中的inode,為了避免混淆,我們稱前者為VFSinode,而后者以EXT2為代表,我們稱為Ext2inode。下面分別對VFSinodee與Ext2inode做一下簡單的描述:
VFSinode里包含文件訪問權限、屬主、組、大小、生成時間、訪問時間、最后修改時間等信息。VFSinode是linux管理文件系統(tǒng)的最基本單位,同時也是文件系統(tǒng)連接任何子目錄、文件的橋梁。inode結構中的靜態(tài)信息取自物理設備上的文件系統(tǒng),由文件系統(tǒng)指定的函數(shù)填寫,它只存在于內存中,可以通過inode緩存訪問。雖然每個文件都有相應的inode結點,但是只有在需要的時候系統(tǒng)才會在內存中為其建立相應的inode數(shù)據(jù)結構,建立的inode結構將形成一個鏈表,我們可以通過遍歷這個鏈表去得到我們需要的文件結點,VFS也為已分配的inode構造緩存和哈希表,以提高系統(tǒng)性能。
EXT2inode是用來定義文件系統(tǒng)的結構以及描述系統(tǒng)中每個文件的管理信息,每個文件都只有一個inode,即使文件中沒有數(shù)據(jù),它的索引結點也是存在的。每個文件用一個單獨的Ext2inode結構來描述,而且每一個inode都有唯一的標志號。Ext2inode為內存中的inode結構提供了文件的基本信息,隨著內存中inode結構的變化,系統(tǒng)也將隨之更新Ext2inode中相應的內容。
所以從以上結構的定義中可以看出來inode(VFSinode)與ext2_inode的差別是很大的,它們都包含動態(tài)信息和靜態(tài)信息,通過union指定的內容一定是動態(tài)的。inode結構中的unionu實際上反映了VFS支持的文件系統(tǒng)。
每個inode的大小為128個字節(jié),下面具體介紹哪幾個字節(jié)代表的內容:0~1表示文件的類型和屬性
2~3表示文件的長度
4~7表示文件宿主用戶id
8~19表示三個時間屬性,每4個字節(jié)代表一個時間
20~23表示Deletion Time即刪除的時間
24~25表示用戶組id
26~27表示硬鏈接的個數(shù)
28~31表示Blockcount的大小
為了防止由于系統(tǒng)崩潰或電源突然中斷而導致正在進行的文件操作中斷所造成的數(shù)據(jù)丟失,ext2文件系統(tǒng)就必須在每個數(shù)據(jù)塊創(chuàng)建或修改后即刻寫入磁盤。磁盤的尋道操作對于cpu來講是如此的之長,為了提高性能,所以寫操作數(shù)據(jù)被緩存,寫操作被延遲。但這樣也帶來了數(shù)據(jù)丟失的風險,假如數(shù)據(jù)還沒來得及寫入磁盤,電源突然中斷,數(shù)據(jù)將會丟失。為了解決這個問題,所以產(chǎn)生了ext3文件系統(tǒng)。
日志文件系統(tǒng)(ext3)如今已經(jīng)成為Linux的缺省文件系統(tǒng)。日志文件系統(tǒng)就是專門為了那些厭倦了一直盯著啟動時fsck(即文件系統(tǒng)一致性檢查)的人而設計的(日志文件系統(tǒng)同樣適用于希望文件系統(tǒng)具有故障恢復能力的群體)。如果系統(tǒng)采用傳統(tǒng)的未提供日志功能的文件系統(tǒng),那么操作系統(tǒng)在檢測到系統(tǒng)為非正常關機時,會使用fsck應用程序來執(zhí)行一致性檢驗。這個應用程序會掃描文件系統(tǒng),并且修復任何可以安全修復的問題。而且在一些情況下,當文件系統(tǒng)損壞嚴重時,操作系統(tǒng)就會啟動到單客戶模式,由用戶進行修復。
網(wǎng)絡文件系統(tǒng),英文名為NetworkFileSystem(NFS)。它是由SUN公司研制出的UNIX表示層協(xié)議(pressentationlayerprotocol),它可以使使用者訪問網(wǎng)絡上別處的文件,就像是在使用自己的計算機一樣。NFS是基于UDP/IP協(xié)議的應用,它的實現(xiàn)主要是采用遠程過程調用RPC機制,RPC提供了一組與機器、操作系統(tǒng)以及低層傳送協(xié)議無關的存取遠程文件的操作。而RPC則采用了XDR的支持。XDR則是一種與機器無關的數(shù)據(jù)描述編碼的協(xié)議,它以獨立與任意機器體系結構的格式對網(wǎng)上傳送的數(shù)據(jù)進行編碼和解碼,支持在異構系統(tǒng)之間數(shù)據(jù)的傳送。
NFS的主要特點有:提供透明文件訪問以及文件傳輸、不需要改變現(xiàn)有的工作環(huán)境便可以擴充新的資源或軟件、高性能,可靈活配置等特點。
NFS允許計算的客戶-服務器模型。服務器實施共享文件系統(tǒng),以及客戶端所連接的存儲。客戶端實施用戶接口來共享文件系統(tǒng),并加載到本地文件空間當中。
綜合一學期的Linux操作系統(tǒng)的課程學習,對于Linux操作系統(tǒng)有了一定的了解和掌握。知道了Linux是一個性能穩(wěn)定、功能強大、效率高的操作系統(tǒng)。它在功能特性方面與Unix系統(tǒng)相似,同時又具有多任務、多用戶、多平臺等若干特性。Linux的源代碼是開放的,閱讀Linux源代碼,無疑是深入學習Linux的最好方法。