Linux 文件系統(tǒng)介紹
從本小節(jié)我們將要開(kāi)始 Linux 中的文件系統(tǒng),在 Linux 系統(tǒng)中,文件系統(tǒng)都是基于硬盤創(chuàng)建的,Linux 系統(tǒng)支持多種不同類型的文件系統(tǒng)管理文件和目錄,本小節(jié)介紹幾種基本常見(jiàn)的文件系統(tǒng)。
Linux 文件系統(tǒng)中的文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)而且還有文件系統(tǒng)的結(jié)構(gòu),所有 Linux 用戶和程序看到的文件、目錄、軟連接及文件保護(hù)信息等都存儲(chǔ)在其中。在 Linux 中普通文件和目錄文件保存在稱為塊物理設(shè)備的磁盤或者磁帶上,大多數(shù) Linux 發(fā)行版在安裝時(shí)會(huì)提供默認(rèn)的文件系統(tǒng)。
1. df 命令顯示文件系統(tǒng)類型
使用 df -T -h
命令可以查看當(dāng)前文件系統(tǒng)的類型,命令如下:
df -T -h
執(zhí)行結(jié)果如下圖:
執(zhí)行結(jié)果詳解:
- 第一列
文件系統(tǒng)
表示的含義是 設(shè)備的設(shè)備文件位置; - 第二列
類型
表示的含義是 文件系統(tǒng)類型(圖中類型包含 devtmpfs、tmpfs、xfs、ext4、iso9660); - 第三列
容量
表示的含義是 能容納的空間大小; - 第四列
已用
表示的含義是 已經(jīng)用了多少空間大小; - 第五列
可用
表示的含義是 還有多少空間大小可用; - 第六列
已用%
表示的含義是 已經(jīng)占用的空間比例; - 第七列
掛載點(diǎn)
表示的含義是 設(shè)備掛載了那個(gè)掛載點(diǎn)上。
2. ext 文件系統(tǒng)介紹
Linux 操作系統(tǒng)最開(kāi)始引入的文件系統(tǒng)是擴(kuò)展文件系統(tǒng)
,記作 ext
,它可以使用虛擬的目錄操作硬件設(shè)備。ext
文件系統(tǒng)采用索引節(jié)點(diǎn)存放虛擬目錄中存儲(chǔ)的文件信息,索引節(jié)點(diǎn)系統(tǒng)在每個(gè)物理設(shè)備中創(chuàng)建一個(gè)單獨(dú)的表(稱為索引節(jié)點(diǎn)表)來(lái)存儲(chǔ)這些文件信息,存儲(chǔ)在虛擬目錄中的每一個(gè)文件在索引節(jié)點(diǎn)表有一個(gè)條目。ext
文件系統(tǒng)中的 extended
部分來(lái)自其跟蹤的每個(gè)文件的額外數(shù)據(jù),這些數(shù)據(jù)包括:
- 文件大?。?/li>
- 文件的屬主;
- 文件的訪問(wèn)權(quán)限;
- 指向存有文件數(shù)據(jù)的每個(gè)硬盤塊的指針;
- 文件名;
- 文件所在的屬組。
Linux 通過(guò)唯一的數(shù)值(稱作索引節(jié)點(diǎn)號(hào))來(lái)引用索引節(jié)點(diǎn)表中的每個(gè)索引節(jié)點(diǎn),這個(gè)值是創(chuàng)建文件時(shí)由文件系統(tǒng)分配的。文件系統(tǒng)通過(guò)索引節(jié)點(diǎn)號(hào)而不是文件全名及路徑來(lái)標(biāo)識(shí)文件。
3. ext2 文件系統(tǒng)介紹
使用最開(kāi)始的 ext
文件系統(tǒng)有很多的限制(如文件最大不能超過(guò)2GB),所以在 Linux 系統(tǒng)出現(xiàn)后,很快就有了 第二代拓展文件系統(tǒng)
,記作 ext2
。ext2
文件系統(tǒng)是 ext
文件系統(tǒng)基本功能的一個(gè)擴(kuò)展,而且保持了 ext
文件系統(tǒng)一樣的結(jié)構(gòu),ext2
文件系統(tǒng)擴(kuò)展了索引節(jié)點(diǎn)表的格式來(lái)保存系統(tǒng)上每個(gè)文件的更多信息。
ext2
的索引節(jié)點(diǎn)表為文件添加了創(chuàng)建時(shí)間、修改時(shí)間和最后一次訪問(wèn)的時(shí)間幫助系統(tǒng)來(lái)追蹤文件的訪問(wèn)情況。ext2
文件系統(tǒng)還將允許的最大文件大小增加到了 32 TB(Linux 2.6 之前是 2TB),以容納數(shù)據(jù)庫(kù)服務(wù)器中常見(jiàn)的大文件。除了額外擴(kuò)展的索引節(jié)點(diǎn)外,ext2
文件系統(tǒng)還改變了文件在數(shù)據(jù)塊中存儲(chǔ)的方式。ext
文件系統(tǒng)在讀取文件時(shí)不需要為了數(shù)據(jù)塊查找整個(gè)物理設(shè)備。
3.1 ext2 文件系統(tǒng)特點(diǎn)
-
當(dāng)創(chuàng)建
ext2
文件系統(tǒng)時(shí),系統(tǒng)管理員可以根據(jù)預(yù)期的文件平均長(zhǎng)度來(lái)選擇最佳的塊大?。◤?024B~4096B)。例如,當(dāng)文件的平均長(zhǎng)度小于幾千字節(jié)時(shí),塊的大小為 1024B 是最佳的,因?yàn)檫@會(huì)產(chǎn)生較少的內(nèi)部碎片——也就是文件長(zhǎng)度與存放塊的磁盤分區(qū)有較少的不匹配。另一方面,大的塊對(duì)于 大于幾千字節(jié)的文件通常比較合合適,因?yàn)檫@樣的磁盤傳送較少,因而減輕了系統(tǒng)的開(kāi)銷。 -
當(dāng)創(chuàng)建
ext2
文件系統(tǒng)時(shí),系統(tǒng)管理員可以根據(jù)在給定大小的分區(qū)上預(yù)計(jì)存放的文件數(shù)來(lái)選擇給該分區(qū)分配多少個(gè)索引節(jié)點(diǎn)。這可以有效地利用磁盤的空間。 -
文件系統(tǒng)把磁盤塊分為組。每組包含存放在相鄰磁道上的數(shù)據(jù)塊和索引節(jié)點(diǎn)。正是這種結(jié)構(gòu),使得可以用較少的磁盤平均尋道時(shí)間對(duì)存放在一個(gè)單獨(dú)塊組中的文件并行訪問(wèn)。
-
在磁盤數(shù)據(jù)塊被實(shí)際使用之前,文件系統(tǒng)就把這些塊預(yù)分配給普通文件。因此當(dāng)文件的大小增加時(shí),因?yàn)槲锢砩舷噜彽膸讉€(gè)塊已被保留,這就減少了文件的碎片。
-
支持快速符號(hào)鏈接。如果符號(hào)鏈接表示一個(gè)短路徑名(小于或等于 60 個(gè)字符),就把它存放在索引節(jié)點(diǎn)中而不用通過(guò)由一個(gè)數(shù)據(jù)塊進(jìn)行轉(zhuǎn)換。
3.2 ext2 文件系統(tǒng)健壯性特點(diǎn)
文件更新策略的謹(jǐn)慎實(shí)現(xiàn)將系統(tǒng)崩潰的影響減到最少。我們只舉一個(gè)例子來(lái)體現(xiàn)這個(gè)優(yōu)點(diǎn):例如,當(dāng)給文件創(chuàng)建一個(gè)硬鏈接時(shí),首先增加磁盤索引節(jié)點(diǎn)中 的硬鏈接計(jì)數(shù)器,然后把這個(gè)新的名字加到合適的目錄中。在這種方式下,如果在更新索引節(jié)點(diǎn)后而改變這個(gè)目錄之前出現(xiàn)一個(gè)硬件故障,這樣即使索引節(jié)點(diǎn)的計(jì)數(shù) 器產(chǎn)生錯(cuò)誤,但目錄是一致的。因此,盡管刪除文件時(shí)無(wú)法自動(dòng)收回文件的數(shù)據(jù)塊,但并不導(dǎo)致災(zāi)難性的后果。如果這種處理的順序相反更新索引節(jié)點(diǎn)前改變目錄,同樣的硬件故障將會(huì)導(dǎo)致危險(xiǎn)的不一致,刪除原始的硬鏈接就會(huì)從磁盤刪除它的數(shù)據(jù)塊,但新的目錄項(xiàng)將指向一個(gè)不存在的索引節(jié)點(diǎn)。如果那個(gè)索引節(jié)點(diǎn)號(hào)以 后又被另外的文件所使用,那么向這個(gè)舊目錄的寫操作將毀壞這個(gè)新的文件。
在啟動(dòng)時(shí)支持對(duì)文件系統(tǒng)的狀態(tài)進(jìn)行自動(dòng)的一致性檢查。這種檢查是由外部程序 e2fsck
完成的,這個(gè)外部程序不僅可以在系統(tǒng)崩潰之后被激活,也 可以在一個(gè)預(yù)定義的文件系統(tǒng)安裝數(shù)每次安裝操作之后對(duì)計(jì)數(shù)器加 1 之后被激活,或者在自從最近檢查以來(lái)所花的預(yù)定義時(shí)間之后被激活。
支持不可變 immutable
的文件不能修改、刪除和更名和僅追加 append-only
的文件只能把數(shù)據(jù)追加在文件尾。
既與 Unix System V Release 4(SVR4)
相兼容,也與新文件的用戶組 ID 的 BSD 語(yǔ)義相兼容。在 SVR4 中,新文件采用創(chuàng)建它的進(jìn)程的用戶組 ID;而在 BSD 中,新文件繼承包含它 的目錄的用戶組 ID。ext2
包含一個(gè)安裝選項(xiàng),由你指定采用哪種語(yǔ)義。
4. 小結(jié)
本小節(jié)介紹了 Linux 系統(tǒng)中較早期的文件系統(tǒng) etx
和 ext2
,使用 df -T -h
可以查看磁盤對(duì)應(yīng)的文件系統(tǒng)類型,CentOs 8
默認(rèn)的文件系統(tǒng)是 xfs
,熟悉了 ext
和 ext2
文件系統(tǒng)之后,有助于后面熟悉和學(xué)習(xí)其他文件系統(tǒng)。