Linux索引節點 Inode 用滿導致空間不足

2022-05-10 12:51:33 字數 1614 閱讀 2509

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

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

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

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

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

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

如果watch -n 1 「df -i」一下, 然後去建立乙個檔案, 會發現已用的加一,未用的減一

簡單了解下inode在檔案系統中的地位:

linux會為每乙個檔案分配乙個唯一的inode節點。在linux中,檔案的檔名、檔案屬性、檔案內容是分別儲存的:檔名存放在目錄項(即 dentry)中,檔案屬性存放在inode中,檔案內容存放在block中。linux在查詢檔案時,首先先讀取dentry,dentry中儲存的文 件名和inode編號的乙個對映表, 根據這個表找到inode編號,再根據inode找到磁碟中的檔案。

可以用ls -i檢視檔案對應的inode編號, 也可以直接stat乙個檔案, 會有很全的資訊。

刪除/data/cache目錄中的部分檔案,釋放出/data分割槽的一部分inode。

1

[root@iz23b44crpgz /]# find /var/spool/clientmqueue -type f -print -exec rm -f {} \;

這個命令中 /var/spool/clientmqueue 是要刪除的檔案所在的目錄 -type f這個引數限定find只查詢普通檔案(即不是管道檔案,不是塊檔案,不是鏈結檔案,不是目錄等),防止誤刪除系統檔案。

原因分析:系統中有使用者開啟了cron,而cron中執行的程式有輸出內容,輸出內容會以郵件形式發給cron的使用者,而sendmail沒有啟動所以就產生了這些檔案;

解決辦法:

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

Linux 索引節點 inode

理解 inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存 512 位元組 相當於 0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成的 塊 是檔...

Linux索引節點 Inode 用滿導致空間不足

1 問題 在建立新目錄和檔案是提示 no space left on device 按照以前的情況,很有可能是伺服器空間又被塞滿了,通過命令檢視,發現還有剩餘。再用df i檢視了一下 分割槽的索引節點 inode 發現已經用滿 已用 100 導致系統無法建立新目錄和檔案。2 問題原因分析 inode...

linux 索引節點 inode 詳解

1 inode簡介 理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成...