溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux檔案系統(tǒng)是什么

發(fā)布時間:2022-11-10 09:38:43 來源:億速云 閱讀:130 作者:iii 欄目:建站服務(wù)器

今天小編給大家分享一下linux檔案系統(tǒng)是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

linux檔案就是目錄(文件)。為了方便管理文件和目錄,Linux系統(tǒng)將它們組織成一個以根目錄“/”開始的倒置的樹狀結(jié)構(gòu)。Linux中的目錄和Windows系統(tǒng)中的文件夾類似,不同之處在于,Linux系統(tǒng)中的目錄也被當(dāng)做文件看待。

linux檔案就是目錄(文件)。

為了方便管理文件和目錄,Linux 系統(tǒng)將它們組織成一個以根目錄 / 開始的倒置的樹狀結(jié)構(gòu)。Linux 中的目錄,和 Windows 系統(tǒng)中的文件夾類似,不同之處在于,Linux 系統(tǒng)中的目錄也被當(dāng)做文件看待。

在 Linux 操作系統(tǒng)中,所有的文件和目錄都被組織成以一個根節(jié)點(diǎn)“/”開始的倒置的樹狀結(jié)構(gòu),如圖 1 所示。

linux檔案系統(tǒng)是什么
圖 1 Linux 系統(tǒng)文件和目錄組織示意圖

其中,目錄就相當(dāng)于 Windows 中的文件夾,目錄中存放的既可以是文件,也可以是其他的子目錄,而文件中存儲的是真正的信息。

文件系統(tǒng)的最頂層是由根目錄開始的,系統(tǒng)使用“/”來表示根目錄,在根目錄之下的既可以是目錄,也可以是文件,而每一個目錄中又可以包含(子)目錄或文件。如此反復(fù)就可以構(gòu)成一個龐大的文件系統(tǒng)。

其實(shí),使用這種樹狀、具有層次的文件結(jié)構(gòu)主要目的是方便文件系統(tǒng)的管理和維護(hù),想象一下,如果所有的文件都放在一個目錄下,其文件系統(tǒng)的管理和維護(hù)將變成一場噩夢。

現(xiàn)實(shí)中也有許多類似的例子,例如在整個行政管理體制中,村民就相當(dāng)于文件,他們住在一個村莊中,村莊就是存儲村民的目錄。許多村又組成了個鄉(xiāng),這個鄉(xiāng)就相當(dāng)于存儲村的目錄,依此類推,最終就構(gòu)建出了一個龐大的行政區(qū)域管理結(jié)構(gòu)圖。

注意,目錄名或文件名都是區(qū)分大小寫的,如 dog、DOG 和 Dog 為 3 個不同的目錄或文件。完整的目錄或文件路徑是由一連串的目錄名所組成的,其中每一個目錄由“/”來分隔。如 cat 的完整路徑是 /home/cat。

在文件系統(tǒng)中,有兩個特殊的目錄,一個是用戶所在的工作目錄,即當(dāng)前目錄,可用一個點(diǎn)“.”表示;另一個是當(dāng)前目錄的上一層目錄,也叫父目錄,用兩個點(diǎn)“..”表示。

如果一個目錄或文件名是以一個點(diǎn)開始,就表示這個目錄或文件是一個隱藏目錄或文件。即以默認(rèn)方式査找(后續(xù)會講查找命令)時,不顯示該目錄或文件。

為了方便管理和維護(hù),Linux 系統(tǒng)采用了文件系統(tǒng)層次標(biāo)準(zhǔn),也稱為 FHS 標(biāo)準(zhǔn),它規(guī)定了根目錄下各個目錄應(yīng)該存在哪些類型的文件(或子目錄),比如說,在 /bin 和 /sbin 目錄中存放的應(yīng)該是可執(zhí)行文件

linux檔案系統(tǒng)(filesystem)

硬盤的物理組成

