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