1. 程式人生 > >inode引起的Linux無法建立新檔案,磁碟空間不足

inode引起的Linux無法建立新檔案,磁碟空間不足

  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/下所有檔案