磁盘df看还有剩余空间,但是创建文件时报错,提示磁盘已经满问题解决
一次在磁盤上建立文件夾的時候,報錯提示設備上沒有空間。但是df -h查看磁盤
?
[root@~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 19G 2.1G 16G 12% /
/dev/sda1 190M 12M 169M 7% /boot
tmpfs 139M 0 139M 0% /dev/shm
/dev/drbd0 1.9G 1023M 810M 56% /data
[root@~]# pwd
/data
[root@~]# mkdir test
mkdir: 無法創建目錄 “test”: 設備上沒有空間
?
問題:磁盤空間只使用了56%仍有剩余空間,但是建立文件和建立文件夾就是提示設備沒有空間了。
分析:在磁盤上建立文件的時候需要兩個條件:
????????1.磁盤空間,
????????2.需要有inode? 任何一個滿了都回提示設備沒有空間。
此處具體原因是由于磁盤的inode分配完了,導致提示磁盤滿。
可以使用df -ia查看磁盤詳細信息。
[root@~]# df -ia
文件系統 Inode (I)已用 (I)可用 (I)已用% 掛載點
/dev/sda3 4928640 89934 4838706 2% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
/dev/sda1 50200 35 50165 1% /boot
tmpfs 35352 1 35351 1% /dev/shm
none 0 0 0 - /proc/sys/fs/binfmt_misc
/dev/drbd0 251392 251392 0 100% /data
以上查看到(I) 使用了100%
?
解決:刪除一些無用的文件或者文件夾,釋放inode。
?
關于磁盤空間中索引節點爆滿的問題還是挺多的,自己本想寫寫處理方案,但是看到了網友們文采不錯,對于此問題的處理方法都比較妥當,就借過來跟大家分享下:
一、發現問題:
在一臺配置較低的Linux服務器(內存、硬盤比較小)的/data分區內創建文件時,系統提示磁盤空間不足,用df -h命令查看了一下磁盤使用情況,發現/data分區只使用了66%,還有12G的剩余空間,按理說不會出現這種問題。
二、分析問題:
后來用df -i查看了一下/data分區的索引節點(inode),發現已經用滿(IUsed=100%),導致系統無法創建新目錄和文件。
inode譯成中文就是索引節點,每個存儲設備(例如硬盤)或存儲設備的分區被格式化為文件系統后,應該有兩部份,
一部份是inode,而inode呢,就是用來存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。
另一部份是Block,Block是用來存儲數據用的。inode為每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,能通過inode值最快的找到相對應的文件。
而這臺服務器的Block雖然還有剩余,但inode已經用滿,因此在創建新目錄或文件時,系統提示磁盤空間不足。
三、查找原因:
/data/cache目錄中存在數量非常多的小字節緩存文件,占用的Block不多,但是占用了大量的inode。
四、解決方案:
1、刪除/data/cache目錄中的部分文件,釋放出/data分區的一部分inode,特別要留意那些spool出來的文件,這種文件一般會占用比較多的節點,因為比較小而且零碎,同時要多留意日志文件信息等
2、用軟連接將空閑分區/opt中的newcache目錄連接到/data/cache,使用/opt分區的inode來緩解/data分區inode不足的問題:
ln -s /opt/newcache /data/cache
3、更換服務器,用高配置的服務器替換低配置的服務器。很多時候用錢去解決問題比用技術更有效,堆在我辦公桌上5臺全新的 DELL PowerEdge 2950 服務器即將運往IDC機房。一般不建議
?
關于磁盤的inode滿100%--i節點大爆發
http://blog.sina.com.cn/s/blog_79d1f5e00100qywq.html
原因:
? ? 通常是發現磁盤沒有滿但是無法寫入文件。提示“no space left on device”
? ? 用df -i 查看,應該會發現相應的分區是100%
? ? 一般都是crontab的job有問題,造成/var/spool/clientmqueue中產生許多的零碎文件。
處理方法:
? ? 用rm -rf *會不能刪除,并會有相應的提示,大意是參數太多。
? ? 可以用多種方法,這里提及一個我隨便寫的,在/var/spool/clientmqueue/下執行命令:“lsattr ./|awk -F"/" '{print $3}'|xargs -i rm -rf {}”用lsattr列出./下面的文件名的屬性,用awk取出名字,然后rm -rf
? ? 還有一個方法比較普遍的使用:“find /var/spool/clientmqueue/ -type f -exec rm {} \;”或者在/var/spool/clientmqueue/目錄下“find ./ -exec rm {} \;”
? ??將crontab中沒有定向輸出的行都在最后加上“> /dev/null 2>&1”,在刪除的過程中操作。或者先停止crontab,加上重定向。
來源:https://blog.csdn.net/bobo0915/article/details/51980650
總結
以上是生活随笔為你收集整理的磁盘df看还有剩余空间,但是创建文件时报错,提示磁盘已经满问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中包含math.h的时用gcc编译
- 下一篇: 数据库相关中间件介绍