參考:
http://www.ruanyifeng.com/blog/2011/12/inode.html
http://www.opsers.org/base/one-day-the-little-learning-linux-inode-detailed.html
http://www.cnblogs.com/sonic4x/archive/2011/08/05/2128543.html
定義:
這種儲存文件元信息的區域就叫做inode,中文譯名爲"索引節點"。
- 硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB)。
- 多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。
- 文件數據都儲存在"塊"中,必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。
inode包含文件的元信息,具體來說有以下內容:
- 文件的字節數
- 文件擁有者的User ID
- 文件的Group ID
- 文件的讀、寫、執行權限
- 文件的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。
- 鏈接數,即有多少文件名指向這個inode
- 文件數據block的位置
查看:
- stat
- ls -i
大小:
inode也會消耗硬盤空間,硬盤格式化時操作系統自動將硬盤分成兩個區域:
- 數據區,存放文件數據
- inode區(inode table),存放inode所包含的信息。
每個inode節點的大小,一般是128字節或256字節。
inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。
df -i查看
號碼機制
打開文件步驟:
- 系統找到這個文件名對應的inode號碼;
- 通過inode號碼,獲取inode信息;
- 根據inode信息,找到文件數據所在的block,讀出數據。
總結:
- 1、一個Inode對應一個文件,而一個文件根據其大小,會佔用多塊blocks。
- 2、更爲準確的來說,一個文件只對應一個Inode。因爲硬鏈接其實不是創建新文件,只是在Directory中寫入了新的對應關係而已。
- 3、當我們刪除文件的時候,只是把Inode標記爲可用,文件在block中的內容是沒有被清除的,只有在有新的文件需要佔用block的時候,纔會被覆蓋。
硬鏈接/軟鏈接
概念:
- 硬鏈接 hard link 對目標文件,生成一條新的到達路徑。只有該文件所有硬鏈接都被刪除,該文件才被真正刪除。
- 軟鏈接 symbolic link 生成一個保存目標文件位置信息的文件
硬連接的2個限制:
- l 不允許給目錄創建硬鏈接
- l 只有在同一文件系統中的文件之間才能創建鏈接。 即不同硬盤分區上的兩個文件之間不能夠建立硬鏈接。這是因爲硬鏈接是通過結點指向原始文件的,而文件的i-結點在不同的文件系統中可能會不同。
inode節點:
- 硬鏈接文件和原始文件inode編號相同
- 軟鏈接文件和原始文件inode編號不同