精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux的EXT4 文件系統(tǒng)的歷史、特性以及更優(yōu)實(shí)踐

系統(tǒng) Linux
讓我們大概地從 EXT4 的歷史、特性以及最佳實(shí)踐這幾個(gè)方面來(lái)學(xué)習(xí)它和之前的幾代 EXT 文件系統(tǒng)有何不同。

[[196620]]

讓我們大概地從 EXT4 的歷史、特性以及***實(shí)踐這幾個(gè)方面來(lái)學(xué)習(xí)它和之前的幾代 EXT 文件系統(tǒng)有何不同。

在之前關(guān)于 Linux 文件系統(tǒng)的文章里,我寫過一篇 Linux 文件系統(tǒng)介紹 和一些更高級(jí)的概念例如 一切都是文件。現(xiàn)在我想要更深入地了解 EXT 文件系統(tǒng)的特性的詳細(xì)內(nèi)容,但是首先讓我們來(lái)回答一個(gè)問題,“什么樣才算是一個(gè)文件系統(tǒng) ?” 一個(gè)文件系統(tǒng)應(yīng)該涵蓋以下所有特點(diǎn):

  1. 數(shù)據(jù)存儲(chǔ): 對(duì)于任何一個(gè)文件系統(tǒng)來(lái)說(shuō),一個(gè)最主要的功能就是能夠被當(dāng)作一個(gè)結(jié)構(gòu)化的容器來(lái)存儲(chǔ)和獲取數(shù)據(jù)。
  2. 命名空間: 命名空間是一個(gè)提供了用于命名與組織數(shù)據(jù)的命名規(guī)則和數(shù)據(jù)結(jié)構(gòu)的方法學(xué)。
  3. 安全模型: 一個(gè)用于定義訪問權(quán)限的策略。
  4. API: 操作這個(gè)系統(tǒng)的對(duì)象的系統(tǒng)功能調(diào)用,這些對(duì)象諸如目錄和文件。
  5. 實(shí)現(xiàn): 能夠?qū)崿F(xiàn)以上幾點(diǎn)的軟件。

本文內(nèi)容的討論主要集中于上述幾點(diǎn)中的***項(xiàng),并探索為一個(gè) EXT 文件系統(tǒng)的數(shù)據(jù)存儲(chǔ)提供邏輯框架的元數(shù)據(jù)結(jié)構(gòu)。

EXT 文件系統(tǒng)歷史

雖然 EXT 文件系統(tǒng)是為 Linux 編寫的,但其真正起源于 Minix 操作系統(tǒng)和 Minix 文件系統(tǒng),而 Minix 最早發(fā)布于 1987,早于 Linux 5 年。如果我們從 EXT 文件系統(tǒng)大家族的 Minix 起源來(lái)觀察其歷史與技術(shù)發(fā)展那么理解 EXT4 文件系統(tǒng)就會(huì)簡(jiǎn)單得多。

Minix

當(dāng) Linux Torvalds 在寫最初的 Linux 內(nèi)核的時(shí)候,他需要一個(gè)文件系統(tǒng)但是他又不想自己寫一個(gè)。于是他簡(jiǎn)單地把 Minix 文件系統(tǒng) 加了進(jìn)去,這個(gè) Minix 文件系統(tǒng)是由 Andrew S. Tanenbaum 寫的,同時(shí)它也是 Tanenbaum 的 Minix 操作系統(tǒng)的一部分。Minix 是一個(gè)類 Unix 風(fēng)格的操作系統(tǒng),最初編寫它的原因是用于教育用途。Minix 的代碼是自由可用的并有適當(dāng)?shù)脑S可協(xié)議,所以 Torvalds 可以把它用 Linux 的最初版本里。

Minix 有以下這些結(jié)構(gòu),其中的大部分位于生成文件系統(tǒng)的分區(qū)中:

  • 引導(dǎo)扇區(qū) 是硬盤安裝后的***個(gè)扇區(qū)。這個(gè)引導(dǎo)塊包含了一個(gè)非常小的引導(dǎo)記錄和一個(gè)分區(qū)表。
  • 每一個(gè)分區(qū)的***個(gè)塊都是一個(gè)包含了元數(shù)據(jù)的超級(jí)塊(superblock) ,這些元數(shù)據(jù)定義了其他的文件系統(tǒng)結(jié)構(gòu)并將其定位于物理硬盤的具體分區(qū)上。
  • 一個(gè) inode 位圖塊 決定了哪些 inode 是在使用中的,哪一些是未使用的。
  • inode 在硬盤上有它們自己的空間。每一個(gè) inode 都包含了一個(gè)文件的信息,包括其所處的數(shù)據(jù)塊的位置,也就是該文件所處的區(qū)域。
  • 一個(gè) 區(qū)位圖 用于保持追蹤數(shù)據(jù)區(qū)域的使用和未使用情況。
  • 一個(gè) 數(shù)據(jù)區(qū), 這里是數(shù)據(jù)存儲(chǔ)的地方。

對(duì)上述了兩種位圖類型來(lái)說(shuō),一個(gè)位(bit)表示一個(gè)指定的數(shù)據(jù)區(qū)或者一個(gè)指定的 inode。 如果這個(gè)位是 0 則表示這個(gè)數(shù)據(jù)區(qū)或者這個(gè) inode 是未使用的,如果是 1 則表示正在使用中。

那么,inode 又是什么呢 ? 就是 index-node(索引節(jié)點(diǎn))的簡(jiǎn)寫。 inode 是位于磁盤上的一個(gè) 256 字節(jié)的塊,用于存儲(chǔ)和該 inode 對(duì)應(yīng)的文件的相關(guān)數(shù)據(jù)。這些數(shù)據(jù)包含了文件的大小、文件的所有者和所屬組的用戶 ID、文件模式(即訪問權(quán)限)以及三個(gè)時(shí)間戳用于指定:該文件***的訪問時(shí)間、該文件的***修改時(shí)間和該 inode 中的數(shù)據(jù)的***修改時(shí)間。

