银河麒麟服务器磁盘空间排查:从df/du命令到日志轮转的运维实战

发布时间:2026/9/25 11:46:47

银河麒麟服务器磁盘空间排查:从df/du命令到日志轮转的运维实战 1. 从“磁盘已满”警报到问题定位一次典型的运维响应早上刚到工位还没来得及泡杯茶监控平台的告警邮件就弹了出来“服务器/根分区使用率超过95%”。点开一看是一台运行着银河麒麟高级服务器操作系统V10的生产环境主机。这种告警在运维工作中再常见不过但处理起来却丝毫不能马虎。磁盘空间爆满轻则导致应用日志无法写入服务异常重则可能引发系统崩溃数据丢失。对于银河麒麟这类常用于关键业务领域的国产操作系统其稳定性和数据完整性要求更高排查必须快速、准确、彻底。很多新手面对“磁盘已满”的第一反应是直接去找最大的文件删掉这往往治标不治本甚至可能误删关键数据。一个系统化的排查思路不仅能解决眼前的问题更能帮助我们理解系统的存储消耗模式预防未来再次发生。今天我就结合这次真实的排查经历梳理出一套在银河麒麟高级服务器操作系统同样适用于CentOS、统信UOS等主流Linux发行版上通用的磁盘空间满排查思路。这套方法从宏观到微观从表象到根因力求让你在遇到类似问题时能胸有成竹手到病除。2. 初步诊断确认问题范围与常用命令解读当告警响起我们首先需要登录服务器确认问题的真实性和范围。不要完全依赖监控数据亲自验证是第一步。2.1 使用df命令确认整体磁盘使用情况df(disk free) 命令是查看文件系统磁盘空间使用情况的首选工具。它的输出直观地显示了每个挂载点的总容量、已用空间、可用空间和使用百分比。df -h执行上述命令-h参数代表“人类可读”会自动将字节转换为 G、M 等单位。输出可能类似这样文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 1.1M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/vda1 100G 95G 0G 100% / /dev/vdb1 500G 123G 377G 25% /data关键解读/dev/vda1这是我们的系统盘挂载在根目录/。容量100G已用95G可用空间为0使用率100%。这证实了告警问题就出在这里。/dev/vdb1这是一块数据盘挂载在/data空间充足。这提示我们问题很可能集中在系统本身或运行业务产生的临时文件、日志上而非用户数据。tmpfs系列这是内存文件系统空间来自内存与磁盘无关通常无需关注。注意df命令显示的是文件系统层面的信息。有时你会发现df -h显示已用100%但用dudisk usage命令去统计/目录下所有文件的大小总和却远小于磁盘容量。这种“空间幽灵”现象通常是由于文件被删除后其占用的空间并未被释放例如被某个仍在运行的进程持有或者磁盘存在大量的“孤儿”数据块。我们会在后续章节深入探讨。2.2 使用du命令定位大目录确认了问题分区后下一步是找出哪个些目录占用了大量空间。du(disk usage) 命令用于估算文件和目录的磁盘使用量。一个非常高效的命令组合是cd / # 切换到根目录因为问题在根分区 du -h --max-depth1 | sort -rh | head -20命令拆解与原理du -h --max-depth1以人类可读格式(-h)统计当前目录/下一级子目录和文件的磁盘使用量(--max-depth1)。如果不加--max-depth它会递归统计所有子目录在根目录执行会非常慢且输出冗长。sort -rh对du的输出进行排序。-r表示反向排序从大到小-h表示按人类可读的数值如 10G, 100M排序而不是按字符串那样会导致 10G 排在 9G 前面因为 ‘1’ ‘9’。head -20只显示排序后前20行结果。执行后你可能会看到类似这样的输出85G /var 6.5G /usr 2.1G /home 1.3G /opt ...很明显/var目录是“罪魁祸首”占用了85G空间。我们的排查范围一下子从整个根分区缩小到了/var目录。3. 深度探查针对可疑目录的逐层剖析找到了“嫌疑”最大的目录如/var我们需要像侦探一样一层层深入找到最终占用空间的具体文件或原因。3.1 逐级深入定位具体目录继续使用du命令但这次我们进入/var目录并查看其下一级目录的大小。cd /var du -h --max-depth1 | sort -rh | head -10输出可能显示70G /var/log 10G /var/lib 3.2G /var/cache ...问题进一步聚焦到/var/log日志目录。这是磁盘空间问题的“高发区”。3.2 分析/var/log日志文件的常见陷阱进入/var/log同样使用du命令。这里需要特别注意一些特殊的日志文件或目录系统日志/var/log/messages,/var/log/syslog,/var/log/kern.log等。应用日志如/var/log/nginx/,/var/log/mysql/,/var/log/redis/等。审计日志/var/log/audit/audit.log如果启用了审计服务这个文件可能增长极快。journal 日志这是 systemd 的日志系统。虽然日志文件本身在/run/log/journal/内存中但如果配置了持久化存储其归档文件会存放在/var/log/journal/下也可能占用大量空间。一个快速查看大日志文件的命令是ls -lhS /var/log/ | head -10 # -S 按文件大小排序-h 人类可读-l 长格式显示或者直接查找超过一定大小的文件find /var/log -type f -size 100M -exec ls -lh {} \;实操心得在银河麒麟系统中除了通用服务还需关注其特有的组件日志。例如与安全相关的模块、国产中间件或适配服务的日志它们可能存放在非标准路径。我曾遇到过一个案例某个国产数据库的调试日志默认全开且未配置轮转短短一周就写满了200G的日志分区。3.3 处理已删除但未释放的文件lsof有时du统计的大小远小于df显示的已用空间。这通常是因为有文件被删除rm但打开该文件的进程仍在运行导致磁盘空间并未真正释放给系统。使用lsof(list open files) 命令可以查看这类文件lsof | grep deleted这条命令会列出所有已被删除但还被进程占用的文件。输出会显示进程PID、命令和文件描述符。解决方法是找到对应的进程并安全地重启它例如重启相关的Web服务、数据库服务这样内核才会释放这些空间。重要提示对于生产环境的核心服务如数据库盲目重启可能导致服务中断。务必在业务低峰期或已有高可用方案的情况下与业务方充分沟通后操作。也可以尝试通过向进程发送信号如 HUP让其重新打开日志文件但这取决于应用本身是否支持。4. 专项排查系统与应用的存储消耗点除了通用的日志目录银河麒麟高级服务器操作系统还有一些特定的位置和场景需要重点关注。4.1 软件包缓存/var/cache目录/var/cache目录存放着应用程序的缓存数据。对于使用yum银河麒麟V10通常使用dnf或yum或apt某些版本或衍生版的包管理器来说下载的软件包.rpm或.deb文件会缓存于此。du -sh /var/cache/yum # 或 /var/cache/dnf, /var/cache/apt如果这个目录很大可以安全地清理前提是你确认近期不需要降级或重新安装这些软件包yum clean all # 对于 yum/dnf # 或 apt-get clean # 对于 apt4.2 容器与虚拟化环境Docker Kubernetes如果服务器上运行了 Docker 或 Kubernetes它们将是磁盘空间的“吞噬巨兽”。Docker检查 Docker 的存储目录默认是/var/lib/docker特别是其中的overlay2存储驱动目录和containers。docker system df -v # 查看Docker磁盘使用详情可以清理无用的镜像、容器、卷和构建缓存docker system prune -a --volumes警告-a会删除所有未被容器使用的镜像--volumes会删除未被使用的卷执行前请务必确认Kubernetes在 K8s 节点上除了 Docker/Containerd 的空间还需要关注 Kubelet 管理的 Pod 日志和容器镜像。日志通常在/var/log/pods/和/var/log/containers/。镜像和容器层数据则在容器运行时对应的目录。4.3 银河麒麟特有组件与配置根据提供的热词银河麒麟系统有一些特有的配置点可能影响磁盘TPCM模块如果部署了可信计算相关模块其日志或数据存储位置需要查阅相关文档。授权与激活/etc/kylin-activation/等目录存放授权文件通常很小但需确认。国产软件适配如安装的 WPS、搜狗输入法、EasyConnect 等其用户数据或缓存可能位于~/.config/或~/.cache/下的特定目录。虽然单用户不大但用户数多时也需考虑。系统更新残留系统升级如 V10 升 V11后旧版本的内核、软件包可能残留。使用dnf或yum命令可以清理package-cleanup --oldkernels --count1 # 仅保留最新一个内核 dnf autoremove # 移除不再需要的依赖包5. 高级工具与根因分析技巧当常规方法无法定位时或者需要更直观地分析时可以借助一些高级工具。5.1 使用ncdu进行交互式分析ncdu(NCurses Disk Usage) 是一个基于终端的交互式磁盘使用分析器。它比du更直观可以像文件管理器一样浏览目录并快速查看各目录占比。# 首先需要安装银河麒麟通常可以通过yum/dnf安装 yum install ncdu -y # 然后扫描目录 ncdu /进入界面后使用方向键导航按d键删除文件谨慎它能非常高效地帮你定位到最深层的那个大文件。5.2 分析文件系统 inode 耗尽问题磁盘空间满有两种情况块(block)耗尽和inode 耗尽。df命令默认查看块使用情况。inode存储文件的元信息权限、所有者、时间戳等。如果一个分区存在海量小文件例如邮件服务器、缓存服务器即使总数据量不大也可能耗尽 inode导致无法创建新文件。使用df -i命令查看 inode 使用情况df -ih如果IUse%列达到或接近 100%说明是 inode 耗尽。此时需要寻找哪个目录下的小文件最多。可以使用以下命令# 查找文件数最多的目录前20名 find / -xdev -type f | awk -F/ {print $NF} | sort | uniq -c | sort -rn | head -20 # 或者更精确地统计每个一级目录下的文件数量 for i in /*; do echo -n $i: ; find $i -type f 2/dev/null | wc -l; done | sort -k2 -rn | head -205.3 处理“空间差”问题du与df不一致的深度解析这是排查中的一个经典难题。du -sh /统计的是/下所有文件大小的总和而df -h /显示的是文件系统块的使用情况。两者不一致的常见原因有已删除但未释放的文件如前所述用lsof | grep deleted处理。文件系统预留空间Ext4/XFS 等文件系统默认会为 root 用户保留约 5% 的空间使用tune2fs -l /dev/vda1 | grep ‘Reserved block count’查看。这部分空间df会算作已用但du不会统计。在数据盘上可以通过tune2fs -m 1 /dev/vdb1将预留比例调整为 1%。文件系统内部开销如 journal日志、inode tables 等元数据占用的空间。稀疏文件 (Sparse File)或文件空洞某些数据库文件或虚拟磁盘文件可能是稀疏文件它们逻辑上看很大但实际占用的物理块不多。du报告的是实际分配的块ls -l显示的是逻辑大小而df反映物理块使用。du --apparent-size可以查看逻辑大小。容器 overlayfs 存储驱动的影响Docker 的 overlay2 驱动会存在“写时复制”带来的空间放大效应docker system df是更准确的查看方式。6. 清理策略、预防措施与自动化找到问题并清理后更重要的是建立预防机制避免问题复发。6.1 安全清理操作指南清理不是简单的rm -rf必须遵循安全原则备份优先删除任何不确定的文件前先将其移动到临时目录如/tmp/to_delete观察一段时间确认无影响后再删除。日志轮转 (Log Rotation)这是治本之策。配置logrotate服务对应用日志进行自动轮转、压缩和删除。银河麒麟系统自带了logrotate配置文件在/etc/logrotate.conf和/etc/logrotate.d/目录下。你需要为你业务的关键应用如 Nginx, MySQL添加或修改配置。# 示例/etc/logrotate.d/myapp /var/log/myapp/*.log { daily # 每天轮转 rotate 30 # 保留30份旧日志 compress # 压缩旧日志 delaycompress # 延迟一天压缩 missingok # 日志不存在时不报错 notifempty # 空日志不轮转 create 644 root root # 创建新日志文件的权限 postrotate /bin/kill -HUP cat /var/run/myapp.pid 2/dev/null 2/dev/null || true # 通知应用重载日志 endscript }使用truncate命令清空大日志文件对于正在被进程写入的日志文件直接删除 (rm) 可能导致进程报错。更安全的方法是清空其内容 /var/log/huge.log # 或 truncate -s 0 /var/log/huge.log这会将文件大小截断为0但文件描述符依然被进程持有可以继续写入。6.2 配置监控与告警不能总等问题发生了才处理。应该配置监控系统如 Zabbix, Prometheus Grafana对磁盘使用率进行持续监控。监控项不仅监控/根分区还要监控/home,/var,/data等重要挂载点。告警阈值建议设置两级告警。例如使用率超过80%触发警告Warning提醒管理员关注超过90%触发严重Critical告警需要立即处理。预测性监控可以监控磁盘空间每日增长量预测其将在多少天后写满实现更早的预警。6.3 自动化清理脚本示例对于某些已知的、可定期清理的临时目录或缓存可以编写脚本并加入crontab实现自动化。#!/bin/bash # cleanup_script.sh # 1. 清理YUM/DNF缓存 /usr/bin/yum clean all /dev/null 21 # 2. 清理超过30天的临时文件 find /tmp -type f -mtime 30 -delete 2/dev/null find /var/tmp -type f -mtime 30 -delete 2/dev/null # 3. 清理Docker无用资源谨慎需根据环境评估 # /usr/bin/docker system prune -f --filter until168h /dev/null 21 # 4. 清理特定应用日志在logrotate之外补充 # find /var/log/myapp -name *.log.* -mtime 7 -delete # 5. 发送清理报告可选 echo Disk cleanup completed on $(hostname) at $(date) /var/log/disk_cleanup.log然后通过crontab -e添加定时任务例如每周日凌晨3点执行0 3 * * 0 /root/scripts/cleanup_script.sh磁盘空间管理是系统运维的基本功也是一个需要持续观察和优化的过程。通过这次从告警到根因排查的全过程我们不仅解决了眼前的问题更建立了一套可重复使用的方法论。记住面对“磁盘已满”保持冷静按照“确认范围 (df) - 定位大目录 (du) - 深入分析 (日志、缓存、特定目录) - 解决未释放文件 (lsof) - 实施安全清理 - 建立预防机制”的流程绝大多数问题都能迎刃而解。在银河麒麟这样的生产环境中养成定期巡检磁盘空间和日志轮转配置的习惯能让你的系统运行得更加稳健。
延伸阅读

