我可以包含用于支持循环文件的循环模块。loop 模块支持 max_loop 选项。我找到了带有选项 loop max_loop 256 的示例。我的问题,最大支持的循环设备是多少?我不敢相信,256 是硬限制,创建超过 256 个循环设备是不可能的。
更新:
我在文件https://elixir.bootlin.com/linux/v4.0/source/drivers/block/loop.c中没有发现任何有趣的东西
但是我做了一些实验,然后运行 modprobe max_loops=512 然后我在 /dev/ 目录中看到完全相同的计数循环块文件安装为 udev,编号从 loop0 到 loop511
我用 linux kernel 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 做到了
在内核 3.1 之前,您必须设置固定数量的循环设备。从 3.1 开始
/dev/loop-control
,循环设备是根据需要动态分配的,而不是固定数量。因此,与其拥有一百个您从不需要的循环设备(以防万一),它从 0 个设备(或可选的最小计数)开始,并且仅在实际需要时创建它们。来自
man 4 loop
:非常精细的源代码 (
drivers/block/loop.c
) 对其进行了描述:它还建议根本不要设置它:
那么实际可以使用多少个回路设备呢?限制是单个主要设备的次要设备的最大数量(因为
loop
有一个主要设备,块 7),它受到限制MINORBITS
(所以 2 20,刚刚超过一百万)。我试图强制一些像这样的大数字:
...但它最终引发了内核恐慌。;-)
这符合 2 20的限制。