linux 判断磁盘写满,磁盘写满快速排查与解决

磁盘写满快速排查与解决

问题引子

PHP 报错如下,此问题基本可以确定是由于磁盘写满导致 session 不能写入造成。Warning: session_start(): open(/tmp/sess_rvo5pg9op1ej55vop0g72b0jeu, O_RDWR) failed: No space left on device (28)

解决写满问题

下面记录一下,快速排查用到的几个命令。

1.查看磁盘占用> df -h文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 3.9G 0 3.9G 0% /dev

tmpfs 3.9G 0 3.9G 0% /dev/shm

tmpfs 3.9G 401M 3.5G 11% /run

tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup

/dev/mapper/centos-root 44G 44G 0 100% /

/dev/sda1 1014M 192M 823M 19% /boot

tmpfs 783M 0 783M 0% /run/user/0

可以看到根分区已经被写满,接下来要定位大文件的位置进行清理。

2.定位大文件位置> du -sh *

-s 表示汇总, -h 表示以KB, MB, GB, TB格式进行人性化显示。0 bin

160M boot

4.3G data

0 dev

36M etc

15G home

0 lib

0 lib64

0 media

0 mnt

379M opt

0 proc

……

6.2G usr

332M var

这样可以显示出目录下的文件大小总和。然后,从根目录开始一级一级的定位大文件和大目录的位置。

3.批量删除文件

一般磁盘写满都是日志造成,日志文件一般以天为单位为一个记录文件,如下。-rw-r--r-- 1 www www 0 3月 18 10:13 test20210101.log

-rw-r--r-- 1 www www 0 3月 18 10:13 test20210102.log

-rw-r--r-- 1 www www 0 3月 18 10:13 test20210103.log

-rw-r--r-- 1 www www 0 3月 18 10:13 test20210104.log

-rw-r--r-- 1 www www 0 3月 18 10:13 test20210201.log

-rw-r--r-- 1 www www 0 3月 18 10:13 test20210204.log

对于这些文件,我们要进行批量删除。

基于文件名中的时间进行批量删除

批量删除2021年1月份的日志> ls | grep test202101 | xargs rm -f

基于文件的修改时间(mtime)属性进行批量删除

批量删除30天之前的以.log结尾的文件> find ./ -type f -name "*.log" -mtime +30 -delete

rsync替换原理删除大目录

假设 testlog 下的大量文件,先创建空目录 blank,以空目录替换 testlog ,此时 testlog 则为空。

这种方法要比 rm -rf testlogs/ 效率高。> mkdir blank

> rsync -a --delete blank/ testlogs/

PS:

查看某文件或目录属于哪个分区> df -h 目录/文件名

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值