一、inode概念
inode(index node):譯爲“索引節點”,是理解Linux文件系統和硬盤存儲的基礎。
理解inode,要從文件儲存說起。文件儲存在硬盤上,硬盤的最小存儲單位叫做“扇區”。每個扇區能儲存512字節(相當於0.5KB)操作系統在讀取硬盤的時候,並非逐個讀取扇區,這種方式效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個“塊”(block)。這種由多個扇區組成的“塊”,是文件存取的最小單位。“塊”的大小,最常見的是4kb,即連續八個sector組成一個block。
文件數據都存放在block中,那麼與block存放相關聯的,必須有一個地方儲存文件的元信息,如文件的創建者、文件的創建日期、文件的大小等。這種儲存文件元信息的區域就叫inode。
二、inode表結構
三、inode內容
每一個inode(索引節點)是一個表項,包含有關文件的元數據信息,包括:
△ 文件類型:
“-” :普通文件
“d”:目錄
“c”:字符設備文件
“b”:塊設備文件
“p”:管道文件
“s”:套接字文件
“l” :鏈接文件
△ 權限:
>讀(r)
>寫(w)
>執行(x)
△ 文件所屬:
>UID
>GID
△ 硬鏈接數(指向這個文件名路徑名稱個數)
△ 文件大小、inode數
△ 時間戳:
>ctime:文件的inode上一次變動的時間
>mtime:文件內容上一次變動的時間
>atime:文件上一次打開的時間
△ 文件數據block的位置:指向磁盤上文件的數據塊指針
△ 有關文件的其他數據
附:幾個相關命令的理解
-
cp:分配一個空閒的inode號,在inode表中生成新條目;在目錄中創建一個目錄項,將名稱與inode編號關聯;拷貝數據生成新的文件
-
mv:
如果mv命令的目標和源在相同的文件系統,作爲mv 命令>用新的文件名創建對應新的目錄項 >刪除舊目錄條目對應的舊的文件名 >不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!
如果目標和源在一個不同的文件系統, mv相當於cp和rm
-
rm:鏈接數遞減,從而釋放的inode號可以被重用;把數據塊放在空閒列表中;刪除目錄項;數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋
- 鏈接
△ 硬鏈接:
>創建硬鏈接會增加額外的記錄項以引用文件
>對應於同一文件系統上一個物理文件
>每個目錄引用相同的inode號
>創建時鏈接數遞增
>刪除文件時:
>rm命令遞減計數的鏈接
>文件要存在,至少有一個鏈接數
>當鏈接數爲零時,該文件被刪除
>不能跨越驅動器或分區
>語法:
ln filename [linkname ]
△ 軟鏈接(符號鏈接):
一個符號鏈接指向另一個文件
ls - l的 顯示鏈接的名稱和引用的文件
一個符號鏈接的內容是它引用文件的名稱
可以對目錄進行
可以跨分區
指向的是另一個文件的路徑;其大小爲指向的路徑字符串的長度;不增加或減
少目標文件inode的引用計數;
語法:
ln -s filename [linkname]