Linux中inode詳解,硬連接和軟連接介紹

inode 詳解

1.inode 定義

inode是用來存儲文件元信息的區域。中文譯名叫作「索引節點」。node

  簡單來講,inode 指示了一個文件的基本信息,如inode編號、修改時間、文件的位置等,就如同一本書的目錄,會直接告訴你想看的章節是在第幾頁。不一樣的是,書是以頁爲單位的,而 linux 文件存取是以「塊」爲單位的。
操做系統在讀取硬盤的時候,會一次性讀取一個「塊」(一個「塊」的大小每每是4kb,包含了連續8個扇區,每一個扇區存儲512個字節)。而inode就告訴了文件位於哪一個「塊」,因而系統就會從這個「塊」開始讀取內容,咱們就能夠看到這個文件的內容。
每一個文件都有對應的inode,存儲着關於這個文件的基本信息。linux 系統不使用文件名,而使用 inode 號來識別文件。對於使用者,咱們是經過文件名打開的文件;可是對於系統內部,是分爲三步的:linux

  1. 系統找到這個文件名對應的 inode 號
  2. 經過 inode 號,獲取 inode 信息
  3. 根據 inode 信息,找到文件數據所在的 block,讀取內容

2.inode 內容

inode 包含了文件的如下基本信息:windows

  • 文件的字節數
  • inode 編號
  • 文件擁有者的 Uid
  • 文件所屬group的 Gid
  • 文件的讀、寫、執行權限
  • 文件的時間戳,共有三個:
    change:inode 上一次變更的時間
    modify:文件內容上一次變更的時間
    access:文件上一次打開的時間
  • 連接數,即有多少文件名指向這個 inode
  • 文件數據 block 的位置

查看inode內容可使用命令:stat -i 和 ls -iapp

3.目錄原理

  要理解文件的操做對 inode 的影響,先要理解目錄的原理。目錄對外表現是一個容器,存放着子文件和子目錄,實際上在系統內部,目錄自己也是一個文件,目錄文件的內容便是該目錄下的文件名與 inode 號的映射表(即一個個的目錄項)。所以,linux 訪問一個文件時,要先查詢到上一級目錄,根據目錄內容查找到文件對應的 inode 號,而後讀取對應的 block。ide

4.文件操做原理

cp命令

  1. 分配一個空閒的inode號,inode表中新增一條索引記錄
  2. 在目錄中新建一個目錄項,並指向步驟一中的inode號關聯
  3. 將數據複製到block中

rm命令

  1. 減小要刪除文件連接數,若是連接數變爲0,則釋放inode號
  2. 數據block放到空閒列表中
  3. 刪除目錄項
    (數據文件不會立刻刪除,當新的文件覆蓋數據塊,則數據刪除,若沒有覆蓋,則還能夠恢復)

mv命令

若是源文件和目標文件在一個文件系統

  1. 目標文件目錄中新建目錄項
  2. 源文件目錄中的目錄項
  3. 目標文件名指向inode記錄
    (inode記錄沒有影響(除時間戳),數據位置沒有變化)操作系統

    若是目標文件和源文件屬於不一樣文件系統,則至關於 cp + rm。

ln命令

硬連接

  通常狀況下,文件名和 inode 號是一一對應,可是也有可能多個文件名指向同一個 inode 號,即硬連接。硬連接能夠實現用不一樣的文件名訪問同一個文件。.net

軟連接

  軟連接也能夠經過不一樣的文件名訪問同一塊數據,可是與硬連接不一樣的是,兩個文件名的 inode 是不同的。那如何訪問同一塊區域呢?好比文件 A 是文件 B 的軟鏈接,那麼文件 A 的內容存放的是文件 B 的路徑名(能夠經過這個找到文件 B 的目錄項)。所以訪問 A 時,會讀取文件 B 的路徑,進而讀取文件 B 的內容。這樣,對外表現來看,文件 A 和文件 B 的內容就相同了。相似於 windows 系統下的快捷方式。blog

建立軟連接語法:
ln -s [source file] [new file]索引

  在生產環境中,建立軟連接通常選擇相對路徑,這樣在數據總體遷移中,軟連接保持相對關係不受根目錄影響。特殊須要強調的是:源文件路徑是相對於新連接文件的相對路徑,不是相對當前工做目錄的相對路徑get

例如:

硬連接與軟連接的區別

  1. 本質不一樣,硬連接指向同一個文件,軟連接指向文件不一樣
  2. 跨分區,硬連接不支持跨分區,軟連接能夠跨分區
  3. inode編號,硬連接inode編號相同,軟連接inode編號不一樣
  4. 目錄,硬連接不支持目錄,軟連接能夠對目錄建立
  5. 建立硬連接時,連接數加1,建立軟連接時,連接數不變
  6. 硬連接屬於平等關係,軟連接屬於依賴關係,刪除原文件效果不一樣

本文參考文章
做者:HappyRocking
來源:CSDN
原文:https://blog.csdn.net/HappyRocking/article/details/80671997 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索