inode是用來存儲文件元信息的區域。中文譯名叫作「索引節點」。node
簡單來講,inode 指示了一個文件的基本信息,如inode編號、修改時間、文件的位置等,就如同一本書的目錄,會直接告訴你想看的章節是在第幾頁。不一樣的是,書是以頁爲單位的,而 linux 文件存取是以「塊」爲單位的。
操做系統在讀取硬盤的時候,會一次性讀取一個「塊」(一個「塊」的大小每每是4kb,包含了連續8個扇區,每一個扇區存儲512個字節)。而inode就告訴了文件位於哪一個「塊」,因而系統就會從這個「塊」開始讀取內容,咱們就能夠看到這個文件的內容。
每一個文件都有對應的inode,存儲着關於這個文件的基本信息。linux 系統不使用文件名,而使用 inode 號來識別文件。對於使用者,咱們是經過文件名打開的文件;可是對於系統內部,是分爲三步的:linux
inode 包含了文件的如下基本信息:windows
查看inode內容可使用命令:stat -i 和 ls -iapp
要理解文件的操做對 inode 的影響,先要理解目錄的原理。目錄對外表現是一個容器,存放着子文件和子目錄,實際上在系統內部,目錄自己也是一個文件,目錄文件的內容便是該目錄下的文件名與 inode 號的映射表(即一個個的目錄項)。所以,linux 訪問一個文件時,要先查詢到上一級目錄,根據目錄內容查找到文件對應的 inode 號,而後讀取對應的 block。ide
目標文件名指向inode記錄
(inode記錄沒有影響(除時間戳),數據位置沒有變化)操作系統
通常狀況下,文件名和 inode 號是一一對應,可是也有可能多個文件名指向同一個 inode 號,即硬連接。硬連接能夠實現用不一樣的文件名訪問同一個文件。.net
軟連接也能夠經過不一樣的文件名訪問同一塊數據,可是與硬連接不一樣的是,兩個文件名的 inode 是不同的。那如何訪問同一塊區域呢?好比文件 A 是文件 B 的軟鏈接,那麼文件 A 的內容存放的是文件 B 的路徑名(能夠經過這個找到文件 B 的目錄項)。所以訪問 A 時,會讀取文件 B 的路徑,進而讀取文件 B 的內容。這樣,對外表現來看,文件 A 和文件 B 的內容就相同了。相似於 windows 系統下的快捷方式。blog
建立軟連接語法:
ln -s [source file] [new file]索引
在生產環境中,建立軟連接通常選擇相對路徑,這樣在數據總體遷移中,軟連接保持相對關係不受根目錄影響。特殊須要強調的是:源文件路徑是相對於新連接文件的相對路徑,不是相對當前工做目錄的相對路徑get
例如:
本文參考文章
做者:HappyRocking
來源:CSDN
原文:https://blog.csdn.net/HappyRocking/article/details/80671997 版權聲明:本文爲博主原創文章,轉載請附上博文連接!