免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
linux innode圖解2

http://www.opsers.org/linux-home/base/the-knowledge-that-one-day-learn-linux-file-system.html

文件系統(tǒng)是操作系統(tǒng)最為重要的一部分,它定義了磁盤上儲存文件的方法和數(shù)據(jù)結(jié)構(gòu)。文件系統(tǒng)是操作系統(tǒng)組織、存取和保存信息的重要手段,每種操作系統(tǒng)都有自己的文件系統(tǒng),如Windows所用的文件系統(tǒng)主要有FAT16、FAT32和NTFS,Linux所用的文件系統(tǒng)主要有ext2、ext3、Ext4和ReiserFS等。

我們知道,一塊磁盤,要先分區(qū),然后再格式化,否則不能使用,而這個格式化的過程,就是文件系統(tǒng)創(chuàng)建的過程,也可以這要理解,磁盤上的一個分區(qū),就是一個文件系統(tǒng)。這個就像我們在使用windows系統(tǒng)的時候,把磁盤分區(qū)可以格式化成FAT32,也可以格式成NTFS,這個完全自己來掌握,但所格式化的文件系統(tǒng)必需是你使用的系統(tǒng)所能認(rèn)出來的。這就是為什么NTFS的文件系統(tǒng),不能直接被Linux系統(tǒng)所認(rèn)識。同樣,windows也不能認(rèn)識EXT3/Ext4一樣的道理。
關(guān)于文件系統(tǒng)的定義,沒有一個標(biāo)準(zhǔn)的答案,如果有更高興趣來研究文件系統(tǒng)的朋友,可能找相關(guān)的資料來查閱。本文只是帶大家初步來了解認(rèn)識文件系統(tǒng)。

 

了解一些和文件系統(tǒng)相關(guān)的關(guān)鍵詞

存儲介質(zhì):硬盤、光盤、軟盤、Flash盤、磁帶、網(wǎng)絡(luò)存儲設(shè)備等。
磁盤的分區(qū):這是針對大容量的存儲設(shè)備來說的,主要是指硬盤;對于大硬盤,我們要合理規(guī)劃分區(qū),所以要談到硬盤的分區(qū)。

文件系統(tǒng)的創(chuàng)建:這個過程是存儲設(shè)備建立文件系統(tǒng)的過程,一般也被稱為格式化或初始化,通過一些初始化工具來進(jìn)行。

掛載(mount):文件系統(tǒng)只有掛載才能使用,Linux的操作系統(tǒng)是通過mount進(jìn)行的,掛載文件系統(tǒng)時要有掛載點(diǎn),比如我們在安裝Linux的過程中,有時會提示我們分區(qū),然后建立文件系統(tǒng),接著是問你的掛載點(diǎn)是什么。我們在Linux系統(tǒng)的使用過程中,也會掛載其它的硬盤分區(qū),也要選中掛載點(diǎn),掛載點(diǎn)通常是一個空置的目錄,最好是我們自建的空置目錄;
文件系統(tǒng)可視的幾何結(jié)構(gòu):文件系統(tǒng)的是用來組織和排列文件存取的,所以她是可見的,在Linux中,我們可以通過ls等工具來查看其結(jié)構(gòu),在Linux系統(tǒng)中,我們見到的都是樹形結(jié)構(gòu);比如操作系統(tǒng)安裝在一個文件系統(tǒng)中,他表現(xiàn)為由/起始的樹形結(jié)構(gòu)。

Linux系統(tǒng)上常見文件系統(tǒng)格式介紹

EXT1:第一個受Linux支持的文件系統(tǒng)是Minix文件系統(tǒng)。這個文件系統(tǒng)有嚴(yán)重的性能問題,因此出現(xiàn)了另一個針對Linux的文件系統(tǒng),即擴(kuò)展文件系統(tǒng)。第1個擴(kuò)展文件系統(tǒng)(ext1)由 Remy Card設(shè)計(jì),并于 1992 年 4 月引入到 Linux 中。ext1文件系統(tǒng)是第一個使用虛擬文件系統(tǒng)(VFS)交換的文件系統(tǒng)。虛擬文件系統(tǒng)交換是在 0.96c 內(nèi)核中實(shí)現(xiàn)的,支持的最大文件系統(tǒng)為2GB。

EXT2:第 2 個擴(kuò)展文件系統(tǒng)(ext2)也是由 Remy Card 實(shí)現(xiàn)的,并于 1993 年 1 月引入到 Linux 中。它借鑒了當(dāng)時文件系統(tǒng)(比如 Berkeley Fast File System [FFS])的先進(jìn)想法。ext2 支持的最大文件系統(tǒng)為 2TB,但是 2.6 內(nèi)核將該文件系統(tǒng)支持的最大容量提升到 32TB。