更多相关文章

2026/9/22 20:51:57

AI基础软件:从模型开发到工程落地的核心平台与MLOps实践

1. 项目概述:从一则融资新闻看AI基础软件的“硬核”价值前几天在圈子里看到九章云极DataCanvas公司完成D1轮融资的消息,说实话,我一点都不意外。这几年,但凡名字里带“人工智能”和“基础软件”的公司,能活下来并且拿到…

2026/9/24 18:00:49

AI客服机器人意图识别:从NLU原理到BERT模型实战部署

1. 项目概述:从“答非所问”到“心有灵犀”的跨越做AI客服机器人,最怕什么?不是用户问题刁钻,而是机器人“答非所问”。用户问“我的订单怎么还没发货?”,机器人回“我们的商品支持七天无理由退换货”。这种…

2026/9/21 6:25:01

OpenClaw五层架构解析:从零部署AI智能体工厂的实践指南

1. 项目概述:从“小龙虾”到智能体工厂最近在折腾本地AI智能体部署的朋友,估计没少被“OpenClaw”这个名字刷屏。乍一听,这名字有点怪,像某种开源机械爪或者海鲜品牌,但它在AI智能体圈子里,已经成了一个绕不…

2026/9/25 11:43:04

智谱唐杰清华开课:大模型全链路实操从数据到部署

