Linux磁盘空间不足?如何彻底清理与扩展

查看磁盘空间使用情况

整体磁盘占用 (df命令)

df -h  # 以人类可读格式(GB/MB)显示所有挂载点
  • 关键列解读
    • Filesystem:磁盘分区名称(如/dev/sda1
    • Size:分区总容量
    • Used:已用空间
    • Avail:可用空间
    • Use%:使用百分比(≥80%需警惕)
    • Mounted on:挂载路径(如、/home

目录级空间分析 (du命令)

du -sh /path/to/directory  # 查看目录总大小
du -h --max-depth=1 /home  # 显示/home下所有子目录大小
  • 高级用法
    • 按大小排序:du -h /var | sort -rh | head -n 10(列出/var下最大的10个文件/目录)
    • 排除特定文件类型:du -h --exclude="*.log" /var

深度分析空间占用来源

定位大文件

find / -type f -size +500M 2>/dev/null  # 搜索大于500MB的文件
  • 解释
    • 2>/dev/null:忽略权限错误提示
    • 替代工具:ncdu(交互式磁盘分析器,需安装)

检查隐藏空间消耗

  • 日志文件:系统日志(/var/log)可能积累数GB数据
  • 缓存文件:包管理器缓存(/var/cache/apt/var/cache/dnf
  • 未清理的临时文件/tmp 或用户目录下的.cache

清理磁盘空间实战步骤

安全删除旧日志

journalctl --vacuum-size=200M  # 限制systemd日志为200MB
rm /var/log/*.log.*  # 删除已轮转的旧日志(先确认内容)

清理包管理器缓存

  • Debian/Ubuntu
    apt clean      # 删除所有已下载的.deb包
    apt autoclean  # 仅删除过期的包
  • RHEL/CentOS
    dnf clean all  # 或 yum clean all

删除临时文件

rm -rf ~/.cache/*   # 用户缓存
sudo rm -rf /tmp/*  # 系统临时文件(注意活跃进程勿删)

扩展磁盘空间(高级操作)

逻辑卷扩容(LVM)

lvextend -L +20G /dev/mapper/ubuntu-vg/root  # 增加20G
resize2fs /dev/mapper/ubuntu-vg/root         # 调整文件系统
  • 前提:需提前在物理卷(PV)中预留空间。

符号链接转移大目录

mv /var/lib/docker /mnt/disk2/      # 迁移Docker数据
ln -s /mnt/disk2/docker /var/lib/   # 创建软链接
  • 适用场景:数据库、Docker等动态增长的数据。

常见问题解决方案

Q1:df显示空间不足,但du统计结果更小?

  • 原因:文件被删除但仍被进程占用(如日志文件)。
  • 解决:重启相关进程或系统,或使用lsof | grep deleted定位后终止进程。

Q2:inode用尽导致“No space left”错误?

df -i  # 检查inode使用率
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n  # 统计目录inode
  • 处理:删除小文件(如邮件缓存/var/spool/postfix)或迁移目录。

自动化监控建议

  1. 定期检查脚本
    #!/bin/bash
    ALERT=80
    df -h | awk -v ALERT="$ALERT" '$5+0 > ALERT {print $6 " 使用率: " $5}' 
  2. 工具推荐
    • cockpit:图形化服务器管理工具
    • Prometheus+Grafana:企业级监控方案

定期检查磁盘空间(建议每周一次),结合dfduncdu等工具分析,可预防90%的磁盘危机,清理操作前务必确认文件重要性,关键数据建议备份,对于生产服务器,推荐通过日志轮转(logrotate)和监控系统实现长效管理。

引用说明基于Linux手册页(man df/man du)、IBM LVM管理指南及Red Hat官方文档,操作命令已在Ubuntu 22.04/CentOS 7+验证,符合Filesystem Hierarchy Standard(FHS)标准。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5086.html

(0)
酷番叔酷番叔
上一篇 2025年6月20日 04:54
下一篇 2025年6月20日 06:00

相关推荐

  • Linux中kill命令执行后无法退出,如何处理?

    在Linux系统中,kill命令是用于向进程发送信号的核心工具,其名称中的“kill”常被误解为仅用于“终止进程”,但实际上它本质上是“向进程发送信号”,而“终止”只是信号的一种结果(如默认的SIGTERM信号),用户提到的“linux如何退出kill”,可能涉及多种场景:误输入kill命令后如何取消执行、ki……

    2025年10月3日
    2400
  • 月入过万为何存不下钱?

    Approach指解决问题或达成目标的具体方法或路径,包括策略、步骤和工具的选择与实施,旨在系统化、高效地实现预期结果。

    2025年7月28日
    7000
  • 如何快速查看Linux磁盘唯一ID?

    通过 lsblk 命令(推荐)作用:列出块设备信息,包含设备路径、UUID 和文件系统类型,步骤:打开终端,输入: lsblk -o NAME,UUID,SERIAL,MODEL查看输出示例: NAME UUID SERIAL MODELsda 5f3e8a1c-01e4-4b2a-9c7d-8a1b0c9d0……

    2025年6月15日
    6800
  • 如何快速查看电脑/手机默认网关?

    在Linux系统中,删除默认网关是网络配置调整的常见操作,通常用于切换网络环境、解决路由冲突或故障排除,以下是三种主流方法,操作前请务必注意:备份当前配置:执行 ip route show > ip_route_backup.txt 保存现有路由表权限要求:所有命令需 root 权限(前缀 sudo 或切……

    2025年7月14日
    8100
  • Linux集群搭建与管理速成?

    集群基础操作登录集群使用SSH连接登录头节点(管理节点): ssh username@head-node-ip禁止直接登录计算节点,所有任务通过头节点提交,环境加载集群软件通常通过module管理环境变量,常用命令:module avail # 查看可用软件列表module load openmpi/4.1.2……

    2025年6月20日
    8200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信