CentOS FTP Server磁盘空间管理指南
在管理FTP服务器磁盘空间前,需先了解当前空间使用情况。常用命令如下:
df -h(显示各挂载点的总容量、已用空间、剩余空间及使用百分比,-h参数使结果更易读);du -sh /path/to/directory(-s显示总大小,-h以人类可读格式输出,如KB、MB、GB);iotop(需安装,显示进程级的磁盘I/O使用情况,帮助定位高负载进程)。磁盘配额是控制FTP用户空间占用的核心手段,可防止单个用户过度占用磁盘资源。以下以CentOS常用的ext4文件系统和vsftpd FTP服务器为例,分步说明:
sudo yum install quota -y
编辑/etc/fstab,为FTP数据目录所在分区添加usrquota(用户配额)和grpquota(组配额)选项。例如,若FTP数据存放在/home(挂载点为/dev/sda1,文件系统为ext4),则修改对应行:
/dev/sda1 /home ext4 defaults,usrquota,grpquota 0 2
保存后退出。
使fstab修改生效:
sudo mount -o remount /home
扫描文件系统并生成配额数据库(记录用户/组的空间使用情况):
sudo quotacheck -cum /home
-c表示创建新数据库,-u启用用户配额,-m强制扫描(即使文件系统已挂载)。
sudo quotaon -vug /home
-v显示详细信息,-u启用用户配额,-g启用组配额。
为用户设置配额:使用edquota命令编辑用户的配额限制(软限制:达到后警告,硬限制:绝对上限):
sudo edquota -u username
在编辑器中修改以下参数(以/dev/sda1分区为例):
Disk quotas for user username (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 0 524288 1048576 0 1000 2000
说明:blocks为已用空间(KB),soft为软限制(500MB),hard为硬限制(1GB),inodes为文件数限制(1000-2000个)。
为组设置配额:类似用户配额,使用edquota -g groupname命令。
quota -u username
quota -g groupname
编辑vsftpd配置文件(/etc/vsftpd/vsftpd.conf),确保以下参数启用:
quota_enable=YES
quota_file=/var/lib/vsftpd/quota.user
quota_group_enable=YES
quota_group_file=/var/lib/vsftpd/quota.group
重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
使用FTP客户端登录,尝试上传文件至该用户目录,当超过软限制时会收到警告,超过硬限制则无法继续上传。
除配额外,还可通过以下方式提升磁盘空间利用率:
根据硬件类型选择合适的I/O调度算法(如SSD用noop,HDD用deadline或cfq):
# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 临时修改为noop(SSD适用)
echo noop | sudo tee /sys/block/sda/queue/scheduler
# 永久修改(需修改内核启动参数)
通过缓存加速磁盘读写,如bcache(将SSD作为HDD缓存)或LVM Cache:
# 示例:使用LVM Cache(需提前安装lvm2)
sudo lvcreate -L 10G -n cache vg_ftp
sudo lvcreate -L 100G -n ftpdata vg_ftp
sudo lvconvert --type cache --cachevol vg_ftp/cache vg_ftp/ftpdata
XFS,适合大文件和高并发场景);ext4文件系统参数(如noatime,减少访问时间更新带来的磁盘写操作):sudo mount -o remount,noatime /home
通过RAID技术提升性能或冗余:
vsftpd的write_enable=YES时,内存缓存可降低磁盘写入频率);find命令查找并删除:find /home/ftp -type f -mtime +30 -exec rm -f {} \; # 删除30天前的文件
cron定时任务每天发送磁盘使用报告:echo "Disk space usage on $(date)" >> /var/log/disk_usage.log
df -h >> /var/log/disk_usage.log
/home/ftp/newdata),或扩展现有分区(需备份数据)。