同時(shí),這個(gè) inode 還包含了位置數(shù)據(jù),指向了其所對(duì)應(yīng)的文件數(shù)據(jù)在硬盤中的位置。在 Minix 和 EXT 1-3 文件系統(tǒng)中,這是一個(gè)數(shù)據(jù)區(qū)和塊的列表。Minix 文件系統(tǒng)的 inode 支持 9 個(gè)數(shù)據(jù)塊,包括 7 個(gè)直接數(shù)據(jù)塊和 2 個(gè)間接數(shù)據(jù)塊。如果你想要更深入的了解,這里有一個(gè)優(yōu)秀的 PDF 詳細(xì)地描述了 Minix 文件系統(tǒng)結(jié)構(gòu) 。同時(shí)你也可以在維基百科上對(duì) inode 指針結(jié)構(gòu) 做一個(gè)快速了解。

EXT

原生的 EXT 文件系統(tǒng) (意即擴(kuò)展的(extended)) 是由 Rémy Card 編寫并于 1992 年與 Linux 一同發(fā)行。主要是為了克服 Minix 文件系統(tǒng)中的一些文件大小限制的問題。其中,最主要的結(jié)構(gòu)變化就是文件系統(tǒng)中的元數(shù)據(jù)。它基于 Unix 文件系統(tǒng) (UFS),其也被稱為伯克利快速文件系統(tǒng)(FFS)。我發(fā)現(xiàn)只有很少一部分關(guān)于 EXT 文件系統(tǒng)的發(fā)行信息是可以被確證的,顯然這是因?yàn)槠浯嬖谥鴩?yán)重的問題,并且它很快地被 EXT2 文件系統(tǒng)取代了。

EXT2

EXT2 文件系統(tǒng) 就相當(dāng)?shù)爻晒Γ?Linux 發(fā)行版中存活了多年。它是我在 1997 年開始使用 Red Hat Linux 5.0 時(shí)接觸的***個(gè)文件系統(tǒng)。實(shí)際上,EXT2 文件系統(tǒng)有著和 EXT 文件系統(tǒng)基本相同的元數(shù)據(jù)結(jié)構(gòu)。然而 EXT2 更高瞻遠(yuǎn)矚,因?yàn)槠湓獢?shù)據(jù)結(jié)構(gòu)之間留有很多供將來(lái)使用的磁盤空間。

和 Minix 類似,EXT2 也有一個(gè)引導(dǎo)扇區(qū) ,它是硬盤安裝后的***個(gè)扇區(qū)。它包含了非常小的引導(dǎo)記錄和一個(gè)分區(qū)表。接著引導(dǎo)扇區(qū)之后是一些保留的空間,它填充了引導(dǎo)記錄和硬盤驅(qū)動(dòng)器上的***個(gè)分區(qū)(通常位于下一個(gè)柱面)之間的空間。GRUB2 - 也可能是 GRUB1 - 將此空間用于其部分引導(dǎo)代碼。

每個(gè) EXT2 分區(qū)中的空間被分為柱面組(cylinder group),它允許更精細(xì)地管理數(shù)據(jù)空間。 根據(jù)我的經(jīng)驗(yàn),每一組大小通常約為 8MB。 下面的圖 1 顯示了一個(gè)柱面組的基本結(jié)構(gòu)。 柱面中的數(shù)據(jù)分配單元是塊,通常大小為 4K。

 

圖 1: EXT 文件系統(tǒng)中的柱面組的結(jié)構(gòu)

柱面組中的***個(gè)塊是一個(gè)超級(jí)塊(superblock),它包含了元數(shù)據(jù),定義了其它文件系統(tǒng)的結(jié)構(gòu)并將其定位于物理硬盤的具體分區(qū)上。分區(qū)中有一些柱面組還會(huì)有備用超級(jí)塊,但并不是所有的柱面組都有。我們可以使用例如 dd 等磁盤工具來(lái)拷貝備用超級(jí)塊的內(nèi)容到主超級(jí)塊上,以達(dá)到修復(fù)損壞的超級(jí)塊的目的。雖然這種情況不會(huì)經(jīng)常發(fā)生,但是在幾年前我的一個(gè)超級(jí)塊損壞了,我就是用這種方法來(lái)修復(fù)的。幸好,我很有先見之明地使用了 dumpe2fs 命令來(lái)備份了我的系統(tǒng)上的分區(qū)描述符信息。

