【mount】Linux根目录空间不足

2019.04.15 21:30:47字数 1094阅读 107

一、问题背景

一台数据库服务器,突然监控告警,报根目录空间不足(no space left on device),登录机器初步查看,发现根目录确实满了。

#  df   -hT

 

二、问题排查

根目录下包括所有的目录,而有些目录是挂了盘的,这些目录不会占用根目录下的系统磁盘空间。

出现根目录空间不足的情况只要关注那些未挂盘的文件大小,使用du命令查看各个目录的大小(只显示一层目录)

#  du  -h --max-depth=1   /

 

但是却并没有发现某个目录下有特大的文件存在。

灵机一动,是否有文件已被删除,但是引用该文件的进程仍然活动,导致文件所占磁盘没有被释放。

#  lsof | grep deleted

 

根目录磁盘空间已满,根目录没有大文件,文件如果正在使用的时候被删除,进程可以继续读取文件,文件仍然占用空间,导致文件被删除但是空间未释放。

解决方法是删掉占用文件的进程,但结果中仍然没有发现有大文件。

有没有可能是这台服务器的block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足?

inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是 block,block是用来存储数据用的,而inode就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。

inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

如果这台服务器的Block虽然还有剩余,但inode已经用满,在创建新目录或文件时,系统提示磁盘空间不足。

inode的数量是有限制的,每个文件对应一个Inode,那么如何查看inode的最大数量呢?

# df  -i

 

可以看到,inode节点只用了小部分,依然不是问题的原因所在。

那么,是不是在此之前做过什么操作,可能造成了一些预期之外的后果?

此时想起,我曾经重新mount过数据盘,但是数据盘是独立的磁盘,照理说是不会占用根目录所在的系统盘空间。

实际上:如果mount目录下原来是有文件存在的,那么该目录被mount之后这些文件就会被隐藏,不属于该文件系统,使用du命令是看不到的!

 

停掉相关服务,验证一下:

#  umount  /opt

#  ll   /opt/

 

果然,发现/opt目录下有一个2.8G的文件,这个文件把根目录磁盘占满了!

问题原因找到了,应该是之前拷贝文件时,/opt  没有被mount,拷贝动作就将文件拷贝到了根目录,而重新mount数据盘之前没有检查该目录是否为空,导致了后来的根目录磁盘空间不足。

三、问题总结

如果mount目录下原来是有文件存在的,那么该目录被mount之后这些文件就会被隐藏,不属于该文件系统,使用du命令是看不到的!

在实际生产环境中,mount之前需要确认目录是否为空!

四、参考

Linux根目录空间不足

https://www.jianshu.com/p/0698336f5b8e

https://blog.csdn.net/xiao_wj/article/details/52875458

理解inode

http://www.ruanyifeng.com/blog/2011/12/inode.html

How To Resize ext3 Partitions Without Losing Data

https://www.howtoforge.com/linux_resizing_ext3_partitions

No space left on device – running out of inodes

https://www.ivankuznetsov.com/2010/02/no-space-left-on-device-running-out-of-inodes.html

https://unix.stackexchange.com/questions/396965/no-free-space-left-inode-shortage

[转帖]【mount】Linux根目录空间不足的更多相关文章

  1. 增大VM下linux的根目录空间

    增大VM下linux的根目录空间   用的太久,发现VM下的系统空间不足.简单的方法是,分一个新硬盘,挂载到根目录下.    下面是直接增大根目录下空间:  1. 增大vm下的磁盘大小, VM -&g ...

  2. [转载]实战Linux下VMware虚拟机根目录空间扩充

    [转载]实战Linux下VMware虚拟机根目录空间扩充 (2011-07-31 21:34:34) 转载▼ 标签: 转载   原文地址:实战Linux下VMware虚拟机根目录空间扩充作者:shar ...

  3. VMware linux 增加根目录空间 (使用图形分区工具gparted LiveCd)

    写这篇文章的原因: 最近要给服务器Centos上的ruby版本升级,由于是第一次升级,不敢直接在服务器上操作. 所以在我的winxp上装了Vmware ,又在Vmware中装了Centos5.2. 用 ...

  4. 网络虚拟化基础一:linux名称空间Namespaces

    一 介绍 如果把linux操作系统比作一个大房子,那命名空间指的就是这个房子中的一个个房间,住在每个房间里的人都自以为独享了整个房子的资源,但其实大家仅仅只是在共享的基础之上互相隔离,共享指的是共享全 ...

  5. linux 根目录扩容

    之前搭建了一个CentOS(7.0, x64)的VM,一直没留意它的硬盘空间.昨天,系统突然弹出警示,说 根目录 空间不足了. 这样的话,就只能给它增加空间呗. 我自己其实已经增加过硬盘空间了,但是为 ...

  6. VMware中linux硬盘空间不足的解决方法

    相信很多人都和我一样是利用虚拟机安装linux的,在玩转linux的时候,可能就会遇到系统提示磁盘空间不足的情况.由于VMware中当初装系统时的设置的最大磁盘容量是不可以动态修改的,所以为我们使用带 ...

  7. Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  8. linux磁盘空间使用问题

    linux磁盘空间用满的处理方法 linux下空间满可能有两种情况 可以通过命令 df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) df -i  查看索引节点的占用(Inod ...

  9. linux磁盘空间满了 但是没有大文件

    很常见的一个问题 linux磁盘空间满了 但是没有大文件 解决思路: 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少,有约3G的空间莫 ...

随机推荐

  1. Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. python循环删除列表元素留一个问题

    https://www.cnblogs.com/baihualin/p/10698651.html 引用up

  3. eclipse 工作空间配置UTF-8编码格式

    配置前端页面编码格式 1. Windows-->preferences 2. web-->jsp file-->Encoding 3. OK保存  配置java文件编码格式 1. W ...

  4. Linux内存含义

    关于Linux的内存,首先要先知道各个部分的含义 1. 命令:  free -m     // Mb 显示 1,total:物理内存实际总量2,used:这块千万注意,这里可不是实际已经使用了的内存哦 ...

  5. springboot集成spring data ElasticSearch

    ES支持SpringBoot使用类似于Spring Data Jpa的方式查询,使得查询更加方便. 1.依赖引入 compile “org.springframework.boot:spring-bo ...

  6. 【servlet】Servlet的API和生命周期]

    创建时间:6.15 一.Servlet的API(生命周期) (1)Servlet接口中的方法 1)init(ServletConfig config) 何时执行:servlet对象创建的时候执行 Se ...

  7. Java多线程编程核心技术-第7章-拾遗增补-读书笔记

    第 7 章 拾遗增补 本章主要内容 线程组的使用. 如何切换线程状态. SimpleDataFormat 类与多线程的解决办法. 如何处理线程的异常. 7.1 线程的状态 线程对象在不同的运行时期有不 ...

  8. JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类(四)

    未完待续 ........ 前言:       加班了好几天,终于结束上一个坑的项目了,项目交接人员全部离职,代码一行注释没有,无人问津的情况下,完成了项目,所以好的规范真的很重要. 继续日期改写 一 ...

  9. phpcms添加https后台分页错误的解决方法

    今天修改一位客户的phpcms网站,他要求添加https,这对ytkah来说是轻车熟路了,但是后台稍微有点问题,点击分页出现错误,将鼠标移到下一页显示的链接是https://www.abc.com/w ...

  10. 16-cmake语法-OpeCV3.3.1_CMakeLists.txt的部分注释

    OpeCV3.3.1 的 CMakeLists.txt 的部分注释. # Disable in-source builds to prevent source tree corruption. # @ ...