我想为我们正在开发的多用户 Web 应用程序实现每个目录的配额。问题是......我们已经为任何客户实现了一个文档管理器来存储他们自己的私人文档,但我们不想因为这个特性而耗尽空间,所以我们想给他们分配一个给定的限制。
由于似乎不存在在 Linux 中实现每个目录配额的标准方法(我知道,配额主要针对用户或组,但我们需要类似于 Windows Server 2008 R2 处理每个目录上的配额的方式基础)我选择使用“技巧”。我基本上是这样做的:
touch client1.ext3
dd if=/dev/zero of=./client1.ext3 bs=1024 count=16384
mkfs.ext3 ./client1.ext3
mount -o loop,rw ./client1.ext3 ./mountpoint
这只是一个代码示例,但这就是我的想法......我创建了分配给我的客户的虚拟“卷”,这样他们就可以存储他们的私人数据,如果他们需要更多,他们可以按存储量付费基础。
我看到的“问题”是我在我的 /dev 层次结构中只看到 8 个循环设备,我们目前有 17 个测试客户端用于我们的应用程序,因此当前存在的循环设备的数量不能满足我的需求。我知道您最多可以分配 256 个循环设备,直到内核版本 2.6.23,并且限制(从版本 2.6.24 开始)理论上不再存在,尽管我仍然有些担心。
老实说,我觉得用 1000 多个循环设备(在整个系统生命周期内根本不会卸载)填充 /dev 层次结构是非常错误的,而不是应该这样做的方式,但也许它是可行的中间 -长期解决方案,所以我的问题是:
- 单个循环设备占用多少内存?
- 如果分配了 256 个以上的循环设备,系统是否会崩溃或性能受到影响?
- 我可以动态增加循环设备的数量吗?或者...
- 如何在启动时预定义可用循环设备的数量?