<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    Linux - 3. 文件系統(tǒng)--詳細講解

    Posted on 2011-01-06 11:21 幻海藍夢 閱讀(346) 評論(0)  編輯  收藏 所屬分類: Linux
    Linux 分區(qū)以柱面劃分,且必須格式化成 Linux 標準文件系統(tǒng) (ext2/ext3 等) 才能使用。通常來說,每個分區(qū)只能格式化為一個文件系統(tǒng)。

    盡 管硬盤的最小存儲單位是扇區(qū),但對于文件系統(tǒng)而言,扇區(qū)的讀寫效率過低,因此以 n 個扇區(qū)為一個塊 (Block),這是文件系統(tǒng)的最小存儲單位,當前支持 1024/2048/4096 三種大小的塊。當分區(qū)存儲大文件時,大的塊有助于提高讀寫效率。以 10MB 文件為例,扇區(qū)是 512 字節(jié),需要讀取 (I/O) 20480 次,而對于 4096 字節(jié)的塊而言只需 2560 次。但也正因為塊是最小存儲單位,對于眾多的小文件來說,存儲空間浪費也就非常嚴重。即便文件小于塊,其剩余空間也是無法繼續(xù)使用的。

    1. EXT2 文件系統(tǒng)結(jié)構(gòu)

    在 EXT2 文件系統(tǒng)中,文件存儲分為 Inode 和數(shù)據(jù)塊兩部分。inode 中存儲了文件元數(shù)據(jù)(metadata 文件屬性)信息和塊指針(指向數(shù)據(jù)塊位置),數(shù)據(jù)塊中存儲了文件內(nèi)容數(shù)據(jù)。整個分區(qū)被劃分為 n 個塊組 (Block Group),每個塊組又劃分為多個區(qū)域。

    uploads/200907/30_115715_1.png
    • Super Block: 超級塊,記錄文件系統(tǒng)信息,包括塊和 inode 總量、使用情況等等。
    • Group Description: 組描述,記錄塊組信息。
    • Block Bitmap: 塊位圖,記錄塊使用狀態(tài),用于分配和回收數(shù)據(jù)塊。
    • Inode Bitmap: Inode 位圖,記錄 Inode 使用狀態(tài),用于分配和回收 Inode。
    • Inode Table: Inode 表,存儲 Inode。
    • Data Blocks: 數(shù)據(jù)塊。
    可以用 dumpe2fs 查看分區(qū)的相關(guān)信息
    $ sudo dumpe2fs /dev/sda1

    Filesystem magic number: 0xEF53
    Filesystem revision #: 1 (dynamic)
    Filesystem OS type: Linux
    Inode count: 498736
    Block count: 1994060
    Reserved block count: 99703
    Free blocks: 1333369
    Free inodes: 381040
    First block: 0
    Block size: 4096
    Fragment size: 4096
    Reserved GDT blocks: 486
    Blocks per group: 32768
    Fragments per group: 32768
    Inodes per group: 8176
    Inode blocks per group: 511
    Filesystem created: Sun Jul 19 14:03:01 2009
    Last mount time: Wed Jul 29 11:21:01 2009
    Last write time: Wed Jul 29 11:21:01 2009
    First inode: 11
    Block size: 4096
    Inode size: 256

    ... ...

    Group 0: (Blocks 0-32767)
    Primary superblock at 0, Group descriptors at 1-1
    Reserved GDT blocks at 2-487
    Block bitmap at 488 (+488), Inode bitmap at 489 (+489)
    Inode table at 490-1000 (+490)
    1172 free blocks, 8161 free inodes, 2 directories
    Free blocks: 19992, 20034-20035, 20037-20043, 31605-31606, 31608-32767
    Free inodes: 16-8176

    Group 1: (Blocks 32768-65535)
    Backup superblock at 32768, Group descriptors at 32769-32769
    Reserved GDT blocks at 32770-33255
    Block bitmap at 33256 (+488), Inode bitmap at 33257 (+489)
    Inode table at 33258-33768 (+490)
    20522 free blocks, 4056 free inodes, 175 directories
    Free blocks: 33771-33773, 34053-34062, 34107-34136, 34141, ...
    Free inodes: 11956-11957, 11965, 11984, 11988, 11991, 11998, ...

    Group 2: (Blocks 65536-98303)
    Block bitmap at 65536 (+0), Inode bitmap at 65537 (+1)
    Inode table at 65538-66048 (+2)
    17487 free blocks, 5021 free inodes, 724 directories
    Free blocks: 67305-67307, 67309, 68035, 68043-68044, 70506-70514, ...
    Free inodes: 19508-24528

    2. Inode 結(jié)構(gòu)

    Inode 結(jié)構(gòu)中保存了文件的屬性信息和數(shù)據(jù)塊指針。每個 inode 大小為 128 字節(jié)。

    uploads/200907/30_115720_2.png
    • Mode: 包含 inode 描敘的內(nèi)容以及用戶使用權(quán)限。EXT2 中的 inode 可以表示一個文件、目錄、符號連接、塊設(shè)備、字符設(shè)備或 FIFO。
    • Owner Information: 文件或目錄所有者(用戶/組)標志符。文件系統(tǒng)根據(jù)它可以進行正確的存取。
    • Size: 文件尺寸 (單位: 字節(jié))。
    • Timestamps: inode 創(chuàng)建及最后一次被修改的時間。
    • Direct Blocks: 數(shù)據(jù)塊直接指針快,可存儲 12 個直接指針,也就是說指向 12 個數(shù)據(jù)塊。
    • Indirect Blocks: 單級間接指針快,指向一個數(shù)據(jù)塊。假設(shè)每個塊為 1024B,那么一共可以存儲 1024 / 4 = 256 個數(shù)據(jù)塊指針。
    • Double Indirect: 二級間接指針快。可存儲 256 * 256 個數(shù)據(jù)塊指針。
    • Tripe Indirect: 三級間接指針快。可存儲 256 * 256 * 256 個數(shù)據(jù)塊指針。
    當 Block = 1024 時,最大文件尺寸 = 1024 * 12 + 1024 * 256 + 1024 * 256 * 256 + 1024 * 256 * 256 * 256 = 16843020 KB (約 16 GB)。

    所有的 Inode 都存儲在 Inode Table 中,當我們訪問一個文件時,將完成如下步驟。

    (1) 首先訪問文件根目錄的 Inode,從根目錄的數(shù)據(jù)塊中,我們可以找到該目錄下所有文件和子目錄的 Inode。
    (2) 利用找到的 Inode 從 Inode table 中繼續(xù)訪問下一級目錄,直到獲取文件的 Inode。
    (3) 利用文件的 Inode 我們就可以讀取文件數(shù)據(jù)塊的內(nèi)容了。

    uploads/200907/30_122259_4.png


    目錄是一種特殊的文件,它的數(shù)據(jù)塊中存儲了該目錄中所有文件和目錄的名稱以及 Inode (見下面的示意圖)。從 Inode 數(shù)據(jù)結(jié)構(gòu)上我們也可以看到,其內(nèi)部并沒有保存文件名的區(qū)域。

    uploads/200907/30_121608_3.png


    一個分區(qū)所能容納的文件數(shù)量和 Inode 數(shù)量有關(guān),因為一個文件最少要占用一個 Inode (也可能是多個,比如硬鏈接)。當目錄下的文件數(shù)量過多時,那么就需要多個塊來記錄關(guān)聯(lián)數(shù)據(jù)。

    3. EXT3 文件系統(tǒng)

    操 作一個文件時,我們除了在數(shù)據(jù)塊寫入數(shù)據(jù)外,還需更新 Inode 中的相關(guān)信息。若在其完成操作前的任何時候出現(xiàn)異常(比如斷電)都會導(dǎo)致 Inode 中數(shù)據(jù)和數(shù)據(jù)塊不一致。如果發(fā)生這類問題,EXT2 文件系統(tǒng)會在重啟時進行檢查,從超級塊開始逐步校驗,這個過程非常耗時。EXT3 是 EXT2 的升級版本,其代碼、磁盤格式和元數(shù)據(jù)都和 EXT2 相同,這意味著 EXT2 可以無損轉(zhuǎn)化為 EXT3 。

    EXT3 是一種日志文件系統(tǒng),它會在操作文件前記錄文件操作日志,在文件讀寫完成后,完成該日志,這類似于數(shù)據(jù)庫的事務(wù)機制。這種日志模式的好處就是在發(fā)生錯誤時,直接檢查日志就可獲知問題所在。

    ---------- 分割線 -------------

    Linux 支持很多種文件系統(tǒng),本文不作一一描述,可自行參考相關(guān)文檔。
    原文:http://www.rainsts.net/article.asp?id=842
    主站蜘蛛池模板: 毛片免费在线观看网址| 亚洲av日韩aⅴ无码色老头| 最新精品亚洲成a人在线观看| 亚洲狠狠爱综合影院婷婷| 久久精品国产亚洲网站| 亚洲av色影在线| 亚洲精品亚洲人成在线播放| 中文字幕无码亚洲欧洲日韩| A毛片毛片看免费| 91免费在线播放| 成人片黄网站色大片免费观看cn| 免费成人在线电影| 无码专区永久免费AV网站| 18禁美女黄网站色大片免费观看| 波多野结衣在线免费视频| 亚洲熟妇无码八AV在线播放| 亚洲色成人网站WWW永久四虎| 两个人看的www免费视频| 日本高清免费网站| 久久亚洲国产精品五月天| 最近免费最新高清中文字幕韩国| 亚洲精品视频免费观看| 两个人看的www免费视频| 亚洲精品福利网站| 18以下岁毛片在免费播放| 亚洲午夜久久久精品影院| 亚洲熟妇AV一区二区三区宅男| 国产老女人精品免费视频| 亚洲精品自产拍在线观看动漫| 国产在线观看麻豆91精品免费| 亚洲av日韩专区在线观看| 亚洲女初尝黑人巨高清| 美女视频黄是免费的网址| 亚洲精选在线观看| 全免费一级午夜毛片| 亚洲一级毛片免费观看| 免费A级毛片无码A∨| 亚洲成av人片天堂网| 国产香蕉九九久久精品免费| 亚洲人成高清在线播放| 免费观看无遮挡www的视频 |