Linux系統中inode值解析

來源:互聯網
上載者:User

inode 譯成中文就是索引節點。每個存放裝置或存放裝置的分區(存放裝置是硬碟、磁碟片、隨身碟 ... ... )被格式化為檔案系統後,應該有兩部份,一部份是inode,另一部份是Block,Block是用來儲存資料用的。而inode呢,就是用來儲存這些資料的資訊,這些資訊包括檔案大小、屬主、歸屬的使用者組、讀寫權限等。inode為每個檔案進行資訊索引,所以就有了inode的數值。作業系統根據指令,能通過inode值最快的找到相對應的檔案。 

做個比喻,比如一本書,存放裝置或分區就相當於這本書,Block相當於書中的每一頁,inode 就相當於這本書前面的目錄,一本書有很多的內容,如果想尋找某部份的內容,我們可以先查目錄,通過目錄能最快的找到我們想要看的內容。雖然不太恰當,但還是比較形象。

當我們用ls 查看某個目錄或檔案時,如果加上-i 參數,就可以看到inode節點了;比如我們前面所說的例子;

[root@localhost ~]# ls -li lsfile.sh

2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

lsfile.sh 的inode值是 2408949 ; 查看一個檔案或目錄的inode,要通過ls 命令的的 -i參數。
2.10 inode 相同的檔案是永久連結檔案;

在Linux 檔案系統中,inode值相同的檔案是永久連結檔案,也就是說,不同的檔案名稱,inode可能是相同的,一個inode值可以對應多個檔案。理解連結檔案並不難,看看例子就會了。在Linux中,連結檔案是通過ln工具來建立的。

2.11 建立永久連結,永久連結和源檔案關係;

用ln 建立檔案永久連結的文法: 

# ln 源檔案 目標檔案

下面我們舉一個例子,在這個例子中,我們要為sun.txt 建立其永久連結sun002.txt。然後看一下sun.txt和sun002.txt的屬性的變化;

[root@localhost ~]# ls -li sun.txt 註:查看sun.txt的屬性;

2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt 註:這是sun.txt的屬性;

[root@localhost ~]# ln sun.txt sun002.txt 註:我們通過ln 來建立sun.txt的永久連結檔案sun002.txt

[root@localhost ~]# ls -li sun* 註:我們列一下sun.txt 和sun002.txt

2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt

2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt

我們可以看到sun.txt在沒有建立永久連結檔案sun002.txt的時候,其連結個數是1(也就是-rw-r--r--後的那個數值),建立了永久連結sun002.txt建立後,這個值變成了2。也就是說,我們每次為sun.txt建立一個新的永久連結檔案後,其永久連結個數都會增加1。

inode值相同的檔案,他們的關係是互為永久連結的關係。當我們修改其中一個檔案的內容時,互為永久連結的檔案的內容也會跟著變化。如果我們刪除互為永久連結關係的某個檔案時,其它的檔案並不受影響。比如我們把sun.txt刪除後,我們還是一樣能看到sun002.txt的內容,並且sun02.txt仍是存在的。

可以這麼理解,互為永久連結關係的檔案,他們好象是複製體,他們的屬性幾乎是完全一樣;

下面的例子,我們把sun.txt刪除,然後我們看一下sun002.txt 是不是能看到其內容。

[root@localhost ~]# rm -rf sun.txt

[root@localhost ~]# more sun002.txt

注意:永久連結不能為目錄建立,只有檔案才能建立永久連結。

2.12 軟連結的建立,及軟接與源檔案的關係;

建立軟連結(也被稱為符號連結)的文法;

# ln -s 源文檔案或目錄 目標檔案或目錄

軟連結也叫符號連結,他和永久連結有所不同,軟連結檔案只是其源檔案的一個標記。當我們刪除了源檔案後,連結檔案不能獨立存在,雖然仍保留檔案名稱,但我們卻不能查看軟連結檔案的內容了。

[root@localhost ~]# ls -li linuxsir001.txt

2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt

[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt

[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt

2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt

2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt
解釋

上面的例子,首先我們查看 linuxsir001.txt 的屬性,比如inode 、所屬檔案種類、建立或修改時間等... ...我們來對比一下:

首先 對比一下節點:兩個檔案的節點不同;

其次 兩個檔案的歸屬的種類不同 linuxsir001.txt是-,也就是普通檔案,而linuxsir002.txt 是l,它是一個連結檔案;

第三 兩個檔案的讀寫權限不同 linuxsir001.txt 是rw-r--r-- ,而linuxsir002.txt的讀寫權限是 rwxrwxrwx 

第三 兩者的永久連結個數相同;都是1

第四 兩檔案的屬主和所歸屬的使用者組相同;

第五 修改(或訪問、建立)時間不同;

我們還注意到了linuxsir002.txt 後面有一個標記 ->,這表示linuxsir002.txt 是linuxsir001.txt的軟連結檔案。

值得我們注意的是:當我們修改連結檔案的內容時,就意味著我們在修改源檔案的內容。當然源檔案的屬性也會發生改變,連結檔案的屬性並不會發生變化。當我們把源檔案刪除後,連結檔案只存在一個檔案名稱,因為失去了源檔案,所以軟連結檔案也就不存在了。這一點和永久連結是不同的;

[root@localhost ~]# rm -rf linuxsir001.txt 註:刪除linuxsir001.txt

[root@localhost ~]# ls -li linuxsir002.txt 註:查看linuxsir002 的屬性;

2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt

[root@localhost ~]# more linuxsir002.txt 註:查看linuxsir002.txt的內容;

linuxsir002.txt: 沒有那個檔案或目錄 註:得到提示,linuxsir002.txt不存在。

上面的例子告訴我們,如果一個連結檔案失去了源,就意味著他已經不存在了;

我們可以看到軟連結檔案,其實只是源檔案的一個標記,當源檔案失去時,他也就是存在了。軟連結檔案只是佔用了inode來儲存軟連結檔案屬性等資訊,但檔案儲存體是指向源檔案的。

軟體連結,可以為檔案或目錄都適用。無論是軟連結還是永久連結,都可以用rm來刪除。rm工具是通用的。

         Linux好學堂, www.linuxhao.com,Linux編程開發,Linux下載中心,並提供Linux視頻教程,Linux培訓教程,Linux技術資料免費下載等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.