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號并不是無限的,如果一個分區的節點數被使用完了,那么即使磁盤空間還有剩余也不能再存放任何數據??梢允褂胐f -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 23:27
下一篇 2017-11-27 11:00

相關推薦

  • 馬哥網絡教育班第21期+第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@localho…

    Linux干貨 2016-08-02
  • M20-1正則表達式有話說

    1、找出ifconfig命令結果中本機的所有ipv4地址  [root@centos7 ~]# ifconfig |grep -E -o '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-…

    Linux干貨 2016-08-05
  • 配置邏輯卷·設定LVM快照·btrfs文件系統

    _ueditor_page_break_tag_ 配置邏輯卷,設定LVM快照,btrfs文件系統                 邏輯卷管理器( LVM)v允許對卷進行方便操作的抽象層,包括重新設定文…

    Linux干貨 2016-09-01
  • Linux用戶和組的配置相關文件

    Linux用戶和組的配置相關文件     在linux下,用戶的相關配置文件一般是放在/etc目錄下,此文主要對以下幾個配置文件作介紹:/etc/passwd;/etc/shadow;/etc/group;/etc/gpasswd   一、/etc/passwd:此目錄下放的是用戶的屬性信息,包括組名、UID、GID等,它格式固…

    Linux干貨 2016-10-30
  • issue設置和定時關機練習

    /etc/issue內的代碼意義 \l 顯示第幾個終端機接口(tty)\m 顯示硬件的等級 (x86_64)\n 顯示主機的網絡名稱 (zcl-domain)\r 操作系統的版本 (2.6.32-642.e16)\t 顯示本地端時間的時間(20:22:12) \d顯示本地端的日期 (2016-8-5)\s 操作系統的名稱(linux)  練習 1,…

    Linux干貨 2016-08-05
  • 文本處理學習小結

    抽取文本的工具 文件內容:less和cat 文件截?。篽ead和tail 按列抽?。篶ut 按關鍵字抽?。篻rep 文件查看 復制標準輸入到標準輸出 文件查看命令:cat, tac,rev cat命令: cat [OPTION]… [FILE]… -E: 顯示行結束符$ -n: 對顯示出的每一行進行編號 -A:顯示所有控制符 -b:非…

    Linux干貨 2016-08-07
欧美性久久久久