一、磁盘空间现状查看
要管理CentOS磁盘空间,首先需清晰掌握当前使用情况。常用命令如下:
df -h:以易读格式(GB/MB)显示所有挂载点的磁盘使用情况,包括总容量、已用空间、剩余空间及使用百分比,快速识别空间不足的分区(如根分区/)。du -sh *:递归统计当前目录下各子目录/文件的大小,-s选项仅显示总计,-h选项转为易读格式,常用于定位大文件/目录(如du -sh /var/*查看/var目录下各子目录大小)。ncdu:基于文本的交互式磁盘分析工具,比du更直观。安装命令为sudo yum install ncdu(CentOS 8及以上用dnf),运行ncdu /可扫描根目录,通过方向键浏览目录,按Enter进入子目录,按d删除文件/目录。二、日常空间清理技巧
清理无用文件是释放空间的最有效手段,重点关注以下场景:
/var/cache/yum(CentOS 7)或/var/cache/dnf(CentOS 8及以上),占用大量空间。使用sudo yum clean all(CentOS 7)或sudo dnf clean all(CentOS 8及以上)清除缓存。/tmp目录下的临时文件(如用户会话文件、软件临时文件)可安全删除,命令为sudo rm -rf /tmp/*(注意:避免删除正在使用的临时文件)。/boot分区空间。使用sudo package-cleanup --oldkernels --count=1保留最新1个内核,删除其余旧内核(需root权限)。/home/*/.local/share/Trash/*)需手动清理,命令为sudo rm -rf /home/*/.local/share/Trash/*。gzip或zip压缩,例如gzip large_file.log(压缩后生成large_file.log.gz,原文件被删除)。三、日志文件管理
日志文件(如/var/log/messages、/var/log/secure)随时间增长会占用大量空间,需定期维护:
truncate命令将大日志文件清空,例如find /var/log -type f -name "*.log" -size +50M -exec truncate -s 0 {} \;(查找/var/log下大于50MB的.log文件并清空)。logrotate工具自动轮转、压缩、删除旧日志。编辑/etc/logrotate.conf(全局配置)或/etc/logrotate.d/下的应用配置(如/etc/logrotate.d/nginx),设置轮转周期(如daily)、保留份数(如rotate 7,保留7天日志)、压缩选项(如compress)。例如,每日轮转Nginx日志并保留7份:/var/log/nginx/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 www-data adm } 四、LVM动态扩展(推荐)
若系统使用LVM(逻辑卷管理),可通过以下步骤在线扩展磁盘空间,无需卸载分区或重启系统:
lsblk确认新磁盘设备名(如/dev/sdb)。sudo pvcreate /dev/sdb。centos),命令为sudo vgextend centos /dev/sdb。root)的大小,例如增加50GB:sudo lvextend -L +50G /dev/mapper/centos-root(或用-l +100%FREE使用所有剩余空间)。xfs_growfs(CentOS 7/8默认),Ext4用resize2fs:sudo xfs_growfs /dev/mapper/centos-root # XFS文件系统 sudo resize2fs /dev/mapper/centos-root # Ext4文件系统 五、非LVM环境扩容
若未使用LVM,需通过分区+格式化+挂载的方式扩展空间:
/dev/sdb)。fdisk /dev/sdb创建新分区(如/dev/sdb1),设置分区类型为Linux(83),保存退出。sudo mkfs.xfs /dev/sdb1。/data),挂载分区:sudo mkdir /data,sudo mount /dev/sdb1 /data。/etc/fstab,添加一行(通过blkid获取分区UUID):UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0 运行sudo mount -a验证挂载是否成功。六、自动化监控与预警
通过自动化工具定期检查磁盘空间,及时预警避免空间耗尽:
crontab -e,添加每日检查命令(如df -h结果发送到邮箱):0 0 * * * df -h | mail -s "CentOS Disk Space Report" your_email@example.com #!/bin/bash THRESHOLD=90 USAGE=$(df / | grep / | awk '{print $5}' | sed 's/%//g') if [ "$USAGE" -gt "$THRESHOLD" ]; then echo "Disk space usage on / is over $THRESHOLD%!" | mail -s "Disk Space Alert" your_email@example.com fi 将脚本保存为/usr/local/bin/check_disk.sh,添加执行权限(chmod +x /usr/local/bin/check_disk.sh),并通过Cron每日运行。