美文网首页软件测试技能栈我用 LinuxLinux
磁盘空间不足的另一种情况(实践篇)

磁盘空间不足的另一种情况(实践篇)

作者: 软件测试技能栈 | 来源:发表于2017-10-27 08:28 被阅读22次

    前续文章:
    情景linux--如何解决单日志文件过大导致的磁盘空间不足?
    情景linux--如何解决单日志文件过大导致的磁盘空间不足?(实践篇)
    情景linux--如何快速生成大文件?
    情景linux--磁盘空间不足的另一种情况

    从文章情景linux--磁盘空间不足的另一种情况中可知:

    磁盘空间不足至少有三种情况:
    磁盘block区用尽了;
    磁盘inode区用尽了;
    磁盘block区用尽后,删除文件但文件句柄未释放;
    而情况3其实是情况1的特殊情况。

    大多数情况下,磁盘空间不足应是情况1。特殊情况下,会遇到情况3,这也是文章情景linux--如何解决单日志文件过大导致的磁盘空间不足?中提到的场景。情况2我们在文章情景linux--磁盘空间不足的另一种情况中也做了理论介绍,本文则针对情况2进行实践。

    在开始之前我们先使用命令查看磁盘情况(注意观察-i参数的统计列)。

    $ df -ihl
    Filesystem                   Inodes IUsed IFree IUse% Mounted on
    /dev/mapper/VolGroup-lv_root   431K   54K  377K   13% /
    tmpfs                          235K     1  235K    1% /dev/shm
    /dev/sda1                      126K    39  125K    1% /boot
    
    $ df -hl
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  6.7G  2.0G  4.4G  31% /
    tmpfs                         939M     0  939M   0% /dev/shm
    /dev/sda1                     485M   39M  421M   9% /boot
    

    为了使得block区磁盘空间充足,而inode区空间不足,可以直接生成大量的空文件。新开一个终端窗口执行如下命令:

    $ for i in `seq 1 1000000`;do touch $i.txt;done  
      
    

    在产生大量空文件的过程中,可以不断用df -ihl命令了解inode区的占用情况:

    find ./ | wc -l 
    268738
    
     $ df -ihl
    Filesystem                   Inodes IUsed IFree IUse% Mounted on
    /dev/mapper/VolGroup-lv_root   431K  351K   80K   82% /
    tmpfs                          235K     1  235K    1% /dev/shm
    /dev/sda1                      126K    39  125K    1% /boot
    
    $ df -hl
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  6.7G  2.0G  4.4G  31% /
    tmpfs                         939M     0  939M   0% /dev/shm
    /dev/sda1                     485M   39M  421M   9% /boot
    

    即,产生了26w多个文件时,磁盘的inode区已经用掉了82%的空间,因而循环创建空文件的命令很快就会是inode区空间耗尽。

    当创建了30多万个文件后,循环开始报错:

    touch: cannot touch `386787.txt': No space left on device
    touch: cannot touch `386788.txt': No space left on device
    touch: cannot touch `386789.txt': No space left on device
    ...(省略)...
    
    $ df -ihl
    
    Filesystem                   Inodes IUsed IFree IUse% Mounted on
    /dev/mapper/VolGroup-lv_root   431K  431K     0  100% /
    tmpfs                          235K     1  235K    1% /dev/shm
    /dev/sda1                      126K    39  125K    1% /boot
    
    $ df -hl
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  6.7G  2.0G  4.4G  31% /
    tmpfs                         939M     0  939M   0% /dev/shm
    /dev/sda1                     485M   39M  421M   9% /boot
    

    总结

    学习了磁盘相关的知识和这几篇文章的内容后,当遇到linux系统磁盘空间不足时,应区分是哪种情景:

    • 使用df -hl命令查看磁盘block区使用情况,并结合du命令进一步确认是哪些文件占用空间比较大,或者是删除了文件但空间没有释放;
    • 使用df -ihl命令查看磁盘inode区使用情况;

    相关文章

    情景linux--如何解决单日志文件过大导致的磁盘空间不足?
    情景linux--如何解决单日志文件过大导致的磁盘空间不足?(实践篇)
    情景linux--如何快速生成大文件?
    情景linux--磁盘空间不足的另一种情况

    相关文章

      网友评论

        本文标题:磁盘空间不足的另一种情况(实践篇)

        本文链接:https://www.haomeiwen.com/subject/kbtrpxtx.html