inode總結

inode的介紹以及影響inode號的命令

什么是inode?

理解inode,要從文件儲存說起。文件儲存在硬盤上,硬盤的最小存儲單位叫扇區(Sector)。每個扇區儲存512字節(相當于0.5KB)。操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個塊(block)。這種由多個扇區組成的塊是文件存取的最小單位,塊的大小,最常見的是4KB,即連續八個sector組成一個block,文件數據都儲存在塊中,那么很明顯,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創年日期、文件的大小等等。這種儲存元信息的區域叫做inode,中文譯名為”索引節點”。inode (index node) 表中包含文件系統的所有文件列表。

inode包含文件的信息(元數據)

? Inode編號

用來識別文件類型,以及用于stat C函數的模式信息

文件權限

文件的擁有者的UID

文件所屬組的GID

鏈接數(指向這個文件名路徑名稱個數)

文件的大小

文件的間戳(ctime指inode上一次變動的時間,mtime是指文件內容上一次變動的時間,atime指文件上一次打開的時間)

指向磁盤文件的數據塊指針

有關文件的其它數據

注意:要想查看文件的inode信息可以使用stat命令查看

inode表結構

inode表結構

直接塊指針:

前12個直接指針,直接指向存儲數據的區域。如Blocks大小為4*1024KB,前12個直接指針就可以保存48KB的文件

間接塊指針:

設每個指針占用4個字節,則以及指針指向的Blocks可以保存(4*1024)/4KB,可指向1024個Blocks,一級指針可存儲文件數據大小為1024*(4*1024)KB=4MB

雙重間接塊指針:

同樣Blocks大小為4*1024,則二級指針可保存Blocks指針數量為((4*1024)/4)*((4*1024)/4),則二級指針保存文件數據大小為(1024*1024)*(4*1024)=4GB

三重間接塊指針:

以次類推三級指針可以儲存文件數據大小為(1024*4*1024*1024)*(4*1024)=4TB

inode的大小:

每個inode都有一個編號,操作系統用inode號來識別不同文件。Unix/Linux系統不使用文件名,而使用inode號來識別文件,對于系統來說,文件名只是inode號碼便于識別的別稱或綽號。表面上,通過文件名打開文件;實際上,系統內部這個過程分成三步:首先,系統找到這個文件名對應的inode號;其次,通過inode號,獲取inode信息;最后,根據inode信息,找到文件數據所在的block,讀出數據。

注意:inode號并不是無限的,如果一個分區的節點數被使用完了,那么即使磁盤空間還有剩余也不能再存放任何數據。可以使用df -i命令查看節點使用情況

df-i

? 注:1節點總數、2使用過節點數、3剩余節點數、4節點使用率

目錄文件:

Unix/Linux系統中,目錄(directory)也是一種文件。打開目錄,實際上就是打開目錄文件目錄文件的結果非常簡單,就是一系列目錄項(direct)的列表。每個目錄項,由兩部分組成:所包含文件的文件名,以及該文件名對應的inode號。

ls命令只列出目錄文件中的所有文件名:

ls

ls -i命令列出整個目錄文件,即文件名和inode號(箭頭標的即為inode號):

ls -i

如果要查看文件的詳細信息,就必須根據inode號,訪問inode節點,讀取信息。ls -i -l 目錄文件 列出整個目錄文件,即文件名和inode號(箭頭標注的列即為inode號)

ls-i-l

理解了上面的知識,就能理解目錄的權限,文件的讀權限(r)和寫權限(w),都是針對目錄文件本身。由于目錄文件內只有文件名和inode號,所以只有讀權,只能獲取文件名,無法獲取其他信息,因為其他信息都儲存在inode節點中,而讀取inode節點內的信息需要目錄文件的執行權限(x)。

Linux中cp、rm、mv 、ln對inode的影響:

cp命令

  • 分配一個未被使用的inode號,在inode表中添加一個新項目,(注意:如果是cp到謳歌已經存在的文件,則inode號采用被覆蓋之前的目標文件的inode號,如果對運行中的apache共享模塊so文件進行cp操作,就會出現Segmentation fault<段錯誤>)
  • 在目錄中新建一個目錄項,并指向步驟1中的inode
  • 把數據復制到block中

rm命令

  • 減少鏈接數量,如果鏈接數為0,釋放inode(inode號也已被重新使用);
  • 如果inode被釋放,則數據塊放到可用空間列表中;
  • 刪除目錄中的目錄項