EXT3:第 3 個擴(kuò)展文件系統(tǒng)(ext3)是 Linux 文件系統(tǒng)的重大改進(jìn),盡管它在性能方面遜色于某些競爭對手。ext3 文件系統(tǒng)引入了日志 概念,以在系統(tǒng)突然停止時提高文件系統(tǒng)的可靠性。雖然某些文件系統(tǒng)的性能更好(比如 Silicon Graphics 的 XFS 和 IBM? Journaled File System [JFS]),但 ext3 支持從使用 ext2 的系統(tǒng)進(jìn)行就地(in-place)升級。ext3 由 Stephen Tweedie 實(shí)現(xiàn),并于 2001 年 11 月引入。

Ext4:2.6.28內(nèi)核是首個穩(wěn)定的 Ext4 文件系統(tǒng)。在性能、伸縮性和可靠性方面進(jìn)行了大量改進(jìn)。最值得一提的是,ext4 支持 1 EB 的文件系統(tǒng)。ext4 是由 Theodore Tso(ext3 的維護(hù)者)領(lǐng)導(dǎo)的開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)的,并引入到 2.6.19 內(nèi)核中。目前,它在 2.6.28 內(nèi)核中已經(jīng)很穩(wěn)定(到 2008 年 12 月為止)。
Ext4 從競爭對手那里借鑒了許多有用的概念。例如,在 JFS 中已經(jīng)實(shí)現(xiàn)了使用區(qū)段(extent)來管理塊。另一個與塊管理相關(guān)的特性(延遲分配)已經(jīng)在 XFS 和 Sun Microsystems 的 ZFS 中實(shí)現(xiàn)。
在Ext4 文件系統(tǒng)中,您可以發(fā)現(xiàn)各種改進(jìn)和創(chuàng)新。這些改進(jìn)包括新特性(新功能)、伸縮性(打破當(dāng)前文件系統(tǒng)的限制)和可靠性(應(yīng)對故障),當(dāng)然也包括性能的改善。

swap: 它是Linux中一種專門用于交換分區(qū)的swap文件系統(tǒng)。Linux是使用這一整個分區(qū)作為交換空間。一般這個swap格式的交換分區(qū)是主內(nèi)存的2倍。在內(nèi)存不夠時,Linux會將部分?jǐn)?shù)據(jù)寫到交換分區(qū)上。

文件系統(tǒng)工作原理

文件系統(tǒng)的工作與操作系統(tǒng)的文件數(shù)據(jù)有關(guān)?,F(xiàn)在的操作系統(tǒng)的文件數(shù)據(jù)除了文件實(shí)際內(nèi)容外,通常含有非常多的屬性,例如文件權(quán)限(rwx)與文件屬性(所有者、用戶組、時間參數(shù)等)。文件系統(tǒng)通常會將這兩部份的數(shù)據(jù)分別存放在不同的區(qū)塊,權(quán)限與屬性放到inode中,數(shù)據(jù)則放到block區(qū)塊中。另外,還有一個超級區(qū)塊(super block)會記錄整個文件系統(tǒng)的整體信息,包括 inode與block的總量、使用量、剩余量等等等。

每個 inode 與 block 都有編號,至于這三個數(shù)據(jù)的意義可以簡略說明如下:
superblock:記錄此 filesystem 的整體信息,包括inode/block的總量、使用量、剩余量, 以及文件系統(tǒng)的格式與相關(guān)信息等;
inode:記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數(shù)據(jù)所在的 block 號碼;
block:實(shí)際記錄文件的內(nèi)容,若文件太大時,會占用多個 block 。

由于每個 inode 與 block 都有編號,而每個文件都會占用一個 inode ,inode 內(nèi)則有文件數(shù)據(jù)放置的 block 號碼。 因此,我們可以知道的是,如果能夠找到文件的 inode 的話,那么自然就會知道這個文件所放置數(shù)據(jù)的 block 號碼, 當(dāng)然也就能夠讀出該文件的實(shí)際數(shù)據(jù)了。這是個比較有效率的作法,因?yàn)槿绱艘粊砦覀兊拇疟P就能夠在短時間內(nèi)讀取出全部的數(shù)據(jù), 讀寫的效能比較好。

我們將 inode 與 block 區(qū)塊用圖解來說明一下,如下圖所示,文件系統(tǒng)先格式化出 inode 與 block 的區(qū)塊,假設(shè)某一個檔案的屬性與權(quán)限數(shù)據(jù)是放置到 inode 4 號(下圖較小方格內(nèi)),而這個 inode 記錄了檔案數(shù)據(jù)的實(shí)際放置點(diǎn)為 2, 7, 13, 15 這四個 block 號碼,此時我們的操作系統(tǒng)就能夠據(jù)此來排列磁盤的閱讀順序,可以一口氣將四個 block 內(nèi)容讀出來! 那么數(shù)據(jù)的讀取就如同下圖中的箭頭所指定的模樣了。

