我想为我们正在开发的多用户 Web 应用程序实现每个目录配额。问题是...我们已经为任何客户实现了一个文档管理器来存储他们自己的私有(private)文档,但我们不希望由于此功能而耗尽空间,因此我们希望为它们分配给定的限制。
由于在 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
这只是一个代码示例,但这就是想法...我创建虚拟“卷”并将其分配给我的客户,以便他们可以存储他们的私有(private)数据,如果他们需要更多数据,他们可以按次付费存储量基础。
我看到的“问题”是我在/dev 层次结构中只看到 8 个循环设备,而我们的应用程序目前有 17 个测试客户端,因此当前存在的循环设备的数量不能满足我的需求。我知道您最多可以分配 256 个循环设备,直到内核版本 2.6.23,并且该限制(从版本 2.6.24 开始)理论上不再存在,尽管我仍然有一些担忧。
老实说,我觉得用 1000 多个循环设备填充/dev 层次结构(这些设备在整个系统生命周期内根本不会被卸载)是非常错误的,不是应该这样做的方式,但也许它是可行的,因为中期解决方案,所以我的问题是:
- 单个循环设备分配时需要多少内存?
- 分配超过 256 个时系统是否会崩溃或性能受到影响 循环设备?
- 我可以动态增加循环设备的数量吗?或者...
- 如何在启动时预定义可用循环设备的数量 时间?
最佳答案
您所描述的想法实际上是手动完成的“逻辑卷管理”(LVM)。如果您为此使用 LVM,您将获得双重好处:“这是一个众所周知的标准”和“有很好的工具支持,包括在线调整大小等”。
关于linux-kernel - 在现代 Linux(2.6.30+ 内核)系统上可以创建(和安装)多少个循环设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548423/