一般情况下,检查服务器磁盘空间满没满,使用df -h命令查看即可。但有时候也会出现df -h查看使用率未达到100%,但是系统却提示“no space left on device”。

这里涉及到两个概念,block和inode,分别使用df -h和df -i命令查看
-h, --human-readableprint sizes in human readable format (e.g., 1K 234M 2G)-i, --inodeslist inode information instead of block usage
可以看到-i的选项说明里面提到了2个关键词,“inode information”和“block usage”
这里简单解释一下:
inode:用于记录文件属性,一个文件占用一个inode。
block:用于存储数据文件,较大的文件会占用多个block。
再举个具体的例子说明一下:
618大促,商家要准备很多货物,所以采购了一批货架,这里货架就是文件系统,货架上面的一个个架子就是一个个block,架子上面放的商品就是文件,有的商品会占用多个货架,每个商品的吊牌/标签就是inode。唯一不同的是货架和商品都是物理可见的,而block和inode是虚拟的概念,代表的本质是数据。
查看一下截图信息,将block和inode使用情况进行对比:
[root@test ~]# df -hiFilesystem Inodes IUsed IFree IUse% Mounted on/dev/mapper/centos-root 24M 33K 24M 1%devtmpfs 120K 388 119K 1% devtmpfs 123K 1 123K 1% dev/shmtmpfs 123K 480 122K 1% runtmpfs 123K 16 123K 1% /sys/fs/cgroup/dev/sda1 512K 327 512K 1% /boottmpfs 123K 1 123K 1% /run/user/0
[root@test ~]# df -hlFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 47G 11G 37G 22% /devtmpfs 478M 0 478M 0% /devtmpfs 489M 0 489M 0% /dev/shmtmpfs 489M 6.7M 482M 2% /runtmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 1014M 125M 890M 13% /boottmpfs 98M 0 98M 0% /run/user/0
以根目录为例,block总空间是47G,已经使用了11G,使用率为22%。Inode的总空间为24M,已经使用了33K,使用率为1%。
所以,两种空间使用率需要区别对待:
对于大文件比较多的Linux服务器,更容易出现的是block空间满,也就是“df -h”或者“df -hl”命令看到使用率达到100%。
使用du -sh *命令,可以查看哪个文件夹下面的文件比较大
[root@test /]# du -sh *0 bin93M boot168M data0 dev30M etc0 home0 lib0 lib640 media5.1G mnt0 opt0 proc48K root6.7M run0 sbin0 srv0 sys12K tmp4.7G usr228M var0 yum
对于小文件比较多的Linux服务器,更容易出现的是inode空间满,也就是“df -i”或者“df -hi”命令看到使用率达到100%。
使用 ls -lR|grep "^-"| wc -l可以查看当前文件夹下面的文件数量(包括子目录)
使用 ls -lR var|grep "^-"| wc -l可以查看具体某个目录下面文件夹数量(包括子目录)
[root@test /]# lsbin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var yum[root@test /]# ls -lR|grep "^-"| wc -l83423[root@test /]# ls -lR var|grep "^-"| wc -l3316
有时候发现Linux系统提示“no space left on device”的错误时候,有可能是block满了,也有可能是inode满了!





