插件窝 干货文章 解决Linux磁盘空间过大与不足问题

解决Linux磁盘空间过大与不足问题

sudo 磁盘 清理 使用 888    来源:    2025-04-17

Linux磁盘空间管理解决方案

一、磁盘空间分析

1. 查看磁盘使用情况

df -h  # 查看各分区使用情况
df -i  # 查看inode使用情况

2. 分析大文件/目录

# 查看当前目录下各子目录大小
du -h --max-depth=1 | sort -h

# 查找大于100MB的文件
find / -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

# 使用ncdu工具进行可视化分析
sudo apt install ncdu  # Debian/Ubuntu
sudo yum install ncdu  # CentOS/RHEL
ncdu /

二、清理策略

1. 系统日志清理

# 清理旧日志(保留最近30天)
sudo find /var/log -type f -name "*.log" -mtime +30 -delete

# 使用journalctl清理系统日志
sudo journalctl --vacuum-time=30d  # 保留30天日志
sudo journalctl --vacuum-size=500M # 限制日志大小为500MB

2. 包缓存清理

# Debian/Ubuntu
sudo apt clean
sudo apt autoremove

# CentOS/RHEL
sudo yum clean all
sudo dnf clean all

3. 临时文件清理

sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

4. 特定服务清理

# Docker清理
docker system prune -a --volumes

# Kubernetes清理
kubectl delete --all pods --namespace=<namespace>

三、磁盘扩容方案

1. LVM扩容

# 查看当前VG空间
sudo vgdisplay

# 扩展物理卷
sudo pvresize /dev/sdX

# 扩展逻辑卷
sudo lvextend -L +10G /dev/mapper/vg-name-lv-name

# 调整文件系统大小
sudo resize2fs /dev/mapper/vg-name-lv-name  # ext文件系统
sudo xfs_growfs /mount/point  # XFS文件系统

2. 添加新磁盘

# 查看新磁盘
sudo fdisk -l

# 分区并格式化
sudo fdisk /dev/sdX
sudo mkfs.ext4 /dev/sdX1

# 挂载新分区
sudo mkdir /new_mount
sudo mount /dev/sdX1 /new_mount

# 添加fstab条目实现自动挂载
echo "/dev/sdX1 /new_mount ext4 defaults 0 2" | sudo tee -a /etc/fstab

四、预防性措施

1. 设置磁盘配额

# 安装配额工具
sudo apt install quota  # Debian/Ubuntu
sudo yum install quota # CentOS/RHEL

# 启用配额
sudo mount -o remount,usrquota,grpquota /
sudo quotacheck -cugm /
sudo quotaon -v /

2. 设置日志轮转

编辑/etc/logrotate.conf/etc/logrotate.d/下的配置文件,例如:

/var/log/app.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 644 root root
}

3. 监控与告警

# 添加cron任务定期检查
echo "0 0 * * * root df -h | mail -s 'Disk Usage Report' admin@example.com" | sudo tee /etc/cron.d/disk-monitor

# 使用监控工具如Prometheus+Grafana设置磁盘使用率告警

五、高级技巧

1. 使用符号链接转移大目录

sudo mv /var/lib/mysql /big_disk/
sudo ln -s /big_disk/mysql /var/lib/mysql

2. 使用overlayfs合并目录

sudo mount -t overlay overlay -o lowerdir=/readonly,upperdir=/writable,workdir=/work /merged

3. 使用压缩技术

# 压缩旧日志
sudo find /var/log -name "*.log" -mtime +30 -exec gzip {} \;

# 使用ZFS/Btrfs文件系统的压缩功能

通过以上方法,您可以有效管理Linux系统的磁盘空间,解决空间不足问题,并预防未来可能出现的问题。