Inode 相關

inode

磁盤存儲的最小單位是扇區(sector),8個sector組成一個block,每個block大小爲4k 操作系統讀取磁盤時,以block爲單位。

系統存儲文件的數據,分爲兩種。元數據和數據塊。同樣,硬盤存儲也在系統格式化的時候被分爲兩部分。分別存儲元數據和數據塊。

元數據:

元數據是存儲文件元信息的地方。這些元信息包括:文件創建者,文件所屬組,文件權限信息,文件時間信息,文件類型(regular file,character special file,block special file,symbolic link 等等),文件大小,文件鏈接數,文件數據block的位置等等。除了文件名之外的所有信息都存儲在這個元數據裏面。

這些元數據可以通過命令stat查看。

wKioL1ed-y6hIgS0AAA3VAOKLGw290.png

爲什麼沒有文件名呢?

        操作系統並不使用文件名,而是通過inode來是被不同的文件。當讀取文件時,系統通過文件名能夠查找到該文件的inode,當文件被打開後,系統對文件的操作都是通過inode了,不再需要文件名了。所以元數據中不需要文件名。文件的文件名,就好像是操作系統之間的橋樑。

查看某個文件對應的inode:

   wKiom1ed-0jA-nIcAAAHyR11UWQ190.png

        可得,該系統的inode大小爲4k

那麼這個文件名和inode直接的對應關係,是在哪裏查找的呢?

        文件夾的表結構信息。 目錄也是一種文件,這個文件保存了很多的目錄項(dirent),這些目錄項裏面存儲有文件名和inode的對應關係。

不同的權限對目錄的效果?

        如果只有只讀權限,只能反問目錄的目錄項,獲得文件的inode,並不能訪問inode的所有相關信息。 如果有了執行權限,就可以獲取inode的相關信息了。

inode的大小

        查看inode的字節數

wKiom1ed-1qRZGmVAAAUKjiY7Ms494.png

inode的結構

元數據存儲在inode table中,每個文件的元數據條目,成爲inode entry 不同的文件系統中,inode結構不同。以前曾經有過13指針的結構,現在常用在ext4文件系統中的是15指針的結構:

  1. 12個直接指針:每個指針指向4096k(1個block大小)的數據塊,所指向內容大小:4k*12=48k

  2. 1個間接指針:該指針指向一個4096k大小的數據塊,該數據塊存儲着指向內容數據塊的指針,一共4k1024個(每個指針32位,所以每個指針佔4個字節),共10244k=4M

  3. 1個2重間接指針:所指向內容大小:1024*4M=4G

  4. 1個三重間接指針:所指向內容大小:1024*4G=4T 

    wKioL1ed-6Oix9AhAAClj1Lbjh4915.png

數據塊:

數據塊是存儲具體文件內容的地方。數據塊的訪問是通過inode中的數據塊指針訪問的。

軟鏈接和硬鏈接的inode

軟鏈接的inode和源文件是不同的。但是軟鏈接的文件名指向源文件的文件名,軟鏈接文件通過源文件來獲取inode,然後訪問文件的具體內容。軟鏈接相當於新建了一個文件,所以他們的inode是不同的。

軟鏈接可以不在同一分區。

硬鏈接相當於文件的“別名”,硬鏈接與源文件在目錄的目錄項中存有相同的inode。指向某個inode的文件名數,就是硬鏈接數,每增加一個,會在ll時顯示出來。 硬鏈接必須在同一個分區中,不能跨文件系統。

wKiom1ed-2vCRSXqAAAhVV-oU1M671.png

文件的刪除,只是刪除了目錄項中,文件名、inode與存儲塊之間的關係,並不會直接清除掉存儲塊處的數據,所以數據刪除後,是可能恢復的。如果想要刪除掉存儲塊處的數據,只需要做一次大量的拷貝或者格式化該分區。

對於文件夾,可以創建軟鏈接,但是不能夠創建硬鏈接。 

wKioL1ed-3qDEgjnAAAxilx9HMo610.png

圖中,/root/Downloads文件夾不能夠建立硬鏈接,卻有2個別稱,這是因爲/root/Downloads目錄下面/root/Downloads/.  這個鏈接的存在。 而/root文件夾有27個別稱,這是因爲/root下面的每個文件夾中,都有一個指向/root的別稱/root/A/..

文件新建時,系統會自動給文件一個inode,來標識這個文件。 當文件讀取時,會產生一個文件描述符:fd(file description)。

inode空間和硬盤空間

  • 查看inode空間剩餘,使用df -h 命令

  • 查看硬盤空間剩餘,使用df 

    wKiom1ed-4-iM_nwAABIG5OMrhI514.png

others: 超級塊(superblock),佔據1號物理塊,作用於文件系統上,是文件系統的控制塊。如果訪問一個分區,首先要訪問的是該分區的超級塊。超級塊的數據損毀後,整個磁盤都有可能壞,所以需要經常備份超級塊。 `


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章