目錄
linux中i節點
首頁 運維 linux運維 linux中i節點是什麼

linux中i節點是什麼

Jun 28, 2022 pm 05:23 PM
linux

在linux中,i節點時一個64位元組長的表;i節點中含有有關一個檔案的信息,其中有檔案大小、檔案擁有者、檔案存取許可方式,以及檔案為普通檔案、目錄檔案還是特別檔案等,在i節點中最重要的一項是磁碟位址表。

linux中i節點是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

linux中i節點

i節點是一個64位元組長的表,含有有關一個檔案的信息,其中有檔案大小、檔案擁有者、檔案存取許可方式,以及文件為普通文件、目錄文件或特別文件等。

linux檔案系統是Linux系統的心臟部分,提供了層次結構的目錄和檔案。檔案系統將磁碟空間劃分為每1024個位元組一組,稱為區塊(也有用512位元組為一塊的,如:SCOXENIX)。編號從0到整個磁碟的最大區塊數。

全部區塊可分割為四個部分,區塊0稱為引導區塊,檔案系統不用該區塊;區塊1稱為專用區塊,專用區塊含有許多信息,其中有磁碟大小和全部區塊的其他兩部分的大小。從區塊2開始是i節點表,i節點表中含有i節點,表的區塊數是可變的,後面將做討論。 i節點表之後是空閒儲存區塊(資料儲存區塊),可用於存放檔案內容。

文件的邏輯結構和物理結構是十分不同的,邏輯結構是使用者敲入cat指令後所看到的文件,使用者可得到表示檔案內容的字元流。物理結構是檔案實際上如何存放在磁碟上的儲存格式。使用者認為自己的檔案是邊疆的字元流,但實際上檔案可能並不是以邊疆的方式存放在磁碟上的,長於一塊的檔案通常將分散地存放在磁碟上。然而當使用者存取檔案時,linux檔案系統將以正確的順序取出各區塊,給予使用者檔案的邏輯結構。

當然,在linux系統的某處一定會有一個表,告訴檔案系統如何將物理結構轉換為邏輯結構。這就涉及到i節點了。

i節點是一個64位元組長的表,含有有關一個文件的信息,其中有文件大小、文件所有者、文件訪問許可方式,以及文件為普通文件、目錄文件還是特別文件等。在i節點中最重要的一項是磁碟位址表。

該表中有13個區塊號碼。前10個塊號是文件前10塊的存放位址。這10個區塊號能給出一個至多10塊長的檔案的邏輯結構,檔案將以區塊號在磁碟位址表中出現的順序依序取得對應的區塊。當文件長於10塊時又怎樣呢?磁碟位址表中的第11項給出一個塊號,這個塊號指出的塊中含有256個塊號,至此,這種方法滿足了至多長於266塊的文件(272384位元組)。如果檔案大於266塊,磁碟位址表的第12項給一個區塊號,這個區塊號指出的區塊中含有256個區塊號,這256個區塊號又指出一塊,區塊中含256個塊號,這些塊號才用來取文件的內容。磁碟位址中和第13項索引尋址方式與第12項類似,只是多一級間接索引。

這樣,在linux系統中,檔案的最大長度是16842762塊,即17246988288字節,有幸是Linux系統對檔案的最大長度(一般為1到2M位元組)加了更實際的限制,使用戶不會無意中建立一個用完整個磁碟區所有區塊的檔案。

inode

提到inode,我們必須先介紹硬碟的整體結構。硬碟內含多個硬碟盤片,硬碟盤片為圓形,每個硬碟都有一個可以讀寫的磁頭(Head),將這個磁頭固定,使硬碟片旋轉一周,所走軌跡就是磁軌(Track)。硬碟內所有磁碟片的相同磁軌號的集合成為磁柱(Cylinder)。每一磁軌被劃分成許多區域,每個區域叫一個扇區(Sector)。磁區是硬碟的最小儲存物理量,一個磁區的儲存容量大約是512位元組(約0.5K)。

知道硬碟的大體結構之後,再來談談怎麼進行硬碟分割了。進行硬碟分割的最小單位是磁柱,分割完之後自然就是格式化(format)。在Linux中進行格式化必須考慮Block與inode,Block還好理解,它是磁碟可以記錄的最小單位,是由數個磁區組成,所以大小通常為n*512Bytes,例如4K。

那麼inode是什麼呢Block是記錄檔案內容的區域,inode則是記錄該檔案的屬性及其放置在哪個Block之內的資訊。所以,每個檔案都會佔用一個inode。當Linux系統要找某個檔案時,它會先搜尋inode table找到這個檔案的屬性及資料存放地點,然後再尋找資料存放的Block進而將資料取出。 inode數量一開始已被設定好,其設定方式通常是"硬碟大小/一個容量",這個容量比Block大一些較佳,例如剛才將Block設為4K,那麼這個容量可以設為8K左右。所以,一塊1GB的硬碟如果以8K 大小分割它的inode數,則會有131072個inode。一個inode的大小為128Byte,這樣,我們就可以清楚地知道,一個分區被格式化為一個文件系統之後,基本上它一定會有inode table與數據區域兩大塊,一個用來記錄文件的屬性信息與該文件存放的Block區塊,一個用來記錄文件的內容。

建立一個檔案後,會同時建立一個inode和一個block,inode存放的是檔案的屬性訊息,但不包括檔案名,並存放所對應資料所在的block區塊的位址的指標;block存放文件的數據,每個block最多存放一個文件,而當一個block存放不下的情況下,會佔用下一個block。

linux裡檔案的檔案名稱、檔案屬性、檔案內容是分別儲存的:檔案名稱存放在目錄項目(即dentry)中,檔案屬性存放在inode中,一般情況下,每個inode佔用128Bity磁碟空間,檔案內容存放在資料區塊中。

block區塊可以用mkfs.ext3 -b來製定快的大小,每個block區塊最多可存放一個文件,所以一般block區塊的大小設定要根據我們伺服器的應用了設置,如果這個伺服器較多用來存放一些多的小文件,那就可以把block塊的大小設置的小一些,不至於浪費空間,而當存放的都是大數據時就需要把block設置的大些,這樣可以減少對磁碟block的讀取次數,也可以減少inode的記錄負擔。

block越大,inode越少,適合儲存大檔案的檔案系統;block越小,inode越多,適合儲存檔案多而小的檔案系統。

系統運行時,inode和block會在修改後記憶體與磁碟做一個同步,我們用ls -li列出來的內容這是記憶體中的暫存,所以有時候系統非正常的關機會導致block和inode的不同步問題。

推薦學習:Linux影片教學

#

以上是linux中i節點是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode上一步下一步快捷鍵 vscode上一步下一步快捷鍵 Apr 15, 2025 pm 10:51 PM

VS Code 一步/下一步快捷鍵的使用方法:一步(向後):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

See all articles