首先簡單認(rèn)識一下硬盤的物理結(jié)構(gòu),總體來說,硬盤結(jié)構(gòu)包括: 盤片、磁頭、盤片主軸、控制電機(jī)、磁頭控制器、數(shù)據(jù)轉(zhuǎn)換器、接口、緩存等幾個部份。 所有的盤片(一般硬盤里有多個盤片,盤片之間平行)都固定在一個主軸上。 在每個盤片的存儲面上都有一個磁頭,磁頭與盤片之間的距離很小(所以劇烈震動容易損壞),磁頭連在一個磁頭控制器上,統(tǒng)一控制各個磁頭的運(yùn)動。 磁頭沿盤片的半徑方向動作,而盤片則按照指定方向高速旋轉(zhuǎn),這樣磁頭就可以到達(dá)盤片上的任意位置了。

一個磁盤由多個圓環(huán)組成,這些圓環(huán)就叫做磁道,而一個磁道又分為多個扇區(qū)(sector)一個一個扇區(qū)是512Byte,硬盤所有磁盤相同位置的圓環(huán)組成一個磁柱(Cylinder)。硬盤容量為:512Byte * 扇區(qū)數(shù) * 磁柱數(shù)*磁頭數(shù)

前面三個數(shù)都好理解,可能有人不理解乘以磁頭數(shù)是干嘛,因?yàn)榍懊嫒齻€數(shù)相當(dāng)于計(jì)算一個圓的存儲量,而一個磁頭讀取一個圓,所以乘以磁頭數(shù)量就相當(dāng)于圓面積乘以圓數(shù)量。

磁盤的分割

磁盤分割的最小單位是磁柱(Cylinder)

磁盤的分割其實(shí)就是記錄一個分割區(qū)(partition)的起始磁柱與結(jié)束磁柱,而這些被記錄的信息都存放在主要開機(jī)扇區(qū)( Master Boot Recorder, MBR )。事實(shí)上, MBR 就是在一塊硬盤的第零軌上面,這也是計(jì)算機(jī)開機(jī)之后要去利用該硬盤時, 必須要讀取的第一個區(qū)域。

思考一個問題:MBR的大小是不是固定的?

我們這么想,數(shù)據(jù)的存儲順序?yàn)?: MBR + 其他數(shù)據(jù) 。如果MBR的大小不固定,比如原來MBR中存放了3個partition的信息,現(xiàn)在我們要新增一個partition,會出現(xiàn)什么后果?后果就是所有的“其他數(shù)據(jù)”都要順序的向后移動一個partition信息的距離。是不是想到了數(shù)組的增刪了。所以我們希望將MBR固定,事實(shí)也是如此MBR被固定為只能存放4個partition的信息。這樣似乎好多了,但是只有四個partition,夠用嗎?設(shè)計(jì)者當(dāng)然也想到了這個問題,所以將partition分為Primary和Extended兩類(E最多只能有一個)。其中P是可以直接使用的,而E不能直接使用,E相當(dāng)于一個指針,指向擴(kuò)展的partition的位置信息存儲處。

filesystem

filesystem也即文件系統(tǒng),每個oartition都可以由自己的filesystem,例如fat32,ntfs之類的

不同的partuition雖然filesystem不一樣,但是都是用來存儲數(shù)據(jù)的。前面我們介紹了硬盤的最小存儲單元為sector(扇區(qū),一般為512Byte),但是filesystem的最小存儲單元卻不是sector而是block。block是sector的2的次方倍數(shù),磁頭一次讀取一個block的數(shù)據(jù)。所以如果block過小,則讀取一個文件時磁頭需要讀取較多數(shù)量的block,這樣效率很低,但是block也不能過大,應(yīng)為一個block中只能存在一個檔案,例如block大小為100M,那么如果有一個100.1M的文件,則需要占用兩個block,浪費(fèi)了大量空間。

superblock

每個filesystem中的第一個block稱為superblock。superblock的作用是存儲filesystem的大小,空的和填滿的區(qū)塊以及其他的總書和諸如此類的信息。也就是說如果你要使用一個filesystem的時候,第一個要經(jīng)過的就是superblock這個塊了,如果superblock壞了,這個partition大概也回天乏術(shù)了。

linux的EXT2文件系統(tǒng)

我們既然是學(xué)習(xí)linux,自然要學(xué)習(xí)linux的filessystem,我們以linux最標(biāo)準(zhǔn)的EXT2做說明。

EXT2中的filesystem分為inode區(qū)和block區(qū),其中 inode存儲文件的相關(guān)屬性等信息,而block區(qū)存儲文件的內(nèi)容,每個inode都充當(dāng)指針pointer的作用,它能描述文件的相關(guān)屬性并指向該文件所在block的位置。blocks與inodes的數(shù)量在一開始格式化的時候就已經(jīng)固定了。

整個filesystem示意圖:

linux檔案系統(tǒng)是什么

  • SuperBlock:如前所述, Superblock 是記錄整個 filesystem 相關(guān)信息的地方, 沒有 Superblock ,就沒有這個 filesystem 了。他記錄的信息主要有:

    • block 與 inode 的總量;

    • 未使用與已使用的 inode / block 數(shù)量;

    • 一個 block 與一個 inode 的大小;

    • filesystem 的掛載時間、最近一次寫入數(shù)據(jù)的時間、最近一次檢驗(yàn)磁盤 (fsck) 的時間等檔案系統(tǒng)的相關(guān)信息;

    • 一個 valid bit 數(shù)值,若此檔案系統(tǒng)已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。

  • Group Description:紀(jì)錄此 block 由由何處開始記錄;

  • Block bitmap:此處記錄那個 block 有沒有被使用;

  • Inode bitmap:此處記錄那個 inode 有沒有被使用;

  • Inode table:為每個 inode 數(shù)據(jù)存放區(qū);

  • Data Blocks:為每個 block 數(shù)據(jù)存放區(qū)。

linux檔案系統(tǒng)的運(yùn)作

我們知道硬盤的存取速度相對于內(nèi)存來說是很慢的,linux為了提高整體的速度,采用異步處理的方式。

什么是異步呢?舉例來說:『當(dāng)系統(tǒng)讀取了某一個檔案, 則該檔案所在的區(qū)塊數(shù)據(jù)會被加載到內(nèi)存當(dāng)中,所以該磁盤區(qū)塊就會被放置在主存儲器的緩沖快取區(qū)中, 若這些區(qū)塊的數(shù)據(jù)被改變時,剛開始數(shù)據(jù)僅有主存儲器的區(qū)塊數(shù)據(jù)會被改變, 而且在緩沖區(qū)當(dāng)中的區(qū)塊數(shù)據(jù)會被標(biāo)記為『 Dirty 』,這個時候磁盤實(shí)體區(qū)塊尚未被修正! 所以亦即表示,這些『 Dirty 』區(qū)塊的數(shù)據(jù)必需回寫到磁盤當(dāng)中, 以維持磁盤實(shí)體區(qū)塊上的數(shù)據(jù)與主存儲器中的區(qū)塊數(shù)據(jù)的一致性?!?/p>

所以linux的關(guān)機(jī)真的要注意,否則可能會造成文件的丟失甚至是磁盤的損毀!??!

mount point

所以linux的關(guān)機(jī)真的要注意,否則可能會造成文件的丟失甚至是磁盤的損毀?。?!

mount point

我們上面提到的都是關(guān)于檔案系統(tǒng) (filesystem),但是要能夠讓我們的 Linux 使用的話, 非得『掛載 (mount)』上我們的 Linux 系統(tǒng)才行啊! 剛剛我們上面提到了目錄可以記錄文件名與 inode 的相關(guān)信息,此外, 目錄也是讓我們得以跟 filesystem 產(chǎn)生對應(yīng)的入口點(diǎn)。因此,我們稱那個入口點(diǎn)目錄為『 掛載點(diǎn) (mount point) 』

以上就是“l(fā)inux檔案系統(tǒng)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI