Linux空间不足问题
有一天在运行jar时发现无法启动,查到后面发先无法创建文件,内存空间不足“No space left on device”
当我使用 df 命令查看分区情况时,结果如下:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 40G 0 100% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 119M 1.7G 7% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs 365M 0 365M 0% /run/user/0
看到这里,我以为磁盘真的被 100% 占用了,于是就查看了各目录的占用情况:
# du -sh /*
0 /bin
128M /boot
5.1G /data
0 /dev
34M /etc
20K /home
23G /jar
0 /lib
0 /lib64
16K /lost+found
4.0K /media
4.0K /mnt
258M /myFastDfs
4.8G /opt
du: cannot access ‘/proc/10567/task/10567/fd/4’: No such file or directory
du: cannot access ‘/proc/10567/task/10567/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/10567/fd/4’: No such file or directory
du: cannot access ‘/proc/10567/fdinfo/4’: No such file or directory
0 /proc
360M /root
127M /run
0 /sbin
4.0K /srv
0 /sys
164K /tmp
5.6G /usr
877M /var
# 中间在du:那里卡了很久,暂时不知道是为什么
这种情况下,很可能是小文件过多,导致 inode 急剧增加,消耗完 inode 区域的空间。
如果真是如此,那么即使磁盘空间有剩余,但由于无法创建新的 inode 来存储文件的元信息,也就无法创建新文件。
# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2.5M 253K 2.3M 10% /
devtmpfs 454K 330 453K 1% /dev
tmpfs 456K 1 456K 1% /dev/shm
tmpfs 456K 431 456K 1% /run
tmpfs 456K 16 456K 1% /sys/fs/cgroup
tmpfs 456K 1 456K 1% /run/user/0
inode 区域只被占用了一小部分,还有大量的空间未使用,所以也不是 inode 区域被占满的问题。
我发现我的/jar目录占用了23G,这是不可能的,结果进去发现是日志文件占用了绝大部分空间,于是删除日志文件就好了
stat 文件名或者目录名
# 查看文件占用空间
# 查看端口号使用情况
netstat -tunlp
netstat -tunlp|grep 8080