Linux 系统中的“空间管理”通常包含两个核心维度:磁盘空间(Disk Space)和内存空间(Memory/RAM),还包括文件系统的挂载、配额管理以及日志清理等运维操作。
以下是 Linux 空间管理的全面指南,涵盖常用命令、最佳实践和故障排查。
磁盘空间管理 (Disk Space)
查看磁盘使用情况
df(Disk Free):查看文件系统整体的磁盘使用情况。df -h # 以人类可读格式(GB/MB)显示 df -i # 查看 inode 使用情况(重要:inode 耗尽会导致无法创建文件,即使磁盘还有空间)
du(Disk Usage):查看特定目录或文件占用的空间。du -sh /var/log/ # 查看 /var/log 下每个子目录的大小 du -sh . # 查看当前目录总大小 du -ah | sort -nr | head -20 # 找出当前目录下最大的20个文件
查找大文件/大目录
当磁盘空间不足时,需要快速定位“罪魁祸首”:
# 在当前目录及其子目录中查找大于 100M 的文件
find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null
# 或者使用 ncdu 工具(推荐,交互式界面)
sudo apt install ncdu # Debian/Ubuntu
sudo yum install ncdu # CentOS/RHEL
ncdu /path/to/directory
清理无用文件
- 包管理器缓存:
# Ubuntu/Debian sudo apt clean # CentOS/RHEL sudo yum clean all
- 日志文件清理:
# 清空日志文件内容(不删除文件,保留句柄) sudo truncate -s 0 /var/log/syslog # 或使用 echo echo "" > /var/log/syslog
- 旧内核清理(CentOS/RHEL):
package-cleanup --oldkernels --count=2
扩展磁盘空间
- LVM 逻辑卷管理(推荐):
如果使用了 LVM,可以在不重启的情况下扩展逻辑卷:# 1. 扩展物理卷 pvresize /dev/sdb # 2. 扩展逻辑卷 lvextend -l +100%FREE /dev/mapper/vg0-lv0 # 3. 扩展文件系统 xfs_growfs /mount/point # XFS 文件系统 resize2fs /dev/mapper/vg0-lv0 # EXT4 文件系统
- 扩容虚拟磁盘:如果是虚拟机,先在虚拟化平台(VMware/VirtualBox)扩容虚拟磁盘,然后在 Linux 中使用
growpart和resize2fs或xfs_growfs进行扩容。
内存空间管理 (Memory Management)
查看内存使用情况
free:查看总内存、已用内存、空闲内存。free -h
top/htop:实时监控进程内存和 CPU 占用。htop # 更友好的交互式界面
vmstat:查看虚拟内存统计信息。vmstat 1 5 # 每秒刷新一次,共5次
理解 Linux 内存机制
- Buff/Cache 占用高是正常的:Linux 会利用空闲内存缓存文件,以提高性能,这部分内存在应用程序需要时会自动释放。
- Swap(交换空间):当物理内存不足时,系统会将部分内存数据移到硬盘上的 Swap 分区。
- 查看 Swap 使用情况:
swapon --show - 增加 Swap 文件(Swap 不足):
# 创建 1G 的 swap 文件 sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效:添加到 /etc/fstab echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- 查看 Swap 使用情况:
内存泄漏排查
如果发现内存持续增长且不释放:
- 使用
top按M键按内存排序,找到占用最高的进程。 - 使用
pmap <PID>查看该进程内存映射详情。 - 使用
valgrind或gdb进行深度调试(针对开发阶段)。
文件系统与挂载管理
查看挂载点
mount | grep -v proc # 或 cat /etc/fstab # 查看开机自动挂载配置
手动挂载/卸载
# 挂载 sudo mount /dev/sdb1 /mnt/data # 卸载 sudo umount /mnt/data # 强制卸载(如果设备忙) sudo umount -l /mnt/data
文件系统检查
- EXT4:
fsck /dev/sdb1(需在卸载状态下进行) - XFS:
xfs_repair /dev/sdb1
磁盘配额管理 (Disk Quota)
允许限制用户或组在文件系统上可使用的磁盘空间和 inode 数量。
- 安装 quota 工具:
sudo apt install quota quotatool # Debian/Ubuntu sudo yum install quota # CentOS/RHEL
- 启用配额支持:
编辑/etc/fstab,在挂载选项中添加usrquota,grpquota:/dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 2 - 重新挂载并初始化:
sudo mount -o remount /data sudo quotacheck -cugm /data
- 设置配额:
# 为用户 user1 设置:软限制 1GB,硬限制 1.2GB sudo edquota -u user1
最佳实践与监控建议
-
设置告警:
- 使用
Nagios,Zabbix,Prometheus + Grafana监控磁盘使用率。 - 设置阈值:当磁盘使用率 > 85% 时发送告警。
- 使用
-
定期清理策略:
- 使用
logrotate管理日志文件,自动压缩和删除旧日志。 - 编写 Cron 脚本定期清理临时文件(
/tmp,/var/tmp)。
- 使用
-
避免 inode 耗尽:
- 不要创建大量小文件(如数百万个空文件)。
- 定期检查
df -i,inode 使用率高,需查找并删除小文件。
-
使用 SSD 优化:
- 确保启用
discard选项以支持 TRIM,延长 SSD 寿命。 - 调整 I/O 调度器为
none或mq-deadline(SSD 推荐)。
- 确保启用
常见问题排查流程图
磁盘/内存不足
│
├─ 是磁盘空间问题?
│ ├─ 检查 df -h → 哪个分区满了?
│ ├─ 检查 df -i → 是否 inode 耗尽?
│ └─ 使用 du/ncdu 查找大文件 → 清理或归档
│
└─ 是内存问题?
├─ 检查 free -h → Buff/Cache 是否过高?(正常)
├─ 检查 Swap 使用情况 → 是否频繁交换?
└─ 使用 top/htop 查找高内存进程 → 重启服务或优化代码
通过以上方法,你可以有效地管理和优化 Linux 系统的空间资源,确保系统稳定运行。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/478564.html



