麒麟V10系统磁盘空间管理与优化实战指南
2026/8/15 8:08:50 网站建设 项目流程

1. 麒麟V10系统磁盘满问题的典型表现

麒麟V10作为国产操作系统的代表版本,在日常使用中经常会遇到系统盘空间不足的告警。根据我多年运维经验,这个问题通常表现为以下几种典型场景:

  • 系统日志持续输出导致/var目录膨胀(特别是/var/log/journal目录)
  • 软件包缓存未清理(/var/cache/apt/archives或/var/cache/yum)
  • 容器运行时存储失控(/var/lib/docker/overlay2)
  • 用户家目录大文件堆积(特别是下载目录和桌面)
  • 临时文件未清理(/tmp目录积压)

提示:在麒麟V10中,默认启用的systemd-journald会持续记录系统日志,这是最容易被忽视的空间占用源。实测一个中等负载的服务器,半年不清理日志可能占用超过20GB空间。

2. 诊断磁盘空间占用的标准流程

2.1 使用基础命令快速定位

首先通过组合命令建立整体认知:

df -hT | grep -v tmpfs # 查看各分区使用情况(排除临时文件系统) du -sh /* | sort -rh | head -10 # 找出根目录下占用最大的前10个目录

这个组合能快速发现异常点。比如某次排查中发现/var占用达85%,进一步分析:

du -sh /var/* | sort -rh | head -5

2.2 针对特殊目录的深度分析

对于常见问题目录需要特殊处理技巧:

日志目录分析:

journalctl --disk-usage # 查看journal日志总大小 ls -lh /var/log/journal/$(cat /etc/machine-id) # 查看具体日志文件

容器存储分析:

docker system df # Docker专用分析命令 podman stats --no-stream # Podman的替代方案

软件包缓存检查:

# 对于APT系 du -sh /var/cache/apt/archives # 对于YUM系 yum clean all --enablerepo='*' # 先清理再检查

3. 针对性清理方案与实施步骤

3.1 日志文件的智能清理

推荐使用logrotate配置自动化管理,示例配置:

/var/log/syslog { daily rotate 7 compress delaycompress missingok notifempty create 640 root adm }

对于journal日志,调整/etc/systemd/journald.conf:

SystemMaxUse=500M # 限制总大小 MaxRetentionSec=1month # 保留时长

立即生效命令:

systemctl restart systemd-journald journalctl --vacuum-size=200M # 立即缩减到200MB

3.2 软件包缓存的清理策略

根据包管理器类型选择方案:

APT系(银河麒麟常用):

apt-get autoremove --purge # 删除无用包 apt-get clean # 清空下载缓存

YUM/DNF系:

package-cleanup --oldkernels --count=1 # 只保留当前内核 dnf autoremove # 自动移除无用依赖

3.3 容器存储的优化方案

对于Docker用户必做操作:

docker system prune -af # 清理所有无用对象 # 更彻底的清理(会删除所有停止的容器) docker system prune -af --volumes

建议在crontab中添加定期任务:

0 3 * * * /usr/bin/docker system prune -f >/dev/null 2>&1

4. 预防性维护与高级技巧

4.1 文件系统的监控方案

配置prometheus+node_exporter监控关键指标:

# prometheus.yml 片段 - job_name: 'kylin' static_configs: - targets: ['localhost:9100'] metrics_path: '/metrics'

对应告警规则示例:

groups: - name: disk.rules rules: - alert: DiskSpaceCritical expr: (node_filesystem_avail_bytes{fstype=~"ext4|xfs",mountpoint="/"} * 100) / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} < 10 for: 5m

4.2 LVM的动态扩展方案

对于采用LVM分区的系统,扩展步骤:

pvcreate /dev/sdb1 # 假设新增磁盘为sdb1 vgextend vg_kylin /dev/sdb1 # 扩展卷组 lvextend -L +50G /dev/vg_kylin/lv_root # 扩展逻辑卷 resize2fs /dev/vg_kylin/lv_root # 调整文件系统

4.3 用户空间配额管理

启用配额系统:

# /etc/fstab 添加usrquota,grpquota选项 /dev/vg_kylin/lv_home /home ext4 defaults,usrquota,grpquota 0 0 # 初始化配额 quotacheck -cugm /home quotaon -av

设置用户限额:

setquota -u username 500M 1G 0 0 /home

5. 疑难案例分析与解决方案

5.1 已删除文件但空间未释放问题

常见于被进程占用的文件:

lsof +L1 # 查看被删除但未释放的文件 # 典型输出示例: # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME # java 123 root 1w REG 253,0 10240000 0 12345 /var/log/app.log (deleted)

解决方案:

# 方案1:重启持有进程 systemctl restart service_name # 方案2:清空文件内容 truncate -s 0 /proc/123/fd/1 # 其中123是PID

5.2 磁盘IO异常导致的误报

当出现"no space left"但df显示有空闲时:

df -i # 检查inode使用情况 # 若inode耗尽,需要找到小文件聚集目录 find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

5.3 特殊文件系统问题处理

对于overlay2存储驱动的问题:

docker info | grep "Storage Driver" # 确认驱动类型 # 清理时需要先停止所有容器 systemctl stop docker rm -rf /var/lib/docker/overlay2/* systemctl start docker

我在某次生产环境维护中,发现一个Oracle数据库服务器频繁报磁盘空间不足,但常规检查未发现异常。最终通过以下命令定位到问题:

find / -type f -size +1G -exec ls -lh {} + 2>/dev/null

结果发现是审计日志(/var/log/audit/audit.log)因配置错误增长到47GB。通过优化auditd规则并设置日志轮转解决了问题。这个案例说明,有时候需要跳出常规思路,直接搜索大文件可能更高效。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询