
簡介索引節(jié)點(diǎn)Index Node是Linux/類unix系統(tǒng)文件系統(tǒng)上的一種數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)有關(guān)文件或目錄的元數(shù)據(jù)。它包含文件的所有信息除了文件名和數(shù)據(jù)。inode在文件系統(tǒng)如何存儲(chǔ)和檢索數(shù)據(jù)方面起著至關(guān)重要的作用。當(dāng)在Linux系統(tǒng)上創(chuàng)建一個(gè)文件時(shí)系統(tǒng)會(huì)為它分配一個(gè)inode。這個(gè)inode包含有關(guān)文件的詳細(xì)信息如權(quán)限、所有者、大小以及文件數(shù)據(jù)塊在磁盤上的位置。Inode 包含什么File type常規(guī)文件、目錄、符號(hào)鏈接等File permissions文件的讀、寫和執(zhí)行權(quán)限Owner文件所有者的用戶 ID (UID)Group文件組的組 ID (GID)File size以字節(jié)為單位Timestampsctime最后一次改變inode的時(shí)間mtime文件數(shù)據(jù)的最后修改時(shí)間atime上次訪問文件的時(shí)間Link count該文件的硬鏈接數(shù)Pointers to data blocks包含文件實(shí)際數(shù)據(jù)的塊的地址這些通常是間接指針查看 Inode 信息使用ls -ils 命令可以與 -i 選項(xiàng)一起使用來顯示文件的 inode 編號(hào)ls -i filename示例輸出ls -i myfile.txt 1234567 myfile.txt使用statstat 命令提供有關(guān)文件的更多詳細(xì)信息stat filename示例輸出$ stat myfile.txt File: myfile.txt Size: 1024 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 1234567 Links: 1 Access: 2025-02-06 10:15:47.000000000 0000 Modify: 2025-02-05 09:24:38.000000000 0000 Change: 2025-02-05 09:24:38.000000000 0000 Birth: -Inode 在文件操作中的作用文件創(chuàng)建當(dāng)創(chuàng)建文件時(shí)文件系統(tǒng)會(huì)為其分配一個(gè)inode用于存儲(chǔ)文件的元數(shù)據(jù)。文件名存儲(chǔ)在鏈接到inode的目錄條目中硬鏈接硬鏈接是指向索引頁的指針。多個(gè)文件名可以指向相同的索引節(jié)點(diǎn)并且彼此之間無法區(qū)分。它們共享相同的inode但可以位于不同的目錄中。直到所有硬鏈接被刪除文件的數(shù)據(jù)才會(huì)被刪除。創(chuàng)建一個(gè)硬鏈接ln original_file hard_link_name符號(hào)軟鏈接符號(hào)鏈接 (symlink) 是一種特殊類型的文件它通過存儲(chǔ)路徑指向另一個(gè)文件或目錄。符號(hào)鏈接有自己的inode但使用路徑指向目標(biāo)文件創(chuàng)建一個(gè)軟鏈接ln -s target_file symlink_name文件刪除當(dāng)一個(gè)文件被刪除時(shí)它的索引節(jié)點(diǎn)中的鏈接數(shù)會(huì)減少。一旦鏈接計(jì)數(shù)達(dá)到零即沒有更多的文件名指向該inodeinode及其數(shù)據(jù)塊將被釋放以供重用。但是inode本身直到不再使用時(shí)才會(huì)被刪除。索引節(jié)點(diǎn)表索引節(jié)點(diǎn)表是存儲(chǔ)文件系統(tǒng)所有索引節(jié)點(diǎn)的內(nèi)部結(jié)構(gòu)。該表是在格式化文件系統(tǒng)時(shí)創(chuàng)建的它包含固定數(shù)量的inode。如果文件系統(tǒng)耗盡了inode則無法創(chuàng)建新文件即使磁盤上有可用的空閑空間。這種情況在具有許多小文件的文件系統(tǒng)上尤其常見。檢查文件系統(tǒng)上可用的 inodedf -i示例輸出Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 524288 10000 514288 2% / # 文件系統(tǒng)有 524,288 個(gè) inode其中 10,000 個(gè)已被使用514,288 個(gè)是空閑的索引節(jié)點(diǎn)限制有限的Inode數(shù)量每個(gè)文件系統(tǒng)都有固定數(shù)量的Inode這些Inode是在創(chuàng)建文件系統(tǒng)時(shí)創(chuàng)建的。如果Inode用盡即使有可用磁盤空間也無法創(chuàng)建新文件無文件名存儲(chǔ)inode不存儲(chǔ)文件名因此文件名與inode結(jié)構(gòu)無關(guān)。如果文件被重命名inode保持不變硬鏈接限制某些文件例如使用某些選項(xiàng)掛載的目錄和文件系統(tǒng)不能有硬鏈接通過 Inode 查找文件find /path/to/search -inum inode_number示例用法find / -inum 1234567