最近在写一个 vsftpd 的插件,需要能够对FTP 用户的磁盘空间进行限制。因此有了下面这篇文章
首先我们用dd 命令来建立一个img 磁盘镜像
dd if=/dev/zero ibs=1M count={文件大小} of={目标文件}
这里我生成了一个 512 MB 的磁盘镜像文件 I4rdOq3p.img
接着我们把这个磁盘镜像文件和系统的loop设备进行关联
注意 可以使用
ls /dev | grep loop
来查看当前有哪些注册的loop 设备
接着开始格式化loop 设备,并注册成为磁盘
将本磁盘挂在到 FTP 的用户目录下
mount -t ext3 /dev/loop0 /www/wwwroot/I4rdOq3p
我们以128M 为一个单位测试,发现在生成第四个文件时出现了错误,磁盘空间不足,证明这是有效的
注意,在创建文件、格式化系统时损失了部分空间 预期是 512M ,实际空间为487.06MB ,损失24.94 M
卸载设备(删除用户数据文件)
1.使用fuser 配合 kill -9 停止磁盘占用
2.取消挂载
3.删除loop 设备
4.删除磁盘镜像文件