64位Linux中的最大硬盘容量?


7

是否有最大数量的硬盘驱动器可以连接到64位Linux机器?我并不关心实用性,因为我的情况涉及VM。


1
编辑了你的问题,因为“坐骑”与“硬盘”并不完全相同。
Renan

1
另一种问题是“我可以将147个文件系统附加到我的Linux机器上吗?换句话说,告诉我们你要完成什么,我们可以给你更实际的答案。除非这只是一个智力练习。
uSlackr

这只是一项智力练习。
monksy

Answers:


9

这篇LinuxQuestions帖子

Linux没有对硬盘数量施加任意限制。

另外,来自 这篇文章在Debian邮件列表中

这很简单。 / dev / sdz之后是/ dev / sdaa。而且,我刚刚在/ dev / sdzz来/ dev / sdaaa之后,通过在我的笔记本电脑上制作和登录800个ISCSI目标来测试它。 :)

这篇博文

对于现代Linux内核下的SATA和SCSI驱动器,除了导出名称的代码在sdzzz之外正常工作,直到(理论上)sd后跟29 z时,才能应用上述相同的代码。

因此,理论上存在限制,但在实践中它们是无法到达的。


1
当然有一个限制。
monksy

有,但实际上它几乎无法到达。
Renan

使用硬件raid,任何内核可以访问的设备数量可能大于可以看到的数量。
Clearer

1

事实上,Linux的抽象SCSI子系统(包括SATA和USB驱动器)所暴露的驱动器数量有限制。这是因为设备文件由主要/次要设备编号对标记,并且为SCSI子系统分配的方案具有此隐式限制。

https://www.kernel.org/doc/Documentation/devices.txt

分配了以下主要操作码:8,65到71和128到135,总共分配了16个块。次要操作码限制为256个可能的值(范围0..255)。每个磁盘获得16个连续的小操作码,其中第一个代表整个磁盘,接下来的15个代表分区。

let major = number of major allocated opcodes = 16
let minor = number of minor opcodes per major opcode = 256
let parts = number of minor opcodes per disk = 16
major * (minor / parts) = 16 * (256 / 16) = 256 possible drives

我以前见过人们写128作为限制。我相信Linux最近有128..135,这可以解释这种差异。

命名方案( /dev/sdbz7 )由userland选择,而不是由Linux内核选择。在大多数情况下,这些都是由udev,eudev或mdev管理的(尽管过去它们是手动创建的)。我不知道他们的命名方案。不一定依赖所有基于Linux的系统命名设备,因为系统管理员可以修改设备命名策略。


1

RHEL技术的能力和限制 页面建议至少10000与最近足够的内核(请参阅'设备路径的最大数量(“sd”设备)'行)。这个金额大于@ luiji-maryo提到的金额,因为:

  1. 如果配置为允许,则可以动态地为设备分配主要/次要编号(请参阅 https://www.kernel.org/doc/Documentation/devices.txt 详情)。
  2. 较小的Linux设备编号可能比8位值大得多

向自己展示这一点的一种方法是使用 scsi_debug 模块:

modprobe scsi_debug max_luns=10 num_tgts=128

在主流Linux发行版上等待一段时间之后,你现在应该有1280多个SCSI磁盘。您可以使用

ls -l <pathtodisk>

查看他们的主要/次要数字。

NB(1):虚拟化软件通常具有低得多(例如,数百或更低)。 vSphere 6.0限制 )限制可以连接到VM的最大控制器数量以及可以挂起这些控制器的最大磁盘数量,这样您就不可能以这种方式达到Linux的限制。

NB(2):两者 BSG SG 限制自己(通过 BSG_MAX_DEVSSG_MAX_DEVS 分别)最多32768个设备。即使你以某种方式不需要磁盘本身的/ dev / entries,你也很难在没有这些额外设备的情况下发送更专业的SCSI命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.