No space left on device

一:

設置crontab 時提示No space left on device
用df -k 檢查還有空間

用df -i  顯示 /var 已佔用100%,如果inode耗盡,則系統上將不能創建文件。

在/var/spoo/clientmqueue/下有超多的文件 ls 半天沒反應
用rm -rf * 會自動跳出root,用xargs來解決。

# cd /var/spool/clientmqueue

# ls | xargs rm -f


原因分析:系統中cron執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啓動所以就產生了這些文件;
解決辦法:  將crontab裏面的命令後面加上> /dev/null 2>&1

二:

故障現象:

1 when you create a new directory or file , system will say : No space left on device

[shelladm@linux /var]# mkdir aa

mkdir: cannot create directory `aa': No space left on device


2 when create crontab for account shelladm , you will receive error information as follows:


"crontab.6655" 1L, 13C written

crontab: installing new crontab

cron/tmp.6655: No space left on device

crontab: edits left in /tmp/crontab.6655

處理步驟:

1 檢查分區使用率

[root@linux ~]# df -lk
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda2              3020172    136008   2730744   5% /
/dev/hda1               101089      9378     86492  10% /boot
/dev/hda7            105708092  38996880  61341488  39% /b2006
none                   1028548         0   1028548   0% /dev/shm
/dev/hda3              3020172   1421092   1445660  50% /usr
/dev/hda6               497829    371795    100332  79% /var
分區/var的使用率只有79%,系統有空間可以用

2 檢查/var/lock下的文件,刪除/var/lock/subsys/nfs後,touch /var/aa,成功創建文件,刪除/var/aa

3 發現刪除/var/lock下的任意一個文件後

[root@linux /var]#touch /var/aa        -------------------成功

[root@linux /var]# touch aa1                -------------------失敗
touch: creating `aa1': No space left on device

4 將檢查擴大到/var下的其他目錄,
[root@linux icons]# cd /var/www/icons
[root@linux icons]# mv a.gif /tmp
[root@linux icons]# mv a.png /tmp     -------------------移走兩個文件
[root@linux icons]# df -li
[root@linux icons]# touch aa
[root@linux icons]# touch bb
[root@linux icons]# touch cc
touch: creating `cc': No space left on device -----------只能創建兩個文件,當創建第三個文件時,出錯

5 懷疑分區/var的inode用盡導致上述問題,檢查inode使用率

[root@linux icons]# df -li
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hda2             384000   23698  360302    7% /
/dev/hda1              26104      41   26063    1% /boot
/dev/hda7            13434880    7964 13426916    1% /b2006
none                  257137       1  257136    1% /dev/shm
/dev/hda3             384000   78026  305974   21% /usr
/dev/hda6             128520  128520       0  100% /var
發現/var的inode使用率已經達到100%,空餘的inode爲0

6 分區/var沒有配置quota ,平均每個inode的佔用空間爲:497829k(var size)/128520(inodes)=3.87k,說明分區的最小block爲4k,無法增加inode限額。

7 發現/var/spool/clientmqueue下面有太多的文件,共有127679個,佔用了127679/128520(inodes)=99.3%的inode
  系統的郵件配置有問題,導致系統發出的郵件堆積在隊列中,佔用的大量的inode.


處理方法:確認/var/spool/clientmqueue下的文件已經無用後,刪除之。然後/var寫入正常。
          最好的解決辦法是重新設置系統郵件,使其能正常發送。

刪除文件後的inode使用情況
[root@linux clientmqueue]# df -li
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hda2             384000   23698  360302    7% /
/dev/hda1              26104      41   26063    1% /boot
/dev/hda7            13434880    7964 13426916    1% /b2006
none                  257137       1  257136    1% /dev/shm
/dev/hda3             384000   78026  305974   21% /usr
/dev/hda6             128520    4561  123959    4% /var

 

結論:分區/var的inode全部用盡,free inode爲0,導致無法創建新的文件或目錄,以後遇到類似的問題要注意

      用df -li 檢查inode的使用情況。
################################################################################

當啓動apache的時候報這種錯:

No space left on device: Couldn't create accept lock
df -h 一下發現不是磁盤空間的問題,google了一下發現是系統的Semaphore Arrays不夠用了,用以下命令可以查看所有的Semaphore Arrays:ipcs -s  然後用這行命令刪除所有的Semaphore Arrays即可:ipcs -s | grep nobody | perl -lane 'print `ipcrm sem $F[1]`'  (其中nobody表示用戶名)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章