linux 文件inode,linux文件系统-inode学习整理
linux文件系統-inode學習整理
介紹
linux文件系統可講的模塊有很多,包括文件系統整體架構、文件系統分類、虛擬文件系統以及文件系統存儲結構等等,本文主要介紹的是文件系統的存儲結構,也就是本文的重點-inode。
文件存儲結構
首先從開天辟地開始介紹,我們知道數據是保存在磁盤中的,磁盤具體存貯原理細節不在這里進行說明,而磁盤中的存儲空間是如何進行管理的?這里就說到了磁盤塊的劃分:
超級快:文件系統中第一個塊,存放的是文件系統本身的結構信息,包括每個區域的大小以及未被使用的磁盤塊等等信息
inode節點表:超級塊的下部分就是inode節點表了,也就是我們上面的inode table。每個inode節點對應一個文件(或目錄)的結構,包括了文件的創建時間、權限等信息,下面有詳細的介紹。
數據區:顯然它就是用來保存文件內容的區域,這里要介紹下,磁盤上的塊大小一樣,一般來說為4kb,即連續的八個扇區(512字節),塊手是文件存取的最小單位,超過塊大小的文件會放到下一個塊中。
就像大家知道的,linux一切皆是文件,所以目錄項也是文件,不過這個文件中存儲的是目錄下的文件及子目錄組織結構,相應的文件指向了inode的節點,這里需要說明每個文件對應一個inode節點,之后通過inode節點中有關數據區塊的信息找到對應的數據。
文件存儲結構的整體架構,如下圖所示:
inode節點inode節點詳解
inode節點就是文件元數據的存儲區,包括了文件如下內容
1
2
3
4
5
6
7
8- 文件的字節數
- 文件擁有者的User ID
- 文件的Group ID
- 文件的讀、寫、執行權限
- 文件的時間戳,共有三個:ctime指inode上一次變動的時間,
mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。
- 鏈接數,即有多少文件名指向這個inode
- 文件數據block的位置
可以使用stat filename 命令查看:
基本除了文件內容外的信息都存儲在inode節點中。
inode節點的大小一般來說為128或者256個字節,inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小為128字節,每1KB就設置一個inode,那么inode table的大小就會達到128MB,占整塊硬盤的12.8%。
如果想要查看inode大小,可以使用dump2fs -h /dev/sda1 | grep "Inode size"查看:
如果要查看每個磁盤的inode使用情況,可以使用df -i命令查看:
每個文件都有自己的對應的inode號,這里要說明的是unix/linux系統中主要根據inode號來識別文件,文件名只是我們用來整理和分辨文件的別稱,而文件名主要存儲在目錄項中。
目錄項目錄項的結構
目錄項是linux文件系統的重要組成部分,在linux中目錄項也是一種文件,不過他內部存儲的信息由兩部分組成
文件名
inode編號
我們可以通過ls -ai dirname 查看目錄結構:
當我們創建目錄時,一定會有的兩個內容就是.和..,.表示的是當前目錄文件所對應的inode號,..對應的是當前目錄父目錄的inode號,其他的就是我們目錄下的文件和對應的inode號。
介紹完上面這些信息我們再來看一開始的流程就很清楚了:
首先從目錄文件中拿到我們所需文件對應的inode號,通過inode號拿到文件的元數據,通過其中所指向的數據塊號取出文件內容。
創建流程通過創建流程串通知識點
文件創建流程
通過前面的內容我們了解到了文件取出的流程,那創建一個文件的流程是什么樣的呢?下面我們來介紹下創建文件的流程。
存儲inode節點信息:內核首先找到一塊空的inode節點,將文件的信息存在節點中。
存儲數據信息:數據信息即文件信息,內核從未使用的塊列表中找到幾個數據塊(一般是不連續的),如300、230、540等,內核將緩存區中的數據存儲到對應的數據塊中。
記錄分配情況:存儲完信息后,數據塊的分配情況記錄在inode節點信息中
添加文件名到目錄:最后內核將文件名和對應的inode節點放到目錄文件中。
inode應用擴展
硬連接
一般情況下,linux中的文件名和inode號碼是一一對應的,不過也可以多個文件名指向同一個inode節點,也就是我們要介紹的硬鏈接。
創建硬鏈接的命令為ln 源文件目標文件,硬鏈接與正常的文件相同,只是與其他文件共享同一個inode節點,前面介紹的inode節點信息中Links數就是文件名指向的數量,當對其進行刪除的時候只會對inode節點中的links數減少1,當為0的時候文件才會真正被刪除。
這里說明下,目錄項中的.和..也是一種硬鏈接。
軟鏈接
介紹完硬鏈接,再介紹一種我們平常使用比較多的一種方式:軟鏈接。
ln -s 源文件 目標文件是軟鏈接的創建方式,雖然看起來只是多了個選項s,當時內部原理完全不同。
軟鏈接是單獨生成一個鏈接文件,有自己的inode號,是一個單獨的文件,這個文件中的信息是鏈接的文件的信息。
如上圖,可以把軟鏈接看做是一個指針,只不過指針里面的內容為所指向文件的路徑,這個指針有自己單獨的內存空間。
參考文章
總結
以上是生活随笔為你收集整理的linux 文件inode,linux文件系统-inode学习整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳到广州多少钱啊?
- 下一篇: linux下查看进度命令,在Linux系