圖inode/block 資料存取示意圖

這種數(shù)據(jù)存取的方法我們稱為索引式文件系統(tǒng)(indexed allocation)。下面我們來看一下windows系統(tǒng)中的FAT,這種格式的文件系統(tǒng)并沒有 inode 存在,所以 FAT 沒有辦法將這個文件的所有 block 在一開始就讀取出來。每個 block 號碼都記錄在前一個 block 當(dāng)中, 他的讀取方式有點(diǎn)像底下這樣:

圖FAT文件系統(tǒng)資料存取示意圖

上圖中我們假設(shè)文件的數(shù)據(jù)依序?qū)懭?->7->4->15號這四個 block 號碼中, 但這個文件系統(tǒng)沒有辦法一口氣就知道四個 block 的號碼,他得要一個一個的將 block 讀出后,才會知道下一個 block 在何處。 如果同一個文件數(shù)據(jù)寫入的 block 分散的太厲害時,則我們的磁盤讀取頭將無法在磁盤轉(zhuǎn)一圈就讀到所有的數(shù)據(jù), 因此磁盤就會多轉(zhuǎn)好幾圈才能完整的讀取到這個文件的內(nèi)容。

這就是為什么在windows系統(tǒng)中常常需要碎片整理, 需要碎片整理的原因就是文件寫入的 block 太過于離散了,此時文件讀取的效能將會變的很差。這個時候可以通過碎片整理將同一個文件所屬的 blocks 匯整在一起,這樣數(shù)據(jù)的讀取會比較容易。

FAT的文件系統(tǒng)需要不定期進(jìn)行碎片整理,那么 Ext 是否需要磁盤整理呢?
由于 Ext 是索引式文件系統(tǒng),基本上不需要進(jìn)行碎片整理。但是如果文件系統(tǒng)使用太久, 常常刪除/編輯/新增文件時,那么還是可能會造成文件數(shù)據(jù)太過于離散的問題,此時或許會需要進(jìn)行重整一下的。 不過,似乎沒有多少人來進(jìn)行Linux磁盤的碎片??!

如上所說的,inode 的內(nèi)容在記錄文件的權(quán)限與相關(guān)屬性,至于 block 區(qū)塊則是在記錄文件的實(shí)際內(nèi)容。 而且文件系統(tǒng)一開始就將 inode 與 block 規(guī)劃好了,除非重新格式化(或者利用 resize2fs 等指令變更文件系統(tǒng)大小),否則 inode 與 block 固定后就不再變動。但是如果仔細(xì)考慮一下,如果我的文檔系統(tǒng)高達(dá)數(shù)百GB時, 那么將所有的 inode 與 block 通通放置在一起將是很不智的決定,因?yàn)?inode 與 block 的數(shù)量太龐大,不容易管理。 因此 Ext2 文件系統(tǒng)在格式化的時候基本上是區(qū)分為多個區(qū)塊群組 (block group) 的,每個區(qū)塊群組都有獨(dú)立的 inode/block/superblock 系統(tǒng)。

Ext2文件系統(tǒng)結(jié)構(gòu)詳解

整體來說,Ext2格式化后有點(diǎn)像底下這樣:

ext2文件系統(tǒng)示意圖

在整體的規(guī)劃當(dāng)中,文件系統(tǒng)最前面有一個啟動扇區(qū)(boot sector),這個啟動扇區(qū)可以安裝開機(jī)管理程序, 這是個非常重要的設(shè)計(jì),這樣我們就能夠?qū)⒉煌拈_機(jī)管理程序安裝到個別的文件系統(tǒng)最前端,而不用覆蓋整顆硬盤唯一的 MBR, 這樣也才能夠制作出多重引導(dǎo)的環(huán)境??!至于每一個區(qū)塊群組(block group)的六個主要內(nèi)容說明如下:

data block (資料區(qū)塊)
data block 是用來放置文件內(nèi)容數(shù)據(jù)地方,在 Ext2 文件系統(tǒng)中所支持的 block 大小有 1K, 2K 及 4K 三種而已。在格式化時 block 的大小就固定了,且每個 block 都有編號,以方便 inode 的記錄啦。 不過要注意的是,由于 block 大小的差異,會導(dǎo)致該文件系統(tǒng)能夠支持的最大磁盤容量與最大單一文件容量并不相同。 因?yàn)?block 大小而產(chǎn)生的 Ext2 文件系統(tǒng)限制如下圖:

你需要注意的是,雖然 Ext2 已經(jīng)能夠支持大于 2GB 以上的單一文件容量,不過某些應(yīng)用程序依然使用舊的限制, 也就是說,某些程序只能夠捉到小于 2GB 以下的文件而已,這就跟文件系統(tǒng)無關(guān)了!

