服务器磁盘爆满?别慌,教你轻松清理!

服务器磁盘爆满?别慌,教你轻松清理!

简介

服务器磁盘空间告急,网站访问缓慢,甚至无法正常运行?别担心,这篇文章将为你提供一份详细的清理指南,帮助你快速释放服务器磁盘空间,恢复系统正常运行。

我们将从以下几个方面展开讨论:

  • 识别磁盘空间占用大户: 使用哪些工具可以快速定位占用大量磁盘空间的文件和目录?
  • 清理无用文件: 哪些类型的文件可以安全删除?如何避免误删重要数据?
  • 优化日志文件: 如何设置日志文件的保留策略,避免日志文件占用过多空间?

无论你是服务器管理员还是网站运营者,这篇文章都将为你提供实用的解决方案,帮助你轻松应对服务器磁盘爆满问题。

摘要

服务器磁盘空间告急?别慌!本文将教你如何快速识别并清理占用大量磁盘空间的文件和目录,优化日志文件,释放磁盘空间,恢复系统正常运行。适合服务器管理员和网站运营者。

正文

1 排查方式

1.1 显示磁盘空间使用情况
bash 复制代码
df -h

文件系统中的挂载点/dev/vdal的59G磁盘空间已经用完,我们需要对一些没用的大文件进行清理删除。

1.2 显示当前目录所占空间情况

回到根目录,查看当前的目录下那个文件占用最大

bash 复制代码
cd /
du -h --max-depth=1

进入大的文件目录,重复查看当前目录所占空间情况,我发现MySQL的binlog占用了比较大的磁盘空间。

2 解决方案

2.1 关于MySQL中的binlog占用磁盘空间

列出当前 MySQL 服务器上所有的二进制日志文件的名称和大小

sql 复制代码
SHOW BINARY LOGS;

查询并显示 expire_logs_days 系统变量的当前值,这个变量作用于binlog过期时间。

  • expire_logs_days 的默认值通常是 0,表示二进制日志文件不会自动删除。
  • expire_logs_days 的值大于 0,MySQL 会在每天的日志轮转时检查并删除超过指定天数的二进制日志文件。
sql 复制代码
show variables like 'expire_logs_days';

动态修改 expire_logs_days 的值,设置binlog过期时间为30天。

作者提示:【这个谨慎设置,请勿用于生产环境,binlog文件作用于数据恢复主从复制等重要功能】

ini 复制代码
set global expire_logs_days = 30; 

演示的是MySQL 8,可能遇到的错误

vbscript 复制代码
3683 - The option expire_logs_days and binlog_expire_logs_seconds cannot be used together. Please use binlog_expire_logs_seconds to set the expire time (expire_logs_days is deprecated)
​
[3683] - 选项expire_logs_days 和binlog_expire_logs_seconds 不能一起使用。请使用 binlog_expire_logs_seconds 设置过期时间(expire_logs_days 已弃用)

可以使用下面的命令进行替代,下面命令选一条即可。

ini 复制代码
SET GLOBAL binlog_expire_logs_seconds = 604800;  -- 7天(7 * 24 * 60 * 60)
​
SET GLOBAL binlog_expire_logs_seconds = 2592000;  -- 30天(30 * 24 * 60 * 60)

设置好我们在查看一下binlog过期时间,由于expire_logs_days变量已经弃用,我们设置了binlog_expire_logs_seconds所以这里查询的命令也需要改下变量名称。

sql 复制代码
show variables like 'binlog_expire_logs_seconds';

【扩展】列出 mysql-binlog.000067 文件中的所有事件。

sql 复制代码
show binlog events in 'mysql-binlog.000067'
2.2 Docker占用磁盘空间
  • docker system prune : 清理未使用的 Docker 资源,包括未使用的镜像、容器、卷和构建缓存。
  • docker image prune : 清理未使用的镜像。
  • docker container prune : 清理停止的容器。
  • docker volume prune : 清理未使用的卷。
  • docker builder prune : 清理构建缓存。

显示 Docker 系统中各种资源的占用情况。

bash 复制代码
docker system df
  • TYPE : 资源的类型,包括 Images(镜像)、Containers(容器)、Local Volumes(本地卷)和 Build Cache(构建缓存)。
  • TOTAL : 该类型资源的总数。
  • ACTIVE : 该类型资源中处于活动状态的数量。
  • SIZE : 该类型资源占用的总空间大小。
  • RECLAIMABLE : 可以回收的空间大小,以及回收的比例。

删除所有无用的volume(本地数据卷)

bash 复制代码
docker volume rm $(docker volume ls -qf dangling=true)

清理之后

相关推荐
网硕互联的小客服6 分钟前
没有公网IP,如何让外网访问内网服务器?
运维·服务器
布裘7 分钟前
【银河麒麟】服务器系统开机黑屏故障排查与修复
linux·运维·服务器·银河麒麟·无法启动
Zenova EdgeOS22 分钟前
Linux iotop:工业边缘 I/O 高级分析实战
linux·运维·服务器
新时代牛马1 小时前
Linux 日志管理:journald、rsyslog 与 logrotate
linux·运维·服务器
资深电气设计1 小时前
技术解析:ABB变频器ACH580/ACS180在CDU循环泵系统的应用技术框架
linux·运维·服务器
新时代牛马2 小时前
Linux 网络配置:iproute2、DNS 与连通性排障
linux·服务器·网络
新时代牛马2 小时前
Linux systemd 服务管理:从unit 文件到systemctl 启停与排障
linux·服务器·网络
回忆2012初秋2 小时前
DBX:一个现代化的轻量级、跨平台的开源数据库管理工具
大数据·服务器·网络
fengkai45452 小时前
七、华为云网络综合实验 & 运维类及其他服务总结
服务器·开发语言·php
JeJe同学3 小时前
Linux远程服务器网络访问优化:使用SSH反向端口转发共享本地HTTP代理
服务器·网络·ssh