Linux文件系統(tǒng)">8.Linux文件系統(tǒng)
820
2022-05-28
硬盤(pán)是用來(lái)存儲(chǔ)數(shù)據(jù)的,可以將其想象成柜子,只不過(guò)柜子是用來(lái)存儲(chǔ)衣物的。新買(mǎi)來(lái)的硬盤(pán),通常要對(duì)其進(jìn)行分區(qū)并格式化,分區(qū)就如同把一個(gè)大柜按照要求分割成幾個(gè)小柜子(組合衣柜);格式化就好比在每個(gè)小柜子中打入隔斷,決定每個(gè)隔斷的大小和位置,然后在柜門(mén)上貼上標(biāo)簽,標(biāo)簽中寫(xiě)清楚每件衣服保存的隔斷的位置和這件衣服的一些特性(比如衣服是誰(shuí)的,衣服的顏色、大小等)。
很多初學(xué)者認(rèn)為,對(duì)硬盤(pán)進(jìn)行格式化,只是清除了硬盤(pán)中的數(shù)據(jù),其實(shí)不然,格式化過(guò)程中還向硬盤(pán)中寫(xiě)入了文件系統(tǒng)。因?yàn)椴煌牟僮飨到y(tǒng),管理系統(tǒng)中文件的方式也不盡相同(給文件設(shè)定的屬性和權(quán)限也不完全一樣),因此,為了使硬盤(pán)有效存放當(dāng)前系統(tǒng)中的文件數(shù)據(jù),就需要將硬盤(pán)進(jìn)行格式化,令其使用和操作系統(tǒng)一樣(或接近)的文件系統(tǒng)格式。
各操作系統(tǒng)使用的文件系統(tǒng)并不相同,例如,Windows 98 以前的微軟操作系統(tǒng)使用 FAT(FAT16)文件系統(tǒng),Windows 2000 以后的版本使用 NTFS 文件系統(tǒng),而 Linux 的正統(tǒng)文件系統(tǒng)是 Ext2。
既然格式化的真實(shí)目的是為了寫(xiě)入文件系統(tǒng),那么,Linux 中的文件系統(tǒng)到底是什么,又是如何運(yùn)作的呢?
在 CentOS 6.3 系統(tǒng)中,默認(rèn)的文件系統(tǒng)是 Ext4,它是 Ext3(Ext2) 文件系統(tǒng)的升級(jí)版,在性能、伸縮性和可靠性方面進(jìn)行了大量改進(jìn),變化可以說(shuō)是翻天覆地的,比如:
向下兼容 Ext3;
最大 1EB 文件系統(tǒng)和 16TB 文件;
無(wú)限數(shù)量子目錄;
Extents 連續(xù)數(shù)據(jù)塊概念;
多塊分配、延遲分配、持久預(yù)分配;
快速 FSCK、日志校驗(yàn)、無(wú)日志模式、在線碎片整理、inode 增強(qiáng)、默認(rèn)啟用 barrier 等;
不同的文件系統(tǒng),其運(yùn)作模式和操作系統(tǒng)的文件數(shù)據(jù)有關(guān)。拿 Linux 操作系統(tǒng)中的文件為例,文件數(shù)據(jù)不僅包括文件中的內(nèi)容,還包含非常多的文件屬性,例如文件的 rwx 權(quán)限以及文件所有者、所屬組、創(chuàng)建時(shí)間等。
通常情況下,文件系統(tǒng)會(huì)將文件的實(shí)際內(nèi)容和屬性分開(kāi)存放:
文件的屬性保存在 inode 中(i 節(jié)點(diǎn))中,每個(gè) inode 都有自己的編號(hào)。每個(gè)文件各占用一個(gè) inode。不僅如此,inode 中還記錄著文件數(shù)據(jù)所在 block 塊的編號(hào);
文件的實(shí)際內(nèi)容保存在 block 中(數(shù)據(jù)塊),類似衣柜的隔斷,用來(lái)真正保存衣物。每個(gè) block 都有屬于自己的編號(hào)。當(dāng)文件太大時(shí),可能會(huì)占用多個(gè) block 塊。
另外,還有一個(gè) super block(超級(jí)塊)用于記錄整個(gè)文件系統(tǒng)的整體信息,包括 inode 和 block 的總量、已經(jīng)使用量和剩余量,以及文件系統(tǒng)的格式和相關(guān)信息等。
由此我們可以推斷出,只要能找到文件 inode 所在的位置,自然就能知道這個(gè)文件存放數(shù)據(jù)的 block 號(hào),從而找到文件的實(shí)際數(shù)據(jù)。整個(gè)過(guò)程如圖 1 所示。
圖 1 中,文件系統(tǒng)先格式化出 inode 和 block 塊,假設(shè)某文件的權(quán)限和屬性信息存放到 inode 4 號(hào)位置,這個(gè) inode 記錄了實(shí)際存儲(chǔ)文件數(shù)據(jù)的 block 號(hào)有 4 個(gè),分別為 2、7、13、15,由此,操作系統(tǒng)就能快速地找到文件數(shù)據(jù)的存儲(chǔ)位置。
這種管理文件的系統(tǒng)稱為索引式文件系統(tǒng),Linux 文件系統(tǒng)(Ext 系列)就屬于索引式文件系統(tǒng)。
注意,inode 節(jié)點(diǎn)并不存儲(chǔ)文件的文件名,因?yàn)槲募俏募谀夸浀臄?shù)據(jù),所以會(huì)保存在上一級(jí)目錄的 block 塊中。前面章節(jié)在講權(quán)限命令的時(shí)候說(shuō)過(guò),要對(duì)文件的上一級(jí)目錄擁有 w 權(quán)限,才能刪除目錄中的文件,就是因?yàn)槲募潜4嬖谀夸浀?block 中的。
Linux支持的常見(jiàn)文件系統(tǒng)
Linux 系統(tǒng)能夠支持的文件系統(tǒng)非常多,除 Linux 默認(rèn)文件系統(tǒng) Ext2、Ext3 和 Ext4 之外,還能支持 fat16、fat32、NTFS(需要重新編譯內(nèi)核)等 Windows 文件系統(tǒng)。也就是說(shuō),Linux 可以通過(guò)掛載的方式使用 Windows 文件系統(tǒng)中的數(shù)據(jù)。Linux 所能夠支持的文件系統(tǒng)在 “/usr/src/kemels/當(dāng)前系統(tǒng)版本/fs” 目錄中(需要在安裝時(shí)選擇),該目錄中的每個(gè)子目錄都是一個(gè)可以識(shí)別的文件系統(tǒng)。我們介紹較為常見(jiàn)的 Linux 支持的文件系統(tǒng),如表 1 所示。
本小節(jié)的內(nèi)容基于底層,不是很好理解。如果大家實(shí)在看不明白,也沒(méi)有關(guān)系,這一小節(jié)的內(nèi)容并不影響對(duì) Linux 的操作和使用,也不影響我們后面的學(xué)習(xí)。
Linux Windows
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。