以下是 dumpe2fs 命令的一部分輸出。這部分輸出主要是超級(jí)塊上包含的一些元數(shù)據(jù),同時(shí)也是文件系統(tǒng)上的前兩個(gè)柱面組的數(shù)據(jù)。

  1. # dumpe2fs /dev/sda1 
  2. Filesystem volume name:   boot  
  3. Last mounted on:          /boot  
  4. Filesystem UUID:          79fc5ed8-5bbc-4dfe-8359-b7b36be6eed3  
  5. Filesystem magic number:  0xEF53  
  6. Filesystem revision #:    1 (dynamic)  
  7. Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir nlink extra_isize  
  8. Filesystem flags:         signed_directory_hash  
  9. Default mount options:    user_xattr acl  
  10. Filesystem state:         clean  
  11. Errors behavior:          Continue  
  12. Filesystem OS type:       Linux  
  13. Inode count:              122160  
  14. Block count:              488192  
  15. Reserved block count:     24409  
  16. Free blocks:              376512  
  17. Free inodes:              121690  
  18. First block:              0  
  19. Block size:               4096  
  20. Fragment size:            4096  
  21. Group descriptor size:    64  
  22. Reserved GDT blocks:      238  
  23. Blocks per group:         32768  
  24. Fragments per group:      32768  
  25. Inodes per group:         8144  
  26. Inode blocks per group:   509  
  27. Flex block group size:    16  
  28. Filesystem created:       Tue Feb  7 09:33:34 2017  
  29. Last mount time:          Sat Apr 29 21:42:01 2017  
  30. Last write time:          Sat Apr 29 21:42:01 2017  
  31. Mount count:              25  
  32. Maximum mount count:      -1  
  33. Last checked:             Tue Feb  7 09:33:34 2017  
  34. Check interval:           0 (<none>)  
  35. Lifetime writes:          594 MB  
  36. Reserved blocks uid:      0 (user root)  
  37. Reserved blocks gid:      0 (group root)  
  38. First inode:              11  
  39. Inode size:               256  
  40. Required extra isize:     32  
  41. Desired extra isize:      32  
  42. Journal inode:            8  
  43. Default directory hash:   half_md4  
  44. Directory Hash Seed:      c780bac9-d4bf-4f35-b695-0fe35e8d2d60  
  45. Journal backup:           inode blocks  
  46. Journal features:         journal_64bit  
  47. Journal size:             32M  
  48. Journal length:           8192  
  49. Journal sequence:         0x00000213  
  50. Journal start:            0  
  51. Group 0: (Blocks 0-32767)  
  52.  Primary superblock at 0, Group descriptors at 1-1  
  53.  Reserved GDT blocks at 2-239  
  54.  Block bitmap at 240 (+240)  
  55.  Inode bitmap at 255 (+255)  
  56.  Inode table at 270-778 (+270)  
  57.  24839 free blocks, 7676 free inodes, 16 directories  
  58.  Free blocks: 7929-32767  
  59.  Free inodes: 440, 470-8144  
  60. Group 1: (Blocks 32768-65535)  
  61.  Backup superblock at 32768, Group descriptors at 32769-32769  
  62.  Reserved GDT blocks at 32770-33007  
  63.  Block bitmap at 241 (bg #0 + 241)  
  64.  Inode bitmap at 256 (bg #0 + 256) 
  65.  Inode table at 779-1287 (bg #0 + 779)  
  66.  8668 free blocks, 8142 free inodes, 2 directories  
  67.  Free blocks: 33008-33283, 33332-33791, 33974-33975, 34023-34092, 34094-34104, 34526-34687, 34706-34723, 34817-35374, 35421-35844, 35935-36355, 36357-36863, 38912-39935, 39940-40570, 42620-42623, 42655, 42674-42687, 42721-42751, 42798-42815, 42847, 42875-42879, 42918-42943, 42975, 43000-43007, 43519, 43559-44031, 44042-44543, 44545-45055, 45116-45567, 45601-45631, 45658-45663, 45689-45695, 45736-45759, 45802-45823, 45857-45887, 45919, 45950-45951, 45972-45983, 46014-46015, 46057-46079, 46112-46591, 46921-47103, 49152-49395, 50027-50355, 52237-52255, 52285-52287, 52323-52351, 52383, 52450-52479, 52518-52543, 52584-52607, 52652-52671, 52734-52735, 52743-53247  
  68.  Free inodes: 8147-16288  
  69. Group 2: (Blocks 65536-98303)  
  70.  Block bitmap at 242 (bg #0 + 242)  
  71.  Inode bitmap at 257 (bg #0 + 257)  
  72.  Inode table at 1288-1796 (bg #0 + 1288)  
  73.  6326 free blocks, 8144 free inodes, 0 directories  
  74.  Free blocks: 67042-67583, 72201-72994, 80185-80349, 81191-81919, 90112-94207  
  75.  Free inodes: 16289-24432  
  76. Group 3: (Blocks 98304-131071) 
  77. <截?cái)?gt; 

每一個(gè)柱面組都有自己的 inode 位圖,用于判定該柱面組中的哪些 inode 是使用中的而哪些又是未被使用的。每一個(gè)柱面組的 inode 都有它們自己的空間。每一個(gè) inode 都包含了一個(gè)文件的相關(guān)信息,包括屬于該文件的數(shù)據(jù)塊的位置。而塊位圖紀(jì)錄了文件系統(tǒng)中的使用中和非使用中的數(shù)據(jù)塊。請(qǐng)注意,在上面的輸出中有大量關(guān)于文件系統(tǒng)的數(shù)據(jù)。在非常大的文件系統(tǒng)上,柱面組的數(shù)據(jù)可以多達(dá)數(shù)百頁(yè)的長(zhǎng)度。柱面組的元數(shù)據(jù)包括組中所有空閑數(shù)據(jù)塊的列表。

EXT 文件系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)分配策略以確保產(chǎn)生最少的文件碎片。減少文件碎片可以提高文件系統(tǒng)的性能。這些策略會(huì)在下面的 EXT4 中描述到。

我所遇見的關(guān)于 EXT2 文件系統(tǒng)***的問題是 fsck (文件系統(tǒng)檢查) 程序這一環(huán)節(jié)占用了很長(zhǎng)一段時(shí)間來(lái)定位和校準(zhǔn)文件系統(tǒng)中的所有的不一致性,從而導(dǎo)致在系統(tǒng)崩潰(crash)后其會(huì)花費(fèi)了數(shù)個(gè)小時(shí)來(lái)修復(fù)。有一次我的其中一臺(tái)電腦在崩潰后重新啟動(dòng)時(shí)共花費(fèi)了 28 個(gè)小時(shí)恢復(fù)磁盤,而且并且是在磁盤被檢測(cè)量只有幾百兆字節(jié)大小的情況下。

EXT3

EXT3 文件系統(tǒng)是應(yīng)一個(gè)目標(biāo)而生的,就是克服 fsck 程序需要完全恢復(fù)在文件更新操作期間發(fā)生的不正確關(guān)機(jī)而損壞的磁盤結(jié)構(gòu)所需的大量時(shí)間。它對(duì) EXT 文件系統(tǒng)的唯一新增功能就是 日志,它將提前記錄將對(duì)文件系統(tǒng)執(zhí)行的更改。 EXT3 的磁盤結(jié)構(gòu)的其余部分與 EXT2 中的相同。

除了同先前的版本一樣直接寫入數(shù)據(jù)到磁盤的數(shù)據(jù)區(qū)域外,EXT3 上的日志會(huì)將文件數(shù)據(jù)隨同元數(shù)據(jù)寫入到磁盤上的一個(gè)指定數(shù)據(jù)區(qū)域。一旦這些(日志)數(shù)據(jù)安全地到達(dá)硬盤,它就可以幾乎零丟失率地被合并或被追加到目標(biāo)文件上。當(dāng)這些數(shù)據(jù)被提交到磁盤上的數(shù)據(jù)區(qū)域上,這些日志就會(huì)隨即更新,這樣在日志中的所有數(shù)據(jù)提交之前,系統(tǒng)發(fā)生故障時(shí)文件系統(tǒng)將保持一致狀態(tài)。在下次啟動(dòng)時(shí),將檢查文件系統(tǒng)的不一致性,然后將仍保留在日志中的數(shù)據(jù)提交到磁盤的數(shù)據(jù)區(qū),以完成對(duì)目標(biāo)文件的更新。

日志功能確實(shí)降低了數(shù)據(jù)寫入性能,但是有三個(gè)可用于日志的選項(xiàng),允許用戶在性能和數(shù)據(jù)完整性、安全性之間進(jìn)行選擇。 我的個(gè)人更偏向于選擇安全性,因?yàn)槲业沫h(huán)境不需要大量的磁盤寫入活動(dòng)。

日志功能將失敗后檢查硬盤驅(qū)動(dòng)器所需的時(shí)間從幾小時(shí)(甚至幾天)減少到了幾分鐘。 多年來(lái),我遇到了很多導(dǎo)致我的系統(tǒng)崩潰的問題。要詳細(xì)說(shuō)的話恐怕還得再寫一篇文章,但這里需要說(shuō)明的是大多數(shù)是我自己造成的,就比如不小心踢掉電源插頭。 幸運(yùn)的是,EXT 日志文件系統(tǒng)將啟動(dòng)恢復(fù)時(shí)間縮短到兩三分鐘。此外,自從我開始使用帶日志記錄的 EXT3,我從來(lái)沒有遇到丟失數(shù)據(jù)的問題。

EXT3 的日志功能可以關(guān)閉,然后其功能就等同于 EXT2 文件系統(tǒng)了。 該日志本身仍然是存在的,只是狀態(tài)為空且未使用。 只需在 mount 命令中使用文件系統(tǒng)類型參數(shù)來(lái)重新掛載即可指定為 EXT2。 你可以從命令行執(zhí)行此操作,但是具體還是取決于你正在使用的文件系統(tǒng),不過你也可以更改 /etc/fstab 文件中的類型說(shuō)明符,然后重新啟動(dòng)。 我強(qiáng)烈建議不要將 EXT3 文件系統(tǒng)掛載為 EXT2 ,因?yàn)檫@會(huì)有丟失數(shù)據(jù)和增加恢復(fù)時(shí)間的潛在可能性。

EXT2 文件系統(tǒng)可以使用如下命令來(lái)通過日志升級(jí)到 EXT3 。

  1. tune2fs -j /dev/sda1 

/dev/sda1 表示驅(qū)動(dòng)器和分區(qū)的標(biāo)識(shí)符。同時(shí)要注意修改 /etc/fstab 中的文件系統(tǒng)類型標(biāo)識(shí)符并重新掛載分區(qū),或者重啟系統(tǒng)以確保修改生效。

EXT4

EXT4 文件系統(tǒng)主要提高了性能、可靠性和容量。為了提高可靠性,它新增了元數(shù)據(jù)和日志校驗(yàn)和。同時(shí)為了滿足各種關(guān)鍵任務(wù)要求,文件系統(tǒng)新增了納秒級(jí)別的時(shí)間戳,并在時(shí)間戳字段中添加了兩個(gè)高位來(lái)延緩時(shí)間戳的 2038 年問題 ,這樣 EXT4 文件系統(tǒng)至少可用到 2446 年。

在 EXT4 中,數(shù)據(jù)分配從固定塊改為擴(kuò)展盤區(qū)(extent)方式,擴(kuò)展盤區(qū)由硬盤驅(qū)動(dòng)器上的開始和結(jié)束位置來(lái)描述。這使得可以在單個(gè) inode 指針條目中描述非常長(zhǎng)的物理上連續(xù)的文件,這可以顯著減少描述大文件中所有數(shù)據(jù)的位置所需的指針數(shù)。其它在 EXT4 中已經(jīng)實(shí)施的分配策略可以進(jìn)一步減少碎片化。

EXT4 通過將新創(chuàng)建的文件散布在磁盤上,使其不會(huì)像早期的 PC 文件系統(tǒng)一樣全部聚集在磁盤起始位置,從而減少了碎片。文件分配算法嘗試在柱面組中盡可能均勻地散布文件,并且當(dāng)文件(由于太大)需要分段存儲(chǔ)時(shí),使不連續(xù)的文件擴(kuò)展盤區(qū)盡可能靠近同一文件中的其他部分,以盡可能減少磁頭尋道和電機(jī)旋轉(zhuǎn)等待時(shí)間。當(dāng)創(chuàng)建新文件或擴(kuò)展現(xiàn)有文件時(shí),使用其它策略來(lái)預(yù)先分配額外的磁盤空間。這有助于確保擴(kuò)展文件時(shí)不會(huì)自動(dòng)導(dǎo)致其分段。新文件不會(huì)緊挨這現(xiàn)有文件立即分配空間,這也可以防止現(xiàn)有文件的碎片化。

除了磁盤上數(shù)據(jù)的實(shí)際位置外,EXT4 使用諸如延遲分配的功能策略,以允許文件系統(tǒng)在分配空間之前收集到所有正在寫入磁盤的數(shù)據(jù),這可以提高數(shù)據(jù)空間連續(xù)的可能性。

較舊的 EXT 文件系統(tǒng)(如 EXT2 和 EXT3)可以作為 EXT4 進(jìn)行 mount ,以使其性能獲得較小的提升。但不幸的是,這需要關(guān)閉 EXT4 的一些重要的新功能,所以我建議不要這樣做。

自 Fedora 14 以來(lái),EXT4 一直是 Fedora 的默認(rèn)文件系統(tǒng)。我們可以使用 Fedora 文檔中描述的 流程 將 EXT3 文件系統(tǒng)升級(jí)到 EXT4,但是由于仍然存留的之前的 EXT3 元數(shù)據(jù)結(jié)構(gòu),它的性能仍將受到影響。從 EXT3 升級(jí)到 EXT4 的***方法是備份目標(biāo)文件系統(tǒng)分區(qū)上的所有數(shù)據(jù),使用 mkfs 命令將空 EXT4 文件系統(tǒng)寫入分區(qū),然后從備份中恢復(fù)所有數(shù)據(jù)。

Inode

之前介紹過的 inode 是 EXT 文件系統(tǒng)中的元數(shù)據(jù)的關(guān)鍵組件。 圖 2 顯示了 inode 和存儲(chǔ)在硬盤驅(qū)動(dòng)器上的數(shù)據(jù)之間的關(guān)系。 該圖是單個(gè)文件的目錄和 inode,在這種情況下,可能會(huì)產(chǎn)生高度碎片化。 EXT 文件系統(tǒng)可以主動(dòng)地減少碎片,所以不太可能會(huì)看到有這么多間接數(shù)據(jù)塊或擴(kuò)展盤區(qū)的文件。 實(shí)際上,你在下面將會(huì)看到,EXT 文件系統(tǒng)中的碎片非常低,所以大多數(shù) inode 只使用一個(gè)或兩個(gè)直接數(shù)據(jù)指針,而不使用間接指針。

 

圖 2 :inode 存儲(chǔ)有關(guān)每個(gè)文件的信息,并使 EXT 文件系統(tǒng)能夠查找屬于它的所有數(shù)據(jù)。

inode 不包含文件的名稱。通過目錄項(xiàng)訪問文件,目錄項(xiàng)本身就是文件的名稱,并包含指向 inode 的指針。該指針的值是 inode 號(hào)。文件系統(tǒng)中的每個(gè) inode 都具有唯一的 ID 號(hào),但同一臺(tái)計(jì)算機(jī)上的其它文件系統(tǒng)(甚至是相同的硬盤驅(qū)動(dòng)器)中的 inode 可以具有相同的 inode 號(hào)。這對(duì) 硬鏈接 存在影響,但是這個(gè)討論超出了本文的范圍。

inode 包含有關(guān)該文件的元數(shù)據(jù),包括其類型和權(quán)限以及其大小。 inode 還包含 15 個(gè)指針的空位,用于描述柱面組數(shù)據(jù)部分中數(shù)據(jù)塊或擴(kuò)展盤區(qū)的位置和長(zhǎng)度。12 個(gè)指針提供對(duì)數(shù)據(jù)擴(kuò)展盤區(qū)的直接訪問,應(yīng)該足以滿足大多數(shù)文件的需求。然而,對(duì)于具有明顯分段的文件,需要以間接節(jié)點(diǎn)(node)的形式提供一些額外的容量——從技術(shù)上講,這些不是真正的“inode”,所以為了方便起見我在這里使用這個(gè)術(shù)語(yǔ)“節(jié)點(diǎn)(node)”。

間接節(jié)點(diǎn)是文件系統(tǒng)中的正常數(shù)據(jù)塊,它僅用于描述數(shù)據(jù)而不用于存儲(chǔ)元數(shù)據(jù),因此可以支持超過 15 個(gè)條目。例如,4K 的塊大小可以支持 512 個(gè) 4 字節(jié)的間接節(jié)點(diǎn),允許單個(gè)文件有 12(直接)+ 512(間接)= 524 個(gè)擴(kuò)展盤區(qū)。還支持雙重和三重間接節(jié)點(diǎn),但我們大多數(shù)人不太可能遇到需要那么多擴(kuò)展盤區(qū)的文件。

數(shù)據(jù)碎片

對(duì)于許多較舊的 PC 文件系統(tǒng),如 FAT(及其所有變體)和 NTFS,碎片一直是導(dǎo)致磁盤性能下降的重大問題。 碎片整理本身就成為一個(gè)行業(yè),有各種品牌的整理軟件,其效果范圍從非常有效到僅僅是微乎其微。

Linux 的擴(kuò)展文件系統(tǒng)使用數(shù)據(jù)分配策略,有助于最小化硬盤驅(qū)動(dòng)器上的文件碎片,并在發(fā)生碎片時(shí)減少碎片的影響。 你可以使用 EXT 文件系統(tǒng)上的 fsck 命令檢查整個(gè)文件系統(tǒng)的碎片。 以下示例檢查我的主工作站的家目錄,只有 1.5% 的碎片。 確保使用 -n 參數(shù),因?yàn)樗鼤?huì)防止 fsck 對(duì)掃描的文件系統(tǒng)采取任何操作。

  1. fsck -fn /dev/mapper/vg_01-home 

