磁盘空间不足最典型的表现就是: 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 |