linux 檔案系統

2021-09-09 03:38:30 字數 2270 閱讀 5037

塊裝置與字元裝置

塊裝置與字元裝置都屬於物理外設

磁碟、cd-rom盤、快閃儲存器就屬於塊裝置。鍵盤、串列埠屬於字元裝置。

扇區與塊

由此看來,扇區與塊的關係就很清晰了,塊一定是扇區整數倍,而且一定要小於記憶體中乙個頁的長度。通常扇區的大小是512位元組。

inode是檔案系統中最重要的乙個結構。記錄了檔案相關的所有資訊,也就是我們常說的 meta 資訊。包括:檔案型別、許可權、所有者、大小、 atime 等:

檔案系統存在硬碟上,硬碟的最小單位稱為"扇區"(sector)。每個扇區儲存512位元組(0.5kb)

作業系統讀取硬碟時,不會乙個個扇區讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個"塊"(block),這種由多個扇區組成的"塊",是檔案訪問的最小單位。"塊"的大小,一般為4kb,即連續8個sector組成乙個block。

檔案資料都儲存在"塊"中,那麼很顯然,我們需要找到乙個地方儲存檔案的元資訊,比如:檔案的建立者,檔案的建立日期,檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode(index node即索引節點)。

inode的內容:

可以用stat命令,檢視某個檔案的inode資訊:

stat example.txt
note:為什麼檔名不存在inode裡面呢?下面解釋:

inode也會消耗硬碟空間,所以硬碟格式化的時候,作業系統自動將硬碟分成兩個區域。乙個是資料區,存放檔案資料;另乙個是inode區(inode table),存放inode所包含的資訊

每個inode節點的大小,一般是128位元組或256位元組。inode節點的總數,在格式化時就給定,一般是每1kb或每2kb就設定乙個inode。假定在一塊1gb的硬碟中,每個inode節點的大小為128位元組,每1kb就設定乙個inode,那麼inode table的大小就會達到128mb,佔整塊硬碟的12.8%。

檢視每個硬碟分割槽的inode總數和已經使用的數量,可以使用df命令。

df -i
檢視每個inode節點的大小,可以用如下命令:

sudo dumpe2fs -h /dev/hda | grep "inode size"
由於每個檔案都必須有乙個inode,因此有可能發生inode已經用光,但是硬碟還未存滿的情況。這時,就無法在硬碟上建立新檔案。

每個inode都有乙個編號,作業系統用inode編號來識別不同的檔案。

這裡值得重複一遍,unix/linux系統內部不使用檔名,而使用inode號碼來識別檔案。對於系統來說,檔名只是inode編號便於識別的別稱或者綽號。表面上,使用者通過檔名,開啟檔案。 實際上,系統內部這個過程分成三步:

首先,系統找到這個檔名對應的inode編號;

其次,通過inode編號,獲取inode資訊;

最後,根據inode資訊,找到檔案資料所在的block,讀出資料。

使用ls -i命令,可以看到檔名對應的inode號碼:

ls -i example.txt
一般情況下,檔名和inode編號是"一一對應"關係,每個inode編號對應乙個檔名。但是,unix/linux系統允許,多個檔名指向同乙個inode編號。這意味著,可以用不同的檔名訪問同樣的內容;對檔案內容進行修改,會影響到所有檔名;但是,刪除乙個檔名,不影響另乙個檔名的訪問。這種情況就被稱為"硬鏈結"(hard link)。

ln 原始檔 目標檔案
執行上面這條命令以後,原始檔與目標檔案的inode號碼相同,都指向同乙個inode。inode資訊中有一項叫做"鏈結數",記錄指向該inode的檔名總數,這時就會增加1。反過來,刪除乙個檔名,就會使得inode節點中的"鏈結數"減1。當這個值減到0,表明沒有檔名指向這個inode,系統就會**這個inode號碼,以及其所對應block區域。

檔案a和檔案b的inode號碼雖然不一樣,但是檔案a的內容是檔案b的路徑。讀取檔案a時,系統會自動將訪問者導向檔案b。因此,無論開啟哪乙個檔案,最終讀取的都是檔案b。這時,檔案a就稱為檔案b的"軟鏈結"(soft link)或者"符號鏈結(symbolic link)。

檔案a依賴於檔案b而存在,如果刪除了檔案b,開啟檔案a就會報錯:"no such file or directory"。這是軟鏈結與硬鏈結最大的不同:檔案a指向檔案b的檔名,而不是檔案b的inode號碼,檔案b的inode"鏈結數"不會因此發生變化。

由於inode號碼與檔名分離,這種機制導致了一些unix/linux系統特有的現象。

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...

Linux檔案系統

linux目錄結構 根目錄 bin 可執行檔案目錄 boot 核心引導檔案 vmlinuz,initrd.img等 dev 裝置檔案儲存目錄,應用程式對這些檔案讀寫和控制可訪問實際裝置 etc 系統配置和一些伺服器配置檔案的位置,如帳號及密碼配置檔案。home 普通使用者目錄 lib 庫檔案目錄 l...

Linux檔案系統

之前對磁碟分割槽已經有了詳細的描述,這篇主要介紹檔案系統 linux的檔案系統是出了名的 下面就 大概介紹下 可以把檔案系統大概分成 superblock inodeblock datablock 三部分 superblock superblock記錄檔案系統的基本資訊比如每塊資料塊的大小,空閒磁碟...