天天看點

Linux索引節點(Inode)用滿導緻空間不足

1、問題:

在建立新目錄和檔案是提示“no space left on device”!按照以前的情況,很有可能是伺服器空間又被塞滿了,通過指令檢視,發現還有剩餘。

Linux索引節點(Inode)用滿導緻空間不足

再用df -i檢視了一下/分區的索引節點(inode),發現已經用滿(已用=100%),導緻系統無法建立新目錄和檔案。

Linux索引節點(Inode)用滿導緻空間不足

2、問題原因分析:

Inode譯成中文就是索引節點,每個儲存設備(例如硬碟)或儲存設備的分區被格式化為檔案系統後,應該有兩部份,一部份是inode,另一部份是 Block,Block是用來存儲資料用的。而inode呢,就是用來存儲這些資料的資訊,這些資訊包括檔案大小、屬主、歸屬的使用者組、讀寫權限等。 inode為每個檔案進行資訊索引,是以就有了inode的數值。作業系統根據指令,能通過inode值最快的找到相對應的檔案。

而這台伺服器的Block雖然還有剩餘,但inode已經用滿,是以在建立新目錄或檔案時,系統提示磁盤空間不足。

Inode的數量是有限制的,每個檔案對應一個Inode,那麼如何檢視inode的最大數量呢?

Linux索引節點(Inode)用滿導緻空間不足

可以看到Inode的總量,已經使用的Inode數量,和剩餘數量。

3、解決:

1)查找滿的目錄:

[root@abc sbin]# for i in /*; do echo $i; find $i | wc -l; done
/bin
121
...
/sys
8145
/tmp
7
/usr
56840
/var
8019      

然後找到inode占用最多額目錄下,再用上面指令檢視。

2)删除檔案占用多的目錄:

進入目錄直接rm -rf 可能會卡死,可以使用下面方式:

find dir -type f -name '*'  | xargs rm      

或者

cd dir
ls | xargs rm -f      

4、拓展:

系統中有使用者開啟了cron,而cron中執行的程式有輸出内容,輸出内容會以郵件形式發給cron的使用者,而sendmail沒有啟動是以就産生了這些檔案;

解決辦法:

将crontab裡面的指令後面加上 > /dev/null 2>&1 或者crontab裡面的指令後面加上 > /dev/null

繼續閱讀