【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. webview学习

    Android中WebView使用6,js调java实现播放视频 https://blog.csdn.net/zhaihaohao1/article/details/77993890 android ...

  2. Linux Firewalld 基础介绍

    互联网上提供了各种网络服务,而防火墙可以设置各种规则来限制访问,保护服务器. 概述 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. Linux系 ...

  3. Linux常用指定

    学前理论 linux主要特征 :一切且文件(目录.硬盘等都是文件):硬件都在/dev 目录,如硬盘.U盘为/dev/sd[a-d]: /dev/sr0(/dev/cdrom)是光驱的设备名(df命令查 ...

  4. Matplotlib 绘制定制的直方图

    1.普通风格 代码 import numpy as np import matplotlib.pyplot as plt rng = np.random.RandomState(27) x = rng ...

  5. 安装glibc

    wget http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gztar -zxvf glibc-2.23.tar.gz cd glibc-2.23 mkdir b ...

  6. 百度快排发包python核心源码

    本源码仅供测试,发包有风险,优化还是踏实的好!本代码是本人自己学习python练手作品!  附上代码: # -*- coding: utf-8 -*-from selenium import webd ...

  7. [codevs3044]矩形面积求并

    题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行 ...

  8. mybatis学习4

    QL99中的连接查询 连接查询 交叉连接    select * from A,B; 内连接 隐式内连接   select * from A,B where 条件 显示内连接  select * fr ...

  9. R语言学习(基本知识)

    0)查看帮助 library(help="ballgown") #查看包帮助 getwd() #查看当前工作目录 setwd('C:/Users/djx/Desktop/信号肽系统 ...

  10. 3-OpenResty 配置PHP

    由于咱以前是用PHP做的东西,又不想重新用 OpenResty自带的编写,所以呢咱设置下,可以像以前Apache那样访问PHP文件 首先去下载 PHP https://windows.php.net/ ...