centos系统垃圾清理

核心是清理冗余文件+压缩文件系统+裁剪无用组件+优化 Docker 镜像,以下是分步骤的极致精简方案,每一步都可落地验证:

一、 先明确当前硬盘占用问题

df -lh 输出看:

  • /dev/mapper/centos-root 总容量 37G,已用 11G → 目标是压到 ≤10G
  • Docker 的 overlay 挂载点占用和 root 一致 → 说明 Docker 镜像/容器存在冗余,是主要精简对象

二、 步骤1:清理 Docker 冗余(最立竿见影,可减 2-5G)

Docker 是 CentOS 7 硬盘占用大户,优先清理:

# 1. 停止 Docker 服务
systemctl stop docker

# 2. 清理无用容器、镜像、卷、网络
docker system prune -a -f --volumes

# 4. 清理 Docker 日志
find /var/lib/docker/containers/ -name "*.log" -delete

# 5. 重启 Docker
systemctl start docker

三、 步骤2:清理系统冗余文件(减 1-3G)

1. 清理系统包缓存+无用依赖


# 1. 清理 yum 缓存(默认会存大量安装包)
yum clean all
rm -rf /var/cache/yum/*

# 2. 卸载无用依赖包
yum autoremove -y
# 可选:卸载 kernel-devel、kernel-headers 等开发包(服务器不需要)
yum remove -y kernel-devel kernel-headers

# 3. 清理系统日志(/var/log 下日志文件可能很大)
# 只保留最近 1 天的日志,删除旧日志
find /var/log -type f -name "*.log*" -mtime +1 -delete
# 清空当前日志(不删除文件)
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/secure

2. 清理临时文件+无用组件


# 1. 删除临时文件
rm -rf /tmp/*;rm -rf /var/tmp/*

# 2. 卸载无用系统组件(根据实际需求选删)
# 例如:删除打印服务、图形化组件、邮件服务等
yum remove -y cups avahi sendmail postfix
# 禁用并删除 firewalld(用 iptables 替代或直接关闭)
systemctl disable --now firewalld
yum remove -y firewalld

# 3. 删除 man 手册、帮助文档(纯服务器用不到)
rm -rf /usr/share/man/*
rm -rf /usr/share/doc/*

四、 步骤3:裁剪系统分区(关键!将 37G 缩到 10G 以内)

如果清理后 root 分区仍大于 10G,需要压缩 LVM 逻辑卷(CentOS 7 默认用 LVM 管理分区),这是最直接的缩容方法。

前提条件

  1. 先执行 e2fsck 检查文件系统(必须!否则缩容会损坏数据)
  2. 确保 root 分区已用空间 ≤8G(留 2G 余量)

缩容步骤


# 1. 卸载 root 分区?NO!CentOS 7 根分区无法在线卸载,需进入单用户模式
# 方法:重启虚拟机,开机时按 e 进入 grub 编辑模式
# 找到 linux16 开头的行,末尾添加 init=/bin/bash
# 按 Ctrl+X 启动,进入单用户模式

# 2. 重新挂载 root 分区为只读(修复文件系统)
mount -o remount,ro /

# 3. 检查文件系统(必须!)
e2fsck -f /dev/mapper/centos-root

# 4. 调整文件系统大小为 9G(留 1G 余量,确保 ≤10G)
resize2fs /dev/mapper/centos-root 9G

# 5. 调整 LVM 逻辑卷大小为 9G
lvreduce -L 9G /dev/mapper/centos-root

# 6. 重新挂载 root 分区为读写
mount -o remount,rw /

# 7. 重启系统
reboot

# 8. 验证缩容结果
df -lh /
# 输出应该是 /dev/mapper/centos-root 容量 9G 左右

五、 步骤4:优化内存和 CPU(达到 1C1G 标准)

1. 调整虚拟机硬件配置(VMware 界面操作)

  1. 关闭虚拟机 → 右键 → 编辑设置
  2. CPU:设置为 1 个核心,取消「超线程」
  3. 内存:设置为 1024MB(1G),取消「预留全部内存」
  4. 硬盘:确认虚拟磁盘类型为 精简置备(Thin Provisioning),进一步节省宿主机空间

2. 系统内核优化(减少内存占用)


# 1. 关闭透明大页(减少内存浪费)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久生效:写入 /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local

# 2. 降低 swap 触发阈值(1G 内存下避免频繁 swap)
echo "vm.swappiness=5" >> /etc/sysctl.conf
sysctl -p

# 3. 禁用不必要的服务(进一步减内存)
systemctl disable --now NetworkManager avahi-daemon bluetooth

六、 最终验证(确保达到 1C1G10G 标准)


# 1. 验证硬盘占用(≤10G)
df -lh / | grep /dev/mapper/centos-root

# 2. 验证内存占用(空闲时 ≤500M,符合 1G 内存)
free -h

# 3. 验证 CPU 核心数(1 核)
lscpu | grep "CPU(s):" | head -1