mv命令

1.如果mv命令的目標文件和源文件所在額文件系統相同:

  • 使用新文件名建立目錄項;
  • 刪除帶有原來文件名的目錄項;

注意:該操作對inode表沒有影響(除時間戳),對數據的位置也沒有影響,不移動任何數據。(即使是mv到一個已經存在的目標文件,新目錄項指源文件inode,會先刪除目標文件的目錄項,所以如果對運行中的apache的共享模塊so文件進行這種操作的話不會有問題,新的so文件inode號變了)

2.如果目標和源文件所在的問價系統不相同,就是cp和rm;

ln命令

符號(軟)鏈接:

符號鏈接的內容是它引用文件的名稱,可以是任意文件或目錄,也可以鏈接不同問價系統的文件,甚至可以鏈接不存在的文件,這就產生一般稱為斷裂的問題,還可以不斷的循環鏈接源文,但是其大小為指向的路徑字符串的長度;不增加或減少目標文件inode 的引用計數。

使用ln -s source_file softlink_file (注意:源文件(source_file)的路徑是相對路徑(也可以是絕對路徑,通常使用的是相對路徑),一定是相對于軟鏈接文件的路徑,而非相對于當前工作目錄的路徑)創建符號鏈接,在對符號鏈接進行讀寫操作的時候,系統會自動把該操作轉換為對源文件的操作,但是刪除連接文件時,系統僅僅刪除符號鏈接文件,而不是刪除源文件本身。

硬鏈接:

不允許給目錄創建硬鏈接,創建硬鏈接會正價額外的記錄項以引用文(不能跨驅動或分區創建硬鏈接),硬鏈接件對應于同一文件系統上的一個物理文件,硬鏈接節點編號是相同的,創建硬鏈接鏈接數遞增,刪除文件時:rm命令遞減計數的鏈接,文件如果存在,至少有一個鏈接數,當鏈接數為0時,該文件被刪除。

使用ln existfile newfile 命令創建硬鏈接

硬鏈接于軟連接的區別:

1、本質不同:硬鏈接是指向同一個文件,軟鏈接指向的不是同一個文件

2、刪除時:硬鏈接不受影響,軟鏈接失效

3、創建鏈接時:創建硬鏈接鏈接數加1,創建軟鏈接連接數不變

4、是否可以跨分區:硬鏈接不可以跨分區,軟鏈接可以跨分區

5、目錄是否可以創建鏈接:硬鏈接不可以對目錄創建,軟鏈接可以對目錄創建

6、硬鏈接的inode號相同,軟鏈接inode號不同

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89002

(4)
ChaogGeChaogGe
上一篇 2017-11-26
下一篇 2017-11-27

相關推薦

  • N27_第五周作業

    一、顯示當前系統上root、fedora或者user1用戶的默認shell; [root@localhost ~]# grep -E “^(root|fedora|user1)” /etc/passwd | cut -d: -f7 /bin/bash /bin/tcsh /bin/bash二、找出/etc/rc.d/init.d/fu…

    Linux干貨 2017-10-20
  • 進程和進程管理工具

    進程的相關定義以及相關工具的使用

    2017-12-17
  • N25期–第十三周作業

    1、 建立samba共享,共享目錄為/data,要求:(描述完整的過程)  1)共享名為shared,工作組為magedu;  2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;  3)添加sam…

    Linux干貨 2017-04-05
  • 8.1-用戶和組(命令篇)

    1、標準輸入輸出 我們知道,執行一個shell命令行時通常會自動打開三個標準文件,     即標準輸入文件(stdin),通常對應終端的鍵盤;     標準輸出文件(stdout)     標準錯誤輸出文件(stderr),這兩個文件都對應…

    Linux干貨 2016-08-04
  • N26 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# useradd tom [root@localhost ~]# echo "123456" | passwd –st…

    Linux干貨 2017-01-20
  • 馬哥教育網絡21期+第十三周練習博客

        馬哥教育網絡21期+第十三周練習博客 1、建立samba共享,共享目錄為/data,要求:(描述完整的過程) 1)共享名為shared,工作組為magedu; 在服務器上安裝samba ]# yum install samba 創建共享目錄/data 啟動samba的nmb和smb…

    Linux干貨 2016-10-31
欧美性久久久久