新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > linux文件系統基礎知識

        linux文件系統基礎知識

        作者: 時間:2016-10-08 來源:網絡 收藏

        這兩天看了一本fedora 6的實踐教程,下面是有關linux文件系統知識的學習筆記:

        本文引用地址:http://www.104case.com/article/201610/305665.htm

        1、linux文件系統分配策略:

        塊分配( block allocation ) 和 擴展分配 ( extent allocation )

        塊分配:磁盤上的文件塊根據需要分配給文件,避免了存儲空間的浪費。但當文件擴充時,會造成文件中文件塊的不連續,從而導致過多的磁盤尋道時間。

        每一次文件擴展時,塊分配算法就需要寫入文件塊的結構信息,也就是 meta-dada 。meta-data總是與文件一起寫入存儲設備,改變文件的操作要等到所有meta-data的操作都完成后才能進行,

        因此,meta-data的操作會明顯降低整個文件系統的性能。

        擴展分配: 文件創建時,一次性分配一連串連續的塊,當文件擴展時,也一次分配很多塊。meta-data在文件創建時寫入,當文件大小沒有超過所有已分配文件塊大小時,就不用寫入meta-data,直到需要再分配文件塊的時候。

        擴展分配采用成組分配塊的方式,減少了SCSI設備寫數據的時間,在讀取順序文件時具有良好的性能,但隨機讀取文件時,就和塊分配類似了。

        文件塊的組或塊簇 ( block cluster) 的大小是在編譯時確定的。簇的大小對文件系統的性能有很大的影響。

        注: meta-data 元信息:和文件有關的信息,比如權限、所有者以及創建、訪問或更改時間等。

        2、文件的記錄形式

        linux文家系統使用索引節點(inode)來記錄文件信息。索引節點是一種數據結構,它包含了一個文件的長度、創建及修改時間、權限、所屬關系、磁盤中的位置等信息。

        一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一的元素對應。每個索引節點在數組中的索引號,稱為索引節點號。

        linux文件系統將文件索引節點號和文件名同時保存在目錄中,所以,目錄只是將文件的名稱和它的索引節點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱為一個連接。

        對于一個文件來說,有一個索引節點號與之對應;而對于一個索引節點號,卻可以對應多個文件名。

        連接分為軟連接和硬連接,其中軟連接又叫符號連接。

        硬連接: 原文件名和連接文件名都指向相同的物理地址。目錄不能有硬連接;硬連接不能跨文件系統(不能跨越不同的分區),文件在磁盤中只有一個拷貝。

        由于刪除文件要在同一個索引節點屬于唯一的連接時才能成功,因此硬連接可以防止不必要的誤刪除。

        軟連接: 用 ln -s 命令建立文件的符號連接。符號連接是linux特殊文件的一種,作為一個文件,它的數據是它所連接的文件的路徑名。沒有防止誤刪除的功能。

        3、文件系統類型:

        ext2 : 早期linux中常用的文件系統

        ext3 : ext2的升級版,帶日志功能

        RAMFS : 內存文件系統,速度很快

        NFS : 網絡文件系統,由SUN發明,主要用于遠程文件共享

        MS-DOS : MS-DOS文件系統

        VFAT : Windows 95/98 操作系統采用的文件系統

        FAT : Windows XP 操作系統采用的文件系統

        NTFS : Windows NT/XP 操作系統采用的文件系統

        HPFS : OS/2 操作系統采用的文件系統

        PROC : 虛擬的進程文件系統

        ISO9660 : 大部分光盤所采用的文件系統

        ufsSun : OS 所采用的文件系統

        NCPFS : Novell 服務器所采用的文件系統

        SMBFS : Samba 的共享文件系統

        XFS : 由SGI開發的先進的日志文件系統,支持超大容量文件

        JFS :IBM的AIX使用的日志文件系統

        ReiserFS : 基于平衡樹結構的文件系統

        udf: 可擦寫的數據光盤文件系統

        4、虛擬文件系統VFS

        linux支持的所有文件系統稱為邏輯文件系統,而linux在傳統的邏輯文件系統的基礎上增加料一個蓄念文件系統( Vitual File System ,VFS) 的接口層。

        虛擬文件系統(VFS) 位于文件系統的最上層,管理各種邏輯文件系統,并可以屏蔽各種邏輯文件系統之間的差異,提供統一文件和設備的訪問接口。

        5、文件的邏輯結構

        文件的邏輯結構可分為兩大類: 字節流式的無結構文件 和 記錄式的有結構文件。

        由字節流(字節序列)組成的文件是一種無結構文件或流式文件 ,不考慮文件內部的邏輯結構,只是簡單地看作是一系列字節的序列,便于在文件的任意位置添加內容。

        由記錄組成的文件稱為記錄式文件 ,記錄是這種文件類型的基本信息單位,記錄式文件通用于信息管理。

        6、文件類型

        普通文件 : 通常是流式文件

        目錄文件 : 用于表示和管理系統中的全部文件

        連接文件 : 用于不同目錄下文件的共享

        設備文件 : 包括塊設備文件和字符設備文件,塊設備文件表示磁盤文件、光盤等,字符設備文件按照字符操作終端、鍵盤等設備。

        管道(FIFO)文件 : 提供進程建通信的一種方式

        套接字(socket) 文件: 該文件類型與網絡通信有關

        7、文件結構: 包括索引節點和數據

        索引節點 : 又稱 I 節點,在文件系統結構中,包含有關相應文件的信息的一個記錄,這些信息包括文件權限、文件名、文件大小、存放位置、建立日期等。文件系統中所有文件的索引節點保存在索引節點表中。

        數據 : 文件的實際內容。可以是空的,也可以非常大,并且擁有自己的結構。

        8、ext2文件系統

        ext2文件系統的數據塊大小一般為 1024B、2048B 或 4096B

        ext2文件系統采用的索引節點(inode):

        索引節點采用了多重索引結構,主要體現在直接指針和3個間接指針。直接指針包含12個直接指針塊,它們直接指向包含文件數據的數據塊,緊接在后面的3個間接指針是為了適應文件的大小變化而設計的。

        e.g: 假設數據塊大小為1024B ,利用12個直接指針,可以保存最大為12KB的文件,當文件超過12KB時,則要利用單級間接指針,該指針指向的數據塊保存有一組數據塊指針,這些指針依次指向包含有實際數據的數據塊,

        假如每個指針占用4B,則每個單級指針數據塊可保存 1024/4=256 個數據指針,因此利用直接指針和單級間接指針可保存 1024*12+1024*256=268 KB的文件。當文件超過268KB時,再利用二級間接指針,直到使用三級間接指針。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阜宁县| 手游| 商都县| 高阳县| 赤水市| 宜阳县| 泽普县| 沧州市| 乳山市| 来宾市| 临桂县| 嵩明县| 林州市| 辽源市| 台湾省| 德江县| 巴彦县| 顺平县| 昌邑市| 灵武市| 井冈山市| 威宁| 大渡口区| 满城县| 遂平县| 玛纳斯县| 西平县| 湾仔区| 沂南县| 邵阳市| 高尔夫| 海伦市| 金门县| 沅陵县| 大足县| 济源市| 安仁县| 图们市| 砀山县| 河东区| 偏关县|