磁盤空間空間不足的原因及表現與解決辦法



磁盤空間不足最典型的表現就是:     No space left on device

創建測試環境
dd if=/dev/zero  of=/tmp/sdc  bs=1k count=75
mkfs.ext4  /tmp/sdc       (不一定都是ext4硬盤,注意)    
mkdir -p /app/logs
mount  -o loop /tmp/sdc   /app/logs 
運行以上命令后,檢查硬盤情況:
[root@chenleilei ~]# df -i /app/logs/ 
Filesystem Inodes IUsed IFree IUse% Mounted on 
/tmp/sdc      16         10         6     63%      /app/logs 

[root@chenleilei ~]# df -h /app/logs/ 
Filesystem Size Used Avail Use% Mounted on 
/tmp/sdc     65K  2.0K 60K    4%     /app/logs 

模擬inode耗盡
touch /app/logs/{1..20}.txt  (無論文件多少都必須要占用一個inode和block)

[root@chenleilei ~]# df -h
Filesystem       Size      Used     Avail    Use%      Mounted on
/dev/sda3       18G       1.5G      16G       9%            /  
tmpfs            491M            0     491M      0%         /dev/shm
/dev/sda1     190M       35M     146M     19%         /boot
/tmp/sdc         65K       3.0K       59K       5%         /app/logs
......................................................................................略
可以看到余下容量59k  然后為了驗證 inode不足也無法創建文件的真理
我們嘗試創建一個文件:

(有時候出現一個問題 在出現這個報錯的時候仍舊能創建文件,而不能創建文件夾
我想不明白,最后我想到一個 有可能是 目錄占用的block為4K的原因吧?? 是不是我也不知道)

以上就是inode耗盡的問題出現.解決辦法就是:  刪除里面多余的小文件,在linux系統中
無論文件大小都至少會占用一個block. 刪除小文件后會大大釋放inode數量. 


block耗盡實驗


查看磁盤剩余容量:
[root@chenleilei logs]# df -h
Filesystem   Size    Used     Avail     Use%   Mounted on
/dev/sda3   18G     1.5G     16G        9%        /
tmpfs        491M       0        491M      0%     /dev/shm
/dev/sda1 190M     35M    146M       19%    /boot
/tmp/sdc    65K       65K       0           100%     /app/logs


查看剩余的inode數量:
[root@chenleilei logs]# df -i
Filesystem      Inodes        IUsed     IFree        IUse%     Mounted on
/dev/sda3       1201872     55746     1146126      5%       /
tmpfs             125514               1     125513         1%       /dev/shm
/dev/sda1       51200              38       51162         1%       /boot
/tmp/sdc                16              16              0        100%        /app/logs

inode滿了解決辦法:   inode滿了多數由於小文件過多導致,通過find來查找小文件即可,另外日志文件
是inode滿了的 罪魁禍首,所以一般要多留意 log目錄 使用find 命令來查找小文件並刪除.



磁盤一滿了就會報錯 
[root@chenleilei logs]# cp /usr/share/autoconf/m4sugar/m4sh.m4 /app/logs/
cp: writing `/app/logs/m4sh.m4': No space left on device

解決辦法: 清除大文件 即可
查找大文件: ------這個命令是把大文件列出來 讓我們能一眼看出大文件是哪些,從而采取措施刪除.
[root@chenleilei app]#  du -h /app/logs/* | sort -h      
9.0K     /app/logs/m4sh.m4
55K      /app/logs/m4sh.m4f


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM