Linux中inode有什么用-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Linux中inode有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux中inode有什么用”這篇文章吧。

成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元吉林做網(wǎng)站,已為上家服務(wù),為吉林各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108

inode是用來做什么的

inode是用來存儲文件元信息的區(qū)域。中文譯名叫做“索引節(jié)點”。

關(guān)于inode的背景知識

我們先復(fù)習(xí)下文件存儲的一些內(nèi)容。我們知道,文件存儲在硬盤上,硬盤的最小存儲單元呢,又被稱為扇區(qū),扇區(qū)的大小是512字節(jié)。

操作系統(tǒng)在硬盤上讀取信息時,是按照一次性讀取多個扇區(qū)的方式來的,而這多個扇區(qū)也叫塊。通常,塊的大小是4KB,大概有8個扇區(qū)的大小。需要注意的是,讀取的塊是連續(xù)的空間。

這個時候我們能知道,文件是存儲在“塊”中的,就像我們寫C語言程序的時候,我們知道,當(dāng)我們聲明一個數(shù)組的時候,不僅僅會存儲放在數(shù)組里面的值,還會存儲對應(yīng)的數(shù)組信息,比如數(shù)組的首地址、文件類型和數(shù)組長度等等,同樣的,需要找一個地方存儲文件的元信息,類似于文件的創(chuàng)建相關(guān)的信息、文件的長度等等。而這個地方,我們稱做inode。

inode中存儲的內(nèi)容

inode包含著所存儲文件的元信息,包含著這些內(nèi)容:

  • 文件的字節(jié)數(shù)。

  • 文件創(chuàng)建者的ID。

  • 文件的Group ID。

  • 文件的讀寫等權(quán)限。

  • 文件的相關(guān)時間戳。具體的有三個:ctime-->inode上一次變動的時間;mtime-->文件內(nèi)容上一次變動的時間;atime-->文件上一次打開的時間。

  • 鏈接數(shù)

  • 文件數(shù)據(jù)的塊位置

inode號碼

第一次看到上面的存儲內(nèi)容后,我想大家多少會有相同的疑問,既然inode是存儲文件相關(guān)信息的,為什么不存儲文件名呢。理由就是,文件名并不是Unix/Linux操作系統(tǒng)識別不同文件的標(biāo)準(zhǔn)。

操作系統(tǒng)是通過inode號碼來識別不同文件的。

在Unix/Linux系統(tǒng)中,用戶層名是通過文件名來打開文件的,系統(tǒng)層面主要是通過了三個步驟來打開文件:

  • 根據(jù)文件名找到對應(yīng)的inode號碼。

  • 通過inode號碼獲取inode信息。

  • 根據(jù)inode信息,找到文件數(shù)據(jù)所存的塊,并獨處數(shù)據(jù)。

inode的特殊作用

Unix/Linux系統(tǒng)中inode號碼和文件名分離,這導(dǎo)致了系統(tǒng)中一些特別的現(xiàn)象:

  • 刪除inode節(jié)點,即是刪除文件。有些文件可能無法正確刪除,這時我們直接刪掉對應(yīng)的inode節(jié)點,就可以起到刪除文件的作用。

  • 移動文件或者重命名文件,不改變inode號碼,僅僅只是改變文件名。

  • 通常來說,系統(tǒng)是無法通過inode號碼得到文件名的,當(dāng)打開一個文件,系統(tǒng)往后就通過inode來識別該文件,不再考慮文件名。

因為inode號碼的存在,系統(tǒng)可以在軟件不關(guān)閉的情況下進(jìn)行更新。系統(tǒng)通過inode號碼,識別運行中的文件,更新過程中,文件以相同的文件名,新的inode存在,而不會影響到目前運行中的文件。而原先舊版的inode會在軟件下一次打開時被回收,文件名會自動指向新的inode號碼。

inode空間占用問題

既然同樣是存儲在硬盤里的數(shù)據(jù),inode必然也是會占用硬盤空間的,當(dāng)格式化硬盤的時候,操作系統(tǒng)會自動將硬盤分成兩個區(qū)域:

  • 數(shù)據(jù)區(qū)

  • inode table

數(shù)據(jù)區(qū)主要存放文件數(shù)據(jù),inode table區(qū)域則是存放inode信息。

特別的是,inode所占用的區(qū)域大小,在磁盤格式化時操作系統(tǒng)就已經(jīng)給定。這樣做導(dǎo)致的后果就是,數(shù)據(jù)區(qū)的空間明明還沒有使用完,但是卻無法繼續(xù)存取數(shù)據(jù)了,這時因為inode table區(qū)域已經(jīng)用滿了,所以無法再往磁盤里存儲新的文件。

目錄文件

我們知道,在Unix/Linux中,任何資源都是以文件的形式存在的。目錄也是。我們打開目錄,實際上就是打開目錄文件。目錄文件的結(jié)構(gòu)就是一個列表。

目錄項 = 所包含文件文件名 + 對應(yīng)inode號碼。

硬鏈接和軟鏈接

關(guān)于具體什么是硬鏈接什么是軟鏈接,我就不在這篇博文里贅述了,僅從inode角度去考慮。

從inode號碼的角度考慮,Unix/Linux系統(tǒng)中,是允許多個文件名指向同一個inode號碼的。這個時候,如果刪除掉其中一個文件名,不影響另一個文件名的訪問,同時,如果通過一個文件名打開文件并作出修改,其他文件名打開時可以共享到該修改。那么就稱這種為“硬鏈接”。在Linux中,我們可以通過ln命令來創(chuàng)建硬鏈接。

上面總結(jié)到,在inode中,有一個存儲項叫做“鏈接數(shù)”,記錄只想該inode的文件名總數(shù)。如果通過硬鏈接方式創(chuàng)建一個文件名指向某文件,那該文件對應(yīng)的inode數(shù)據(jù)域中鏈接數(shù)部分就會 + 1,反之 - 1 。當(dāng)這個值為0時,系統(tǒng)就會默認(rèn)沒有文件名指向該inode,此時,就會回收該inode號碼,并且回收對應(yīng)的塊區(qū)域。

而對應(yīng)的軟鏈接,假設(shè)有文件A和文件B,B是A的軟鏈接。這個時候,A和B的inode號碼是不同的,因為它們是不同的文件,但是!B的內(nèi)容是A的路徑,讀取B的時候,系統(tǒng)會自動訪問A,所以無論打開哪個文件,訪問的都是文件A。這個時候,文件B就被稱為文件A的“軟鏈接”或者“符號鏈接”。

在Unix/Linux系統(tǒng)中,我們可以通過ln -s 命令來創(chuàng)建軟鏈接。

總結(jié)和小補充

通過上面的敘述,我們知道inode就像C語言中的指針域,指針域記錄著多種信息,并把我們導(dǎo)向正確的文件位置,讀取需要的信息。(當(dāng)然也不是完全像。)

Unix/Linux系統(tǒng)中創(chuàng)建目錄時,會自動生成兩個目錄項:

  • .目錄

  • ..目錄

可以通過 ls -al 命令觀察到這兩個目錄?!?目錄“的inode號碼是當(dāng)前目錄的inode號碼,等同于當(dāng)前目錄的硬鏈接,而“..“目錄的inode號碼是當(dāng)前目錄父目錄的inode號碼,等同于父目錄的硬鏈接。目錄硬鏈接總數(shù) = 2 + 子目錄總數(shù)(包括隱藏文件)。

以上是“Linux中inode有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:Linux中inode有什么用-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article38/hejsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化小程序開發(fā)、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)