专栏首页芝麻实验室记一次Linux下文件删除但空间不释放问题的解决

记一次Linux下文件删除但空间不释放问题的解决

问题现象

  • 今天早上,收到运维监控系统的告警,说web02这台主机的根分区剩余空间不足20%,于是马上连上服务器查看。通过df命令获知,根分区使用率竟高达81%,而根分区总大小仅为26GB [root@prd-ds-tms-web02 logs]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root ext4 26G 20G 4.9G 81% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 ext4 477M 74M 378M 17% /boot /dev/mapper/app_vg0-app_lv0 ext4 9.6G 3.4G 5.7G 38% /app /dev/mapper/data_vg0-data_lv0 ext4 29G 347M 27G 2% /appdata
  • 于是接着通过进入根分区,多次执行du -sh ./*命令获知是/var/lib/AnyBackup/logs/下的日志文件过大导致的异常,前几日的文件都正常,但是前天日志文件有2GB,昨天的日志竟高达17GB,鉴于是生产系统,为保证平台稳定性,在确认可以删除后,立即将该日志删除,再次执行df命令,但发现磁盘空间并未释放 [root@prd-ds-tms-web02 logs]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root ext4 26G 20G 4.9G 81% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 ext4 477M 74M 378M 17% /boot /dev/mapper/app_vg0-app_lv0 ext4 9.6G 3.4G 5.7G 38% /app /dev/mapper/data_vg0-data_lv0 ext4 29G 347M 27G 2% /appdata

解决思路

  • 一般来说不会出现删除文件后,空间长久不释放的问题。联想到出问题的是AnyBackupClient的日志文件,而AnyBackupClient这样的备份系统几乎在我们的生产环境中“永不停歇”的运行,如果进程一直在跑,就会不断的往其日志写入数据(如果有),即便将文件的数据部分删除,文件的指针由于被进程锁定,依旧存在于文件系统元数据(meta-data)中而并未被删除,因此Linux内核认为文件并未被删除,通过df命令查询空间并未释放也就是情理之中的事情了。

处理故障

  • 既然有了思路,那就可以开始排障了。利用ps命令,可以发现AnyBackupClient有一个daemon在后台运行 [root@prd-ds-tms-web02 logs]# ps aux |grep AnyBackup root 5695 0.0 0.6 611960 24064 ? Sl May02 33:38 /usr/src/AnyBackupClient/app/bin/esfdaemon -f clientd.config root 26965 0.0 0.0 103324 896 pts/0 S+ 09:10 0:00 grep AnyBackup
  • 通过kill命令将其杀死,然后马上观察系统磁盘 [root@prd-ds-tms-web02 logs]# kill -9 5695 [root@prd-ds-tms-web02 logs]# ps aux |grep AnyBackup root 26985 0.0 0.0 103320 896 pts/0 S+ 09:10 0:00 grep AnyBackup [root@prd-ds-tms-web02 logs]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root ext4 26G 3.1G 22G 13% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 ext4 477M 74M 378M 17% /boot /dev/mapper/app_vg0-app_lv0 ext4 9.6G 3.4G 5.7G 38% /app /dev/mapper/data_vg0-data_lv0 ext4 29G 347M 27G 2% /appdata

总结

  • 遇到类似的问题不要急,要多整理思路,在安装一款应用时,必须对其整体架构有一定了解,这样才能在出现故障时迅速排障;同时,也可以预见到,运维监控系统的重要性和必然性。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iptables-远程访问数据库端口策略

    一个开发提出的业务需求,需要开通某台服务器,到某套数据库的访问权限,即1521端口访问权限,提交了网络工单,等网络实施后,进行测试,

    bisal
  • Oracle RAC安装过程中碰到的“坑”和关键点(二)

    Linux下安装Oracle,除了系统配置参数,我觉得依赖包的安装是另一个比较琐碎的操作。

    bisal
  • Oracle RAC安装过程中碰到的“坑”和关键点(一)

    在物理机上使用虚机搭建RAC环境时碰到了很多“坑”和关键点,这里慢慢一一回味总结下。

    bisal
  • 如何保持SSH连接的linux服务器不断线

    使用SecureCRT连接远程服务器,在会话选项 -> 终端设置中勾选“发送协议 NO-OP”。

    明哥的运维笔记
  • Tuxedo域连接错误引出的netstat不同平台参数的区别

    最近测试同事有一个需求,搭建一套Tuxedo域,连接网关,通过其和其他域交互,搭建过程中配置正确,但域连接报错,模拟过程如下,假设本地域名称为LOCALDOM,...

    bisal
  • Linux下安装Oracle的过程和涉及的知识点-系列5

    使用root登录,编辑/etc/inittab文件,将d:5:initdefault:改为d:3:initdefault:

    bisal
  • 我经常用的一些vi快捷键

    Linux下vi/vim的操作,当你不熟悉时,不会愿意用他,一旦你习惯了,他的高效就无人能敌,用久了就会有种,相逢恨晚的感觉,这也是一部分人,习惯使用Mac而不...

    bisal
  • Linux实际内存占用率算法,以及使用Python实现内存监控

    这两天我们的一个核心系统,一套集群,逐台开始报警,内容是内存占用超阈值。按说这应该是一个非常紧急且需要立即处理的报警,但实际是不是这样,待我们拨云见日。

    bisal
  • 安装Oracle Linux碰见的几个问题

    今儿需要部署一个Oracle环境,为了简单些,选择了Oracle提供的Linux版本介质:OracleLinux-R6-U2-Server-x86_64-dvd...

    bisal
  • 如何解决/home/oracle: is a directory报警

    结尾行有一个~符号,颜色和下面行的不同,另外这行可以使用光标达到,下面行是不能达到,难道是这个问题?

    bisal

扫码关注云+社区

领取腾讯云代金券