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创建进程的核心系统调用是什么?

    Linux创建进程的核心系统调用是fork(),它通过复制调用进程(父进程)创建一个新进程(子进程),随后通常调用execve()系列函数加载并执行新程序,替换子进程的地址空间。

    2025年7月24日
    14800
  • Linux磁盘空间不足如何扩容?

    准备工作备份数据重要提示: 任何磁盘操作前必须备份数据!误操作可能导致数据丢失,检查当前磁盘状态 lsblk # 查看所有块设备df -Th # 查看已挂载的文件系统及类型sudo fdisk -l # 列出磁盘分区详情确认可用空间如果是虚拟机或云服务器,先确保底层存储已扩容(如AWS EBS、KVM虚拟磁盘……

    2025年8月6日
    16700
  • Linux中如何正确运行Shell?

    运行Shell的4种核心方式直接启动交互式Shell打开终端(快捷键 Ctrl+Alt+T 或通过应用菜单搜索“Terminal”),系统自动加载默认Shell(如Bash、Zsh),显示命令提示符(如 或 ),输入命令后按回车执行, $ echo "Hello, Linux!" # 输出文……

    2025年7月10日
    18200
  • cdlinux如何制作u盘启动?步骤与方法详解?

    CDLinux是一款轻量级的Linux发行版,专注于系统维护、数据恢复、网络诊断等场景,因其体积小、功能丰富而受到许多技术爱好者的青睐,通过U盘启动CDLinux,无需将其安装到硬盘中,即可在任意电脑上运行,特别适合应急处理或临时使用,以下是详细的CDLinux U盘启动步骤,涵盖准备工作、制作启动盘、BIOS……

    2025年8月23日
    16100
  • Linux下如何用C语言编写程序的详细步骤与方法?

    在Linux操作系统中,使用C语言进行程序开发是系统级编程和应用开发的基础,Linux本身由C语言编写,其内核、系统调用及底层工具链都与C语言深度集成,因此掌握Linux下的C语言开发是理解系统工作原理和高效开发的关键,以下从环境搭建、基础语法、文件操作、进程管理、多线程及调试编译等方面详细介绍Linux下C语……

    2025年9月21日
    13900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信