注:
原則上,block 的大小與數(shù)量在格式化完就不能夠再改變了(除非重新格式化);
每個 block 內(nèi)最多只能夠放置一個檔案的數(shù)據(jù);
如果檔案大于 block 的大小,則一個檔案會占用多個 block 數(shù)量;
若檔案小于 block ,則該 block 的剩余容量就不能夠再被使用了(磁盤空間會浪費(fèi));
若檔案很大的話,就會占用更多的block,將會降低文件系統(tǒng)的讀寫效能。

inode table (inode 表格)
再來討論一下 inode 這個吧!如前所述 inode 的內(nèi)容在記錄檔案的屬性以及該檔案實(shí)際數(shù)據(jù)是放置在哪幾號 block 內(nèi)! 基本上,inode 記錄的文件數(shù)據(jù)至少有底下這些:
該文件的存取模式(read/write/excute);
該文件的擁有者與群組(owner/group);
該文件的容量;
該文件建立或狀態(tài)改變的時間(ctime);
最近一次的讀取時間(atime);
最近修改的時間(mtime);
定義文件特性的旗標(biāo)(flag),如 SetUID...;
該文件真正內(nèi)容的指向 (pointer);
inode 的數(shù)量與大小也是在格式化時就已經(jīng)固定了,除此之外 inode 還有以下特色
每個 inode 大小均固定為 128 bytes;
每個文件都僅會占用一個 inode ;
文件系統(tǒng)能夠建立的文件數(shù)量與 inode 的數(shù)量有關(guān);
系統(tǒng)讀取文件時需要先找到 inode,并分析 inode 所記錄的權(quán)限與用戶是否符合,若符合才能夠開始實(shí)際讀取 block 的內(nèi)容。

Superblock (超級塊)
Superblock 是記錄整個 filesystem 相關(guān)信息的地方, 沒有 Superblock ,就沒有這個 filesystem 了。他記錄的信息主要有:
block 與 inode 的總量;
未使用與已使用的 inode / block 數(shù)量;
block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128 bytes);
filesystem 的掛載時間、最近一次寫入數(shù)據(jù)的時間、最近一次檢驗(yàn)磁盤 (fsck) 的時間等文件系統(tǒng)的相關(guān)信息;
一個 valid bit 數(shù)值,若此文件系統(tǒng)已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。
Superblock 是非常重要的,因?yàn)槲覀冞@個文件系統(tǒng)的基本信息都寫在這里。一般來說, superblock 的大小為 1024bytes。

Filesystem Description (文件系統(tǒng)描述說明)
這個區(qū)段可以描述每個 block group 的開始與結(jié)束的 block 號碼,以及說明每個區(qū)段 (superblock, bitmap, inodemap, data block) 分別介于哪一個 block 號碼之間。

block bitmap (區(qū)塊對照表)
如果你想要新增文件時總會用到 block ,那要使用哪個 block 來記錄呢?當(dāng)然是選擇空的block 來記錄新文件的數(shù)據(jù)。 那你怎么知道哪個 block 是空的?這就得要透過 block bitmap 的輔助了。從 block bitmap 當(dāng)中可以知道哪些 block 是空的,因此我們的系統(tǒng)就能夠很快速的找到可使用的空間來處文件。 同樣的,如果你刪除某些文件時,那么那些檔案原本占用的 block 號碼就得要釋放出來, 此時在 block bitmap 當(dāng)中相對應(yīng)到該 block 號碼的標(biāo)志就得要修改成為未使用的,這就是 bitmap 的功能。

inode bitmap (inode 對照表)
這個其實(shí)與 block bitmap 是類似的功能,只是 block bitmap 記錄的是使用與未使用的 block 號碼, 至于 inode bitmap 則是記錄使用與未使用的 inode 號碼。

最后給一張EXT3文件系統(tǒng)結(jié)構(gòu)圖,大家可以詳細(xì)的來解讀EXT文件系統(tǒng)。

注意:此圖上有一點(diǎn)需要修正,就是MBR不在分區(qū)上,而是在磁盤的最開始位置,感謝網(wǎng)友ice360的提醒,請大家參閱評論部分。

本文關(guān)鍵字:一天一點(diǎn),學(xué)習(xí)Linux,RHEL6,Ext4,文件系統(tǒng)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
干貨!大話EXT4文件系統(tǒng)完整版
linux磁盤管理及文件系統(tǒng)介紹
初窺Linux 之 ext2/ext3文件系統(tǒng)
深入理解Linux內(nèi)核I/O機(jī)制:探索文件系統(tǒng)與設(shè)備驅(qū)動
MINIX, EXT2,FAT文件系統(tǒng)概要分析
塊存儲技術(shù)方案詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服