1. 这门课到底在教什么:从标题拆解真实意图先把标题拆开看。“智谱唐杰清华开课”,主语是智谱和唐杰,场景是清华的课堂,动作是“开课”。“爆改课程内容”说明这不是照本宣科的老课件,而是把原有课程结构推倒重来。“让…

2026/9/25 11:43:04

DeepSeek MoE架构与长上下文部署实战:从原理到工程踩坑

1. 为什么DeepSeek值得单独拎出来讲第一次把DeepSeek的权重文件拖到本地跑起来的时候,我盯着显存占用曲线看了很久。同样参数规模的稠密模型,显存早就爆了,而它还能留出余量给长上下文。这个反差让我意识到,MoE加长上下文这套组合…

2026/9/25 11:43:04

OpenCode多模型接入:DeepSeek与Muse Spark性价比验证

近期的 AI 编码工具社区里,经常能看到这样的标题:“无限额度?超越 DeepSeek 的性能和性价比!Muse Spark 上线 opencode,gpt5.6sol 半价!”。先说结论:这类说法里有真实的工具趋势,也…

2026/9/25 11:43:04

每日更新ArXiv CV论文:自动化抓取、过滤与推送实战

1. 这个每日更新项目到底在做什么每天早上八点半,我习惯性地打开终端,先跑一遍当天的ArXiv CV板块抓取脚本,把新挂出来的论文标题、摘要、作者和PDF链接拉下来,筛掉那些明显灌水的,再把真正有意思的十几篇整理成一份清…

2026/9/25 11:43:04

钢板表面缺陷检测数据集:划伤/孔洞/焊缝三类YOLO-ready资源

简介:本资源是一份面向工业视觉检测领域的钢板表面缺陷数据集,专为缺陷检测与目标检测算法研发、模型训练及课程实验设计,适用于计算机视觉初学者与工程实践者。数据集融合铝型材与德国DAGM两大公开数据集,聚焦划伤、孔洞、焊缝三…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/25 0:02:35

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:02:35

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:02:35

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