暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux磁盘空间满(block or inode?)

IT技术佳肴 2020-06-24
1153

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

 

这里涉及到两个概念,block和inode,分别使用df -h和df -i命令查看

    -h, --human-readable
    print sizes in human readable format (e.g., 1K 234M 2G)
    -i, --inodes
    list 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 -hi
      Filesystem Inodes IUsed IFree IUse% Mounted on
      /dev/mapper/centos-root 24M 33K 24M 1%
      devtmpfs 120K 388 119K 1% dev
      tmpfs 123K 1 123K 1% dev/shm
      tmpfs 123K 480 122K 1% run
      tmpfs 123K 16 123K 1% /sys/fs/cgroup
      /dev/sda1 512K 327 512K 1% /boot
      tmpfs 123K 1 123K 1% /run/user/0
        [root@test ~]# df -hl
        Filesystem Size Used Avail Use% Mounted on
        /dev/mapper/centos-root 47G 11G 37G 22% /
        devtmpfs 478M 0 478M 0% /dev
        tmpfs 489M 0 489M 0% /dev/shm
        tmpfs 489M 6.7M 482M 2% /run
        tmpfs 489M 0 489M 0% /sys/fs/cgroup
        /dev/sda1 1014M 125M 890M 13% /boot
        tmpfs 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 bin
          93M boot
          168M data
          0 dev
          30M etc
          0 home
          0 lib
          0 lib64
          0 media
          5.1G mnt
          0 opt
          0 proc
          48K root
          6.7M run
          0 sbin
          0 srv
          0 sys
          12K tmp
          4.7G usr
          228M var
          0 yum

          对于小文件比较多的Linux服务器,更容易出现的是inode空间满,也就是“df -i”或者“df -hi”命令看到使用率达到100%。

          • 使用 ls -lR|grep "^-"| wc -l可以查看当前文件夹下面的文件数量(包括子目录)

          • 使用 ls -lR var|grep "^-"| wc -l可以查看具体某个目录下面文件夹数量(包括子目录)

            [root@test /]# ls
            bin 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 -l
            83423
            [root@test /]# ls -lR var|grep "^-"| wc -l
            3316


            有时候发现Linux系统提示“no space left on device”的错误时候,有可能是block满了,也有可能是inode满了!



            文章转载自IT技术佳肴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论