歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux命令

測試Linux平台Inode使用情況的過程命令

Linux命令

    Linux/Unix like OS 的文件系統中每個目錄樹中的節點並不是像 Windows 那樣直接包含文件的具體信息,而只包含了文件名和 Inode number .通過 Inode number 所找到對應於文件名的 Inode 節點中才真正記錄了文件的大小/物理地址/所有者/訪問權限/時間戳/被硬鏈接的次數等實際的 metadata .因此你可以在 Linux 系統中通過硬鏈接( hard link ) 的方式給某個文件創建無數個位於不同目錄下的文件名,而實際的文件數據只需要一份拷貝。

    但也正因為這種文件系統的結構,當你在 Linux 中進行 IO 操作的時候,需要的資源除了磁盤空間以外,還要有剩余的 Inode 才行。缺省情況下, Linux 在系統安裝過程中按照1個 Inode 對應 2k 磁盤空間來計算每個分區的最大 Inode 數。一旦文件系統創建之後,每個分區可用 Inode 數就無法進行動態調整。正常來說,一般不太會出現某個分區的 Inode 耗盡而磁盤空間尚余的情況,除非像我碰到的這樣垃圾小文件瘋長而又沒進行有效的清理。但如果確實需要的話,可以在創建文件系統(比如用 mke2fs )的時候根據實際需要來調整這個參數(比如分區如果用於存放超大視頻文件的話 Inode 的數量可以少一些;如果打算存放的文件是大量小於 2k 的迷你文件的話就要考慮多創建一些 Inode)。

    使用df -i命令可以看到每個分區的總inode數目和被使用的以及空閒的inode數目

    首先我們測試一下將Inode占用完的情況:先找到一個200K大小的文件(test.log),然後通過如下命令將其拆成數個小文件:

    split -a 10 -b 1 test.log z

    多次重復以上的動作,即可將Inode全部占用完。此時導致的現象是雖然通過df -k可以查看系統還存在剩余的空間,但由於無法分配Inode,導致無法新建新文件了。

    通過如下命令可以將這些大量的小文件刪除:

    find ~ -name "*.log" | xargs -L rm

    注意不能直接通過rm命令刪除,因為rm命令是將被刪除的文件作為一個又一個參數傳遞進來的,當被刪除的文件過多時,容易導致出現參數過長的錯誤提示:arg list too long

    當Inode被用盡時,也會導致Oracle的監聽進程啟動錯誤。

Copyright © Linux教程網 All Rights Reserved