磁盤空間不足最典型的表現就是:
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
|


