您好,登錄后才能下訂單哦!
這篇文章主要介紹了Linux的inode信息怎么查看的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Linux的inode信息怎么查看文章都會有所收獲,下面我們一起來看看吧。
inode在文件系統創建是確定,并且每個文件系統都有一個inode集合。最大的目錄大小取決于不同的文件系統。為了獲得更好的性能,通常將文件放入不同的子目錄中,而不是將所有文件放入同一個目錄。
inode是inode table中的一個條目,包含有關目錄和常規文件的元數據。inode是傳統Unix風格文件系統 (比如ext3/ext4) 上的數據結構。Linux擴展文件系統 (如ext2/ext3) 維護了一個inode的數組:inode table。inode table包含該文件系統中所有文件的列表。inode table中的各個inode項具有唯一的編號 (該文件系統唯一),即inode number。深入inode數據結構,我們發現它存儲了如下信息:
注意:inode中不存儲文件名數據
如果你希望查看文件系統的inode信息,你可以使用一些shell命令來查看文件系統的屬性
你可以使用stat命令顯示某個文件或目錄的inode信息,你必須指定文件或目錄名
# stat log.txt File: 'log.txt' Size: 212 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 591912 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-11-26 11:27:13.683598803 +0800 Modify: 2018-12-06 17:18:49.799424595 +0800 Change: 2018-12-06 17:18:49.799424595 +0800 Birth: -
命令的輸出告訴了你該文件的各種時間信息,它的所有權和權限,以及文件存儲的位置。存儲文件數據的磁盤塊信息也展示在stat命令的輸出中。
你也可以選擇只列出文件的inode number:
# stat --format=%i log.txt591912
ls命令用于列出文件/文件夾的信息。參數 -i
說明需要顯示每個文件的inode number。我們可以結合參數 -l
一起使用以列出詳細信息:
# ls -litotal 16 592404 drwxr-xr-x 6 root root 4096 Nov 2 15:01 config 591900 -rw-r--r-- 1 root root 453 Nov 25 22:25 docker-compose-single.yml 592414 -rw-r--r-- 1 root root 2714 Nov 2 15:01 docker-compose.yml 592415 drwxr-xr-x 2 root root 4096 Nov 2 15:01 mariadb
輸出的第一列顯示了文件的inode number。
默認情況下,df命令匯總可用和已用的磁盤空間。你可以通過傳遞 -i
或 --inodes
選項來接收有關可用和已使用的inode報告。
# df -iFilesystem Inodes IUsed IFree IUse% Mounted on udev 2032387 398 2031989 1% /dev tmpfs 2037595 1224 2036371 1% /run /dev/vda1 3276800 325180 2951620 10% / tmpfs 2037595 7 2037588 1% /dev/shm tmpfs 2037595 4 2037591 1% /run/lock tmpfs 2037595 16 2037579 1% /sys/fs/cgroup overlay 3276800 325180 2951620 10% /var/lib/docker/overlay2/c1955f95c338497d2f669ee0baf2706f93c2765001cafd3568b5af9ebfbe0dfd/merged overlay 3276800 325180 2951620 10% /var/lib/docker/overlay2/85a6ee4a64760a9e52efa312094092121160030132aaaf4bd32ecf5585324dfd/merged overlay 3276800 325180 2951620 10% /var/lib/docker/overlay2/692ed70766a4ee954c0f0f1b19d69b906c33ae54a618f8686f66e31e9ac05606/merged shm 2037595 1 2037594 1% /var/lib/docker/containers/2a09d78972ebb74a7631dfd5e567a2b54282886ac8d8dc54dc1f5badffc692b8/mounts/shm shm 2037595 1 2037594 1% /var/lib/docker/containers/fd9619309707c1026876a401ac22eaf8dd9bfbaceb237ee927017818a6ffa3ff/mounts/shm shm 2037595 1 2037594 1% /var/lib/docker/containers/080d0d79e069041a2997dfaf2c07e69a0518ad44271dad4688f459958dac09c5/mounts/shm tmpfs 2037595 4 2037591 1% /run/user/1000
如果分區包含很多小文件,這些信息可能會有幫助,這可能會比耗盡可用磁盤空間更快的耗盡可用的inode。
你可以使用 tune2fs -l
命令來顯示所有與inode相關的信息。
# tune2fs -l /dev/vda1 | grep inodeFilesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent sparse_super large_file uninit_bg Free inodes: 2952348 First inode: 11 Journal inode: 8 First orphan inode: 221187 Journal backup: inode blocks
上面提到過,Linux中的目錄也被視為文件。目錄是將文件名映射到其inode number的特殊文件 (此映射稱為dentry)。因此,當我們說某個目錄包含文件和其他目錄時,我們的意思是該目錄將這些文件和目錄映射到它們的inode number。這就是目錄無法容納兩個具有相同名稱的文件的原因,因為它無法使用兩個不同的inode number映射一個名稱。
當一個文件通過其父目錄映射到它到inode時,那么最頂層的目錄(即 / 目錄)如何映射到它的inode?實際上,/ 目錄的inode number是固定的,始終為2。
# stat /File: '/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd01h/64769d Inode: 2 Links: 24 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-07-24 17:05:52.740982553 +0800 Modify: 2018-12-21 18:02:05.258315357 +0800 Change: 2018-12-21 18:02:05.258315357 +0800 Birth: -
在命令 ls -l
的輸出中,權限之后和所有者之前的列是鏈接計數。 鏈接計數是指文件的硬鏈接數。 要理解硬鏈接,我們從鏈接開始。 鏈接是指向另一個文件的指針。 在Linux世界中,存在兩種類型的鏈接:
符號鏈接是一個單獨的文件,其內容指向被鏈接的文件。 要創建符號鏈接,請使用帶有-s選項的ln命令。 使用ln命令時,請確保首先引用原始文件的名稱,然后引用要創建的鏈接的名稱。
# ln -s /home/opt/sync.sh filesync
這里filesync是sync.sh的符號鏈接。 把它想象成一個快捷方式。 編輯filesync就像直接編輯原始文件一樣。 如果我們刪除或移動原始文件,鏈接將被破壞,我們的filesync文件將不再可用。
ls -l
命令顯示生成的文件是符號鏈接。 這由 ls -l
輸出的第一個位置中的字母l以及列表末尾的箭頭指示,該箭頭表示鏈接所指向的文件。
# ls -l filesynclrwxrwxrwx 1 root root 20 Apr 7 06:08 filesync -> /home/opt/sync.sh
比較符號鏈接和原始文件時,您會發現它們之間存在明顯差異。
# ls -il /home/opt/sync.sh filesync258674 lrwxrwxrwx 1 root root 20 Apr 7 06:08 filesync -> /home/opt/sync.sh 517333 -rw-r----- 1 root root 5 Apr 7 06:09 /home/opt/sync.sh
原始文件只是一個直接連接到inode的文件,而符號鏈接指向該文件。 符號鏈接的大小是它引用的文件名稱的字節數,因為符號鏈接中沒有其他信息可用。
要了解硬鏈接是什么,關鍵是要了解文件的標識是其inode編號,而不是其名稱。 硬鏈接是一個引用inode的名稱。 這意味著如果file1有一個名為file2的硬鏈接,那么這兩個文件都引用相同的inode。 因此,當您為文件創建硬鏈接時,您真正要做的就是為inode添加一個新名稱。 為此,請使用不帶選項的ln命令。
# ls -l /home/opt/sync.sh -rw-r----- 1 root root 5 Apr 7 06:09 /home/bobbin/sync.sh# ln /home/opt/sync.sh synchro
讓我們來比較這兩個文件
# ls -il /home/bobbin/sync.sh synchro517333 -rw-r----- 2 root root 5 Apr 7 06:09 /home/opt/sync.sh 517333 -rw-r----- 2 root root 5 Apr 7 06:09 synchro
關于硬鏈接的有趣之處在于原始文件和鏈接之間沒有區別:它們只是連接到同一個inode的兩個名稱。
正如您必須注意到的,與軟鏈接不同,硬鏈接不是特殊文件。 現在,鏈接計數是文件硬鏈接的數字。 因此,創建硬鏈接后鏈接計數會增加,如上圖所示。 這些硬鏈接有兩個限制:
關于“Linux的inode信息怎么查看”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Linux的inode信息怎么查看”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。