当前位置:网站首页 >  教程

运维冗余资源全流程清理实操指南 零风险释放服务器存储算力

时间:2026年06月12日 04:13:41 来源:易频IT社区

一、前置准备(清理前必须完成)

1.1 必备工具安装

所有工具均为开源免费,直接执行对应命令安装即可:

Debian/Ubuntu 系统:

```bash apt update && apt install ncdu fdupes -y ```

CentOS/RHEL 系统:

```bash yum install ncdu fdupes -y ```

云资源盘点工具安装:

```bash curl -L https://github.com/cloudquery/cloudquery/releases/latest/download/cloudquery_linux_amd64 -o /usr/local/bin/cloudquery && chmod +x /usr/local/bin/cloudquery ```

1.2 风险前置校验

所有清理操作前必须完成以下操作,避免误删导致业务故障:

  • 云服务器:创建快照,阿里云执行命令aliyun ecs CreateSnapshot --InstanceId 你的实例ID --SnapshotName pre-clean-$(date +%Y%m%d),腾讯云执行命令tccli cvm CreateSnapshot --InstanceId 你的实例ID --SnapshotName pre-clean-$(date +%Y%m%d)
  • 物理服务器:执行tar zcf /opt/backup/pre-clean-$(date +%Y%m%d).tar.gz /etc /home /data/app备份核心业务目录
  • 先选1台非核心测试服务器执行完整清理流程,确认无异常后再批量操作

二、分场景冗余清理实操步骤

2.1 服务器本地冗余清理

  • 第一步:磁盘大文件扫描,执行ncdu /扫描全磁盘,标记出大小>1G的非业务文件(旧安装包、缓存、过期备份等)
  • 第二步:日志清理,先执行find /var/log -type f -mtime +30 -name ".log"列出30天以上的系统日志,确认无业务需要后,执行find /var/log -type f -mtime +30 -name ".log" -delete删除;业务日志执行find /data/app//logs -type f -mtime +15 -name ".log." -delete清理15天以上的归档日志,禁止删除正在写入的.log当前文件
  • 第三步:重复文件清理,执行fdupes -r /data/package /data/backup扫描重复的安装包、备份包,确认后执行fdupes -r -d /data/package /data/backup自动删除重复项,保留最新版本
  • 第四步:容器冗余清理,先执行docker system df查看冗余资源占用,确认后执行docker system prune -a --filter "until=720h"删除30天以上未使用的镜像、容器、卷、网络,不要加-f参数,先确认提示的资源再输入y

2.2 云资源冗余清理

先创建cloudquery配置文件/opt/cloudquery/config.yml,内容可直接复制:

```yaml kind: Source spec: name: aliyun path: cloudquery/aliyun version: "v22.10.0" tables: [""] destinations: ["sqlite"] kind: Destination spec: name: sqlite path: cloudquery/sqlite version: "v2.4.1" spec: connection_string: ./cloud_resources.db ```

执行cloudquery sync config.yml拉取全量云资源到本地数据库,执行以下命令查询冗余资源:

  • 查询闲置30天以上未挂载云盘:sqlite3 cloud_resources.db "select instance_id,name,creation_time from aliyun_ecs_disks where status='available' and creation_time < datetime('now','-30 day')"
  • 查询闲置30天以上未绑定弹性公网IP:sqlite3 cloud_resources.db "select instance_id,ip_address,creation_time from aliyun_vpc_eips where status='Available' and creation_time < datetime('now','-30 day')"
  • 查询90天以上无文件的闲置对象存储Bucket:sqlite3 cloud_resources.db "select name,creation_time from aliyun_oss_buckets where creation_time < datetime('now','-90 day') and object_count=0"

运维冗余资源全流程清理实操指南 零风险释放服务器存储算力

查询结果确认无业务关联后,直接调用云厂商API或登录控制台删除即可。

2.3 数据库冗余清理

MySQL清理步骤:

  • 先查询TOP20大表:select table_schema,table_name,round(((data_length + index_length)/1024/1024),2) as size_mb from information_schema.TABLES order by size_mb desc limit 20;
  • 清理历史归档数据前先备份,例如备份3年以上的订单数据:mysqldump -u root -p 库名 order_table --where="create_time < '2021-01-01'" > /opt/backup/order_table_20210101.sql
  • 分批删除数据避免锁表:delete from order_table where create_time < '2021-01-01' limit 1000;,循环执行直到所有无效数据删除完成,禁止一次性删除全量大表数据

Redis清理步骤:

先执行redis-cli --scan --pattern '' | xargs redis-cli ttl | grep -E '^-2$' | wc -l统计已过期键数量,确认无误后执行redis-cli --scan --pattern '' | xargs redis-cli ttl | grep -E '^-2$' | awk '{print $1}' | xargs redis-cli del删除已过期键,生产环境执行前可加--dry-run参数确认待删除键列表

三、清理后校验与回滚机制

3.1 业务可用性校验

清理后分别在10分钟、30分钟、1小时三个时间点执行以下校验:

  • 端口校验:ss -tunlp | grep 业务端口号确认端口正常监听
  • 进程校验:ps aux | grep 业务进程名确认进程正常运行
  • 接口校验:curl -I http://127.0.0.1:业务端口/健康检查路径确认返回码为200

3.2 故障回滚方案

  • 云服务器业务异常:直接在控制台回滚到清理前创建的快照即可
  • 物理服务器业务异常:执行tar xf /opt/backup/pre-clean-对应日期.tar.gz -C /恢复核心目录备份
  • 数据库误删数据:执行mysql -u root -p 库名 < /opt/backup/对应备份文件.sql恢复数据备份

四、常态化冗余清理规则

直接将以下规则加入crontab,实现自动清理,避免手动操作遗漏:

```shell 每周一凌晨2点清理30天以上系统日志 0 2 1 /usr/bin/find /var/log -type f -mtime +30 -name ".log" -delete >> /var/log/clean_log.log 2>&1 每月1号凌晨3点清理30天以上未使用Docker冗余资源 0 3 1 /usr/bin/docker system prune -a --filter "until=720h" -f >> /var/log/docker_clean.log 2>&1 每季度1号凌晨4点扫描全量云冗余资源并生成报表 0 4 1 /3 cd /opt/cloudquery && /usr/local/bin/cloudquery sync config.yml && /usr/bin/sqlite3 cloud_resources.db "select '未挂载云盘' as type,instance_id,creation_time from aliyun_ecs_disks where status='available' union all select '闲置EIP' as type,instance_id,creation_time from aliyun_vpc_eips where status='Available'" > /opt/cloudquery/clean_report_$(date +%Y%m%d).txt ```

收到报表后人工确认冗余资源,确认无业务关联后手动删除即可,避免自动清理误删可用资源。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图