我曾經(jīng)進(jìn)行過一些理論計(jì)算,以確定磁盤碎片整理是否會(huì)產(chǎn)生任何明顯的性能提升。 我做了一些假設(shè)條件,我使用的磁盤性能數(shù)據(jù)來(lái)自一個(gè)新的 300GB 的西部數(shù)字硬盤驅(qū)動(dòng)器,具有 2.0ms 的軌到軌尋道時(shí)間。 此示例中的文件數(shù)是我在計(jì)算的當(dāng)天的文件系統(tǒng)中存在的實(shí)際數(shù)。 我假設(shè)每天有相當(dāng)大量的碎片化文件(約 20%)會(huì)被用到。

全部文件 271,794
碎片率 % 5.00%
不連續(xù)數(shù) 13,590
   
% 每天用到的碎片化文件 20% (假設(shè))
額外尋道次數(shù) 2,718
平均尋道時(shí)間 10.90 ms
每天全部的額外尋道時(shí)間 29.63 sec
  0.49 min
   
軌到軌尋道時(shí)間 2.00 ms
每天全部的額外尋道時(shí)間 5.44 sec
  0.091 min

表 1: 碎片對(duì)磁盤性能的理論影響

我對(duì)每天的全部的額外尋道時(shí)間進(jìn)行了兩次計(jì)算,一次是軌到軌尋道時(shí)間,這是由于 EXT 文件分配策略而導(dǎo)致大多數(shù)文件最可能的情況,一個(gè)是平均尋道時(shí)間,我假設(shè)這是一個(gè)合理的最壞情況。

