插件窝 干货文章 CentOS上搭建web服务器需注意的磁盘空间管理

CentOS上搭建web服务器需注意的磁盘空间管理

备份 文件 日志 磁盘 519    来源:    2025-04-12

CentOS上搭建Web服务器的磁盘空间管理指南

在CentOS上搭建Web服务器时,合理的磁盘空间管理至关重要,它直接影响服务器的性能、稳定性和可维护性。以下是一些关键注意事项和最佳实践:

1. 分区规划

推荐分区方案: - / (根分区):20-30GB(系统文件和基本应用) - /var:单独分区,30GB+(Web内容、日志和数据库通常存放于此) - /home:根据用户数量决定 - /tmp:5-10GB(临时文件) - swap:物理内存的1-2倍(但不超过8GB)

理由: 隔离关键目录可以防止一个区域填满导致整个系统崩溃。

2. 关键目录监控

需要特别监控的目录: - /var/www (或您的Web根目录) - /var/log (日志文件) - /var/lib/mysql (如果使用MySQL) - /tmp

监控命令:

df -h                  # 查看各分区使用情况
du -sh /var/www/*      # 查看Web目录大小
du -sh /var/log/*      # 查看日志目录大小

3. 日志管理策略

日志轮转配置: 1. 使用logrotate管理日志文件: bash yum install logrotate 2. 编辑配置文件/etc/logrotate.conf/etc/logrotate.d/下的应用特定配置

示例Apache日志轮转配置(/etc/logrotate.d/httpd):

/var/log/httpd/*log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    sharedscripts
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

4. 临时文件清理

定期清理: 1. 使用tmpwatch清理旧临时文件: bash yum install tmpwatch tmpwatch 24h /tmp 2. 设置cron任务定期清理: bash 0 3 * * * /usr/sbin/tmpwatch 24h /tmp

5. Web内容管理

最佳实践: - 将用户上传内容与Web根目录分离 - 限制上传文件大小(在Web服务器配置中) - 定期清理旧版本/备份文件 - 使用符号链接管理大型静态资源

6. 数据库空间管理

MySQL/MariaDB优化:

-- 定期优化表
OPTIMIZE TABLE table_name;

-- 清理二进制日志(如有复制)
PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';

-- 配置my.cnf中的日志过期时间
[mysqld]
expire_logs_days = 7

7. 自动化监控与警报

设置磁盘空间警报: 1. 安装监控工具: bash yum install nagios zabbix-agent 2. 或使用简单脚本: bash #!/bin/bash ALERT=90 df -P | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output; do usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 ) partition=$(echo $output | awk '{ print $2 }' ) if [ $usep -ge $ALERT ]; then echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" | mail -s "Alert: Almost out of disk space $usep%" admin@example.com fi done

8. 备份策略

推荐备份方案: - 完整系统备份:每周一次 - 增量备份:每日进行 - 数据库备份:每日完整备份+二进制日志 - 关键配置文件备份:每次修改后

示例备份命令:

# Web内容备份
tar -czf /backups/web-$(date +%Y%m%d).tar.gz /var/www

# MySQL备份
mysqldump -u root -p --all-databases > /backups/mysql-$(date +%Y%m%d).sql

9. 扩展性考虑

当空间不足时: 1. 添加新磁盘并挂载到新目录 2. 使用LVM管理磁盘,便于扩展 3. 将部分内容迁移到网络存储(NAS/SAN) 4. 考虑使用符号链接将部分目录重定向到其他分区

通过遵循这些磁盘空间管理实践,您可以确保CentOS Web服务器在高效运行的同时,保持足够的空间余量以应对突发增长和日志积累。