日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 文件inode,linux文件系统-inode学习整理

發布時間:2023/12/1 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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学习整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。