從表 1 可以看出,對(duì)絕大多數(shù)應(yīng)用程序而言,碎片化甚至對(duì)性能適中的硬盤驅(qū)動(dòng)器上的現(xiàn)代 EXT 文件系統(tǒng)的影響是微乎其微的。您可以將您的環(huán)境中的數(shù)字插入到您自己的類似電子表格中,以了解你對(duì)性能影響的期望。這種類型的計(jì)算不一定能夠代表實(shí)際的性能,但它可以提供一些對(duì)碎片化及其對(duì)系統(tǒng)的理論影響的洞察。

我的大部分分區(qū)的碎片率都在 1.5% 左右或 1.6%,我有一個(gè)分區(qū)有 3.3% 的碎片,但是這是一個(gè)大約 128GB 文件系統(tǒng),具有不到 100 個(gè)非常大的 ISO 映像文件;多年來(lái),我擴(kuò)展過該分區(qū)幾次,因?yàn)樗呀?jīng)太滿了。

這并不是說(shuō)一些應(yīng)用的環(huán)境并不需要更少的碎片的環(huán)境。 EXT 文件系統(tǒng)可以由有經(jīng)驗(yàn)和知識(shí)的管理員小心調(diào)整,管理員可以針對(duì)特定的工作負(fù)載類型調(diào)整參數(shù)。這個(gè)工作可以在文件系統(tǒng)創(chuàng)建的時(shí)候或稍后使用 tune2fs 命令時(shí)完成。每一次調(diào)整變化的結(jié)果應(yīng)進(jìn)行測(cè)試,精心的記錄和分析,以確保目標(biāo)環(huán)境的***性能。在最壞的情況下,如果性能不能提高到期望的水平,則其他文件系統(tǒng)類型可能更適合特定的工作負(fù)載。并記住,在單個(gè)主機(jī)系統(tǒng)上混用文件系統(tǒng)類型以匹配每個(gè)文件系統(tǒng)上的不同負(fù)載是常見的。

