inode引起的Linux無法建立新檔案,磁碟空間不足
阿新 • • 發佈:2018-12-24
df -h,判斷硬碟空間是否已經滿了,佔用率達100% ,就可以斷定該分割槽滿了。
df -ia,佔用率達100%,也會導致無法建立新檔案。一般都是存在大量小檔案引起的。
inode包含檔案的元資訊,具體來說有以下內容: * 檔案的位元組數 * 檔案擁有者的User ID * 檔案的Group ID * 檔案的讀、寫、執行許可權 * 檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案內容上一次變動的時間,atime指檔案上一次開啟的時間。 * 連結數,即有多少檔名指向這個inode * 檔案資料block的位置 每個檔案都必須有一個inode,因此有可能發生inode已經用光,但是硬碟還未存滿的情況。這時,就無法在硬碟上建立新檔案。
inode滿了一般就是垃圾小檔案越多造成的,linux下有很多服務會生成日誌檔案,如果處理不當,幾年下來刪除都是個頭痛事(上萬檔案後 rm 使用就困難,甚至rm無法全部刪除)。常見 crontab 定時服務就會產生郵件日誌,一般不需要郵件的可在 crontab -e 中最上面新增一行 MAILTO="" 關閉郵件傳送。
當找到的目錄中存在上百萬檔案時 rm 是無法一次性刪除的,可以使用rsync命令來刪除:
mkdir /tmp/del_path #建立臨時空目錄
rsync --delete -a -H -v /tmp/del_path/ /val/logs/ #刪除/val/logs/下所有檔案