由于大多數(shù) EXT 文件系統(tǒng)的碎片數(shù)量較少,因此無(wú)需進(jìn)行碎片整理。目前,EXT 文件系統(tǒng)沒有安全的碎片整理工具。有幾個(gè)工具允許你檢查單個(gè)文件的碎片程度或文件系統(tǒng)中剩余可用空間的碎片程度。有一個(gè)工具,e4defrag,它可以對(duì)允許使用的剩余可用空間、目錄或文件系統(tǒng)進(jìn)行碎片整理。顧名思義,它只適用于 EXT4 文件系統(tǒng)中的文件,并且它還有一其它的些限制。

如果有必要在 EXT 文件系統(tǒng)上執(zhí)行完整的碎片整理,則只有一種方法能夠可靠地工作。你必須將文件系統(tǒng)中的所有要進(jìn)行碎片整理的文件移動(dòng)從而進(jìn)行碎片整理,并在確保安全復(fù)制到其他位置后將其刪除。如果可能,你可以增加文件系統(tǒng)的大小,以幫助減少將來(lái)的碎片。然后將文件復(fù)制回目標(biāo)文件系統(tǒng)。但是其實(shí)即使這樣也不能保證所有文件都被完全去碎片化。

總結(jié)

EXT 文件系統(tǒng)在一些 Linux 發(fā)行版本上作為默認(rèn)文件系統(tǒng)已經(jīng)超過二十多年了。它們用最少的維護(hù)代價(jià)提供了穩(wěn)定性、高可用性、可靠性和性能。我嘗試過一些其它的文件系統(tǒng)但最終都還是回歸到 EXT。每一個(gè)我在工作中使用到 Linux 的地方都使用到了 EXT 文件系統(tǒng),同時(shí)我發(fā)現(xiàn)了它們適用于任何主流負(fù)載。毫無(wú)疑問,EXT4 文件系統(tǒng)應(yīng)該被用于大部分的 Linux 文件系統(tǒng)上,除非我們有明顯需要使用其它文件系統(tǒng)的理由。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2012-05-21 09:48:58

Ext4

2018-09-12 15:48:35

ext4Linux文件系統(tǒng)

2012-05-08 10:56:15

Linux

2011-06-27 10:17:15

EXT4 Btrfs

2025-03-28 09:44:17

2010-12-17 09:37:13

ext4文件系統(tǒng)

2018-11-21 10:35:44

DropboxLinux同步支持

2022-09-15 08:06:02

FTL閃存存儲(chǔ)

2010-12-28 09:51:06

ext4文件系統(tǒng)

2017-11-23 09:30:01

Linux文件系統(tǒng)sudo命令

2009-08-12 17:42:24

Linux文件系統(tǒng)BTRFSext4

2010-06-01 09:55:24

ext4文件系統(tǒng)

2012-05-21 10:42:02

Ext4

2025-07-07 01:00:00

2020-01-15 09:10:13

LinuxWindowsmacOS

2011-03-07 09:11:23

2018-11-05 09:45:01

Linux文件系統(tǒng)命令

2017-02-28 20:00:17

Linux文件系統(tǒng)對(duì)比

2009-11-30 09:46:45

Ubuntu文件系統(tǒng)選擇

2012-09-20 09:32:23

Ubuntu 12.1文件系統(tǒng)Ubuntu
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品成人一区| 欧美日韩国产另类不卡| 久久国产精品一区二区三区 | 国产成人在线电影| 欧美激情一区二区三区成人| 亚洲天堂资源在线| 欧美电影h版| 亚洲女女做受ⅹxx高潮| 蜜桃在线一区二区三区精品| 国产一区二区麻豆| 一本色道88久久加勒比精品| 一区二区三区动漫| 又色又爽又黄18网站| 黄色成人免费网| 亚洲精品中文字幕乱码三区| 久久久久久久久久码影片| 97人妻精品一区二区三区| 日韩午夜一区| 久久成人18免费网站| 成年人网站免费在线观看| 24小时成人在线视频| 欧美日韩人人澡狠狠躁视频| mm131午夜| 国产精品99999| 成人免费毛片片v| 国产日韩专区在线| 夜夜爽妓女8888视频免费观看| 久久久久观看| 91麻豆精品国产无毒不卡在线观看| 手机成人在线| 视频一区 中文字幕| 国产一区二区0| 国产精品精品国产| 视频一区二区三区四区五区| 在线欧美三区| 精品自拍视频在线观看| 国产传媒免费在线观看| 久久电影院7| 国产一区二区动漫| 日本高清www| 精品精品国产毛片在线看| 日韩美女在线视频| 女王人厕视频2ⅴk| 91九色成人| 欧美日韩精品二区第二页| aaa毛片在线观看| 中文字幕在线高清| 精品国产乱码久久久久久天美| 欧美精品久久| 天堂中文在线资| av亚洲精华国产精华| 亚洲一区二区久久久久久久| 一级黄色大片免费| 奇米777欧美一区二区| 国产精品99导航| 国产成人精品亚洲| 美腿丝袜亚洲三区| 成人免费网站在线观看| 91亚洲精品国偷拍自产在线观看 | 欧美综合久久| 国产一区二区三区在线| 无码少妇一区二区| 秋霞欧美视频| 日韩最新中文字幕电影免费看| 一个人看的视频www| 日韩一区网站| 精品人在线二区三区| 制服丝袜在线第一页| 久久亚洲黄色| 国产一区二区三区在线看| 国产123在线| 99国产精品免费视频观看| 久久精品视频播放| 精品无码m3u8在线观看| 亚洲免费黄色| 国产极品精品在线观看| 一级特黄录像免费看| 国产精品乡下勾搭老头1| 3d动漫精品啪啪一区二区三区免费| 国产在线观看黄色| 日本伊人精品一区二区三区观看方式| 欧美黑人极品猛少妇色xxxxx| 亚洲AV成人无码网站天堂久久| 国产精品久久久网站| 国产视频精品一区二区三区| 精品人体无码一区二区三区| 欧美a级片网站| 欧美最顶级的aⅴ艳星| 在线视频1卡二卡三卡| 国产精品一区在线| 蜜桃av久久久亚洲精品| 在线观看免费版| 亚洲精品videosex极品| 国内外成人激情视频| 亚洲综合伊人| 亚洲精品视频二区| 久久久久久久久久久久久女过产乱| 久久亚洲精品中文字幕蜜潮电影| 亚洲精品一区二区网址| 国产在线免费看| 一本色道久久综合一区| 成人黄在线观看| 色视频精品视频在线观看| 中文字幕一区二区三区av| 福利在线一区二区| 国产精品第一国产精品| 亚洲成色999久久网站| 国产99在线 | 亚洲| 在线亚洲伦理| 亚洲jizzjizz日本少妇| 国产尤物视频在线| 五月天欧美精品| 亚洲制服在线观看| 国产一区二区观看| 久久久久久久久久久免费精品| 在线看成人av| 久久精品av麻豆的观看方式| 麻豆成人小视频| 欧美人体视频xxxxx| 欧美日韩国产免费一区二区 | av不卡在线播放| 制服诱惑一区| 九九九伊在线综合永久| 日韩激情av在线播放| 免费看一级一片| 国内外成人在线| 亚洲国产日韩综合一区| 欧美大片1688| 亚洲欧美日韩精品久久亚洲区 | 天天射成人网| 国产成人av网| 天堂视频中文在线| 亚洲一区二区三区不卡国产欧美| 日韩欧美一级在线| 精品国产美女a久久9999| 亚洲欧美国产va在线影院| 九九久久免费视频| 国产乱码精品一区二区三区av| 国产不卡一区二区在线观看| 麻豆视频在线观看免费网站| 欧美日韩激情一区二区三区| 亚洲色图 激情小说| 日韩综合小视频| 台湾成人av| 国内自拍亚洲| 日韩中文在线观看| 一区二区三区黄色片| 国产精品久久三区| 国产无遮挡猛进猛出免费软件| 国产成人福利av| 九九九热精品免费视频观看网站| 国产字幕在线观看| 国产丝袜美腿一区二区三区| 动漫av免费观看| 欧美精品一二| 国产欧美中文字幕| 麻豆电影在线播放| 日韩欧美国产精品一区| 久草免费在线观看视频| 成人美女在线视频| 大j8黑人w巨大888a片| 最新精品国偷自产在线| 国产成人中文字幕| jizz在线观看视频| 欧美亚一区二区| av最新在线观看| 粉嫩绯色av一区二区在线观看| 亚洲综合网中心| 9999在线精品视频| 欧美高清视频免费观看| 欧美特黄一级视频| 日韩欧美一区二区三区| 亚洲天堂av中文字幕| 国产美女精品人人做人人爽| 久久这里只有精品18| 日本欧美韩国国产| 国产精品网站入口| 欧美hdxxxxx| 亚洲欧美在线播放| 亚洲天堂久久久久| 亚洲影视在线播放| 久久精品无码一区| 国产在线一区观看| 看av免费毛片手机播放| 日韩精品看片| 国产精品久久久久久久久久久久午夜片| av在线播放av| 日韩一区二区在线免费观看| 国产视频91在线| 国产精品久久久久久久久久免费看 | 手机福利小视频在线播放| 欧美主播一区二区三区美女| 天天操天天操天天操天天操天天操| 亚洲影院一区| 99视频免费观看| 欧美性片在线观看| 欧美裸体xxxx极品少妇| 久久这里精品| 欧美mv和日韩mv国产网站| 波多野结衣日韩| 洋洋成人永久网站入口| 成人在线手机视频| 成人精品电影在线观看| 污污网站免费观看| 国产偷自视频区视频一区二区| 久久99国产精品| 久久亚洲精品人成综合网| 午夜精品一区二区三区在线视频| 手机看片福利在线观看| 日韩一区二区三区免费看 | 在线中文字幕电影| 亚洲欧美另类人妖| 亚洲免费成人在线| 3d动漫精品啪啪| 国产情侣免费视频| 欧美性生交xxxxx久久久| 久久精品第一页| 中文字幕一区二区三区色视频| 激情成人在线观看| 日韩精品电影在线| 国产精品秘入口18禁麻豆免会员| 亚洲欧洲av| 91av一区二区三区| 国产不卡精品| 国产免费一区二区三区在线能观看| 黄色片网站在线| 在线免费观看羞羞视频一区二区| 一区二区国产欧美| 91成人网在线| 国产免费一级视频| 欧美日韩国产综合新一区| 国产亚洲精品久久久久久无几年桃| 99视频精品在线| 古装做爰无遮挡三级聊斋艳谭| 欧美在线国产| 最新av在线免费观看| 91久久夜色精品国产按摩| 品久久久久久久久久96高清| 欧美美女在线直播| 精品国产乱码久久久久久蜜柚| 国产在线|日韩| 国产精品com| 黄色激情在线播放| 午夜精品一区二区三区在线播放 | 国产无套粉嫩白浆内谢的出处| 日韩欧美一区二区三区免费看| 99国产视频| 一区二区三区在线免费看 | 最新中文字幕一区| 精品色蜜蜜精品视频在线观看| 精品熟妇无码av免费久久| 中文字幕第一区综合| 欧美aaa级片| 国产精品青草久久| 久久爱一区二区| 亚洲女同ⅹxx女同tv| 久久久久亚洲AV| 天天综合日日夜夜精品| 在线观看国产亚洲| 色婷婷亚洲婷婷| 又污又黄的网站| 91精品国产综合久久福利软件| 国产一级免费av| 香蕉影视欧美成人| 伊人久久综合视频| 色婷婷久久99综合精品jk白丝| 久草福利资源在线观看| 五月婷婷激情综合网| 欧美一区二区三区网站| 在线精品视频免费播放| 一区二区三区精彩视频| 精品奇米国产一区二区三区| 性感美女福利视频| 色综合影院在线| 怡红院在线播放| 91精品国产91久久久久久| 欧美日韩五码| 亚洲a在线观看| 色吊丝一区二区| 一区二区三区在线观看www| 欧美午夜不卡影院在线观看完整版免费| 欧美性色黄大片人与善| 91一区二区| 激情五月婷婷六月| 日韩精品国产精品| 亚洲av综合色区无码另类小说| 久久精品国产一区二区三| 香蕉视频xxx| 26uuu另类欧美亚洲曰本| www.4hu95.com四虎| 亚洲午夜在线视频| 国产成人精品一区二区色戒| 日韩一级黄色片| 韩日在线视频| 久久久久久com| 日韩电影精品| 精品午夜一区二区| 一区二区不卡| 青青青在线播放| 国产精品亚洲第一区在线暖暖韩国| 邪恶网站在线观看| 成人激情午夜影院| 91激情视频在线观看| 一区二区三区在线免费视频| www.av88| 亚洲国产三级网| 秋霞午夜在线观看| 欧洲成人免费视频| 超碰97久久国产精品牛牛| 一区二区三区四区不卡| 国产美女一区| 少妇欧美激情一区二区三区| 国产精品拍天天在线| 丁香六月婷婷综合| 日韩欧美一级二级三级久久久| 国产国语亲子伦亲子| 中文字幕亚洲欧美在线| 高潮在线视频| 99视频在线播放| 亚洲国产精品久久久天堂| 日本熟妇人妻中出| 91网站在线播放| 精品无码一区二区三区电影桃花| 午夜亚洲国产au精品一区二区 | 91成人免费在线视频| 黄色av小说在线观看| 欧美成人精品一区| 四虎国产精品永久在线国在线| 92看片淫黄大片看国产片| 日本a口亚洲| 狠狠躁狠狠躁视频专区| 久久久亚洲综合| 久久国产黄色片| 亚洲免费影视第一页| 理论片午夜视频在线观看| 国产精品美女诱惑| 狠狠入ady亚洲精品| 又色又爽又黄18网站| 悠悠色在线精品| www.综合色| 欧美精品久久久久久久久| 人人爱人人干婷婷丁香亚洲| 精品无码av无码免费专区| 国产精品一区二区91| 久久av高潮av无码av喷吹| 精品国产凹凸成av人网站| 成年女人在线看片| 久久99精品久久久久久久青青日本| 日韩影院二区| 欧美大片久久久| 亚洲精品国产无套在线观| www.看毛片| 高清在线视频日韩欧美| 久久久久影视| 日本xxxxxxx免费视频| 久久先锋影音av鲁色资源网| 国产精品成人久久久| 日韩中文字幕第一页| 99国内精品久久久久| 国产精品啪啪啪视频| 成人免费观看视频| 91美女免费看| 国产亚洲欧洲在线| 日韩福利影视 | 影音先锋日韩精品| av电影中文字幕| 欧美日韩午夜剧场| 岛国在线大片| 91久久国产自产拍夜夜嗨| 欧美视频官网| 泷泽萝拉在线播放| 欧美日韩成人综合| 成人免费一区二区三区牛牛| 蜜桃成人在线| 蜜桃91丨九色丨蝌蚪91桃色| 欧美成人精品欧美一| 亚洲欧美资源在线| 91精品亚洲一区在线观看| 国产二级片在线观看| 中文乱码免费一区二区| 国产成人精品免费看视频| 欧美中文字幕视频| 欧美一区不卡| 人妻大战黑人白浆狂泄| 91.麻豆视频| 午夜裸体女人视频网站在线观看| 国产综合欧美在线看| 男人操女人的视频在线观看欧美| 北岛玲一区二区| 精品久久香蕉国产线看观看亚洲| 亚洲爱情岛论坛永久| 日本成人免费在线| 伊人青青综合网| 天天躁日日躁aaaxxⅹ| 日韩无一区二区| 激情开心成人网| 久久综合久久网| 亚洲欧美综合另类在线卡通| 天天爽夜夜爽夜夜爽| 91在线高清免费观看|