Linux内核Major,Minor和磁盘数的关系

Linux 内核使用静态的Major number和Minor number来进行SCSI设备的寻址,而系统为SCSI设备保留的Major和Minor是有个数限制的。所以根据可用的Major number不同,系统可支持的SCSI磁盘数量都有个数限制,不同的内核,支持的SCSI磁盘Major数量不一样。

对于Linux 2.4内核来讲,Major number数可以是128、256、2304,其表示Minor number的字段为8个bit,所以每个Major支持 2^8=256个Minor。按惯例每个SCSI磁盘有16个保留的Minor,所以每个磁盘可以有15个分区(还有1个Minor代表整个磁盘)。这样每个磁盘16个Minor,而最多每个Major可以有2^8=256个Minor,则每个Major最多可以支持256/16=16个SCSI磁盘。

比较老的Kernel一般为SCSI设备保留8个Major,分别是8, 65, 66, 67, 68, 79, 70, 71。在RHEL2和RHEL3中,使用这8个保留的Major号,所以OS支持的SCSI磁盘个数是 8×16=128 个。而早期的SUSE,例如SLES8可以支持256个SCSI设备是因为SUSE为SCSI定义了16个保留Major,分别是128, 129, 130, 131, 132, 133, 134, 135。

一般来讲,可以用下面的公式计算Linux内核支持的最大的磁盘数目:
(number of major numbers) × (number of minor numbers) ÷ (number of partitions)

新的2.6 Kernel使用动态配置的模式,会自动分配任何可用Major number。而在 Linux 2.6 内核中,表示 major 和 minor 的数据结构是一个32bit的字段 dev_t type (defined in <linux/types.h>),表示major 和 minor 的位数分别是 12 和 20 bits,相应地,2.6内核可以支持的磁盘数目就非常地大了。因为Major并不仅仅用于磁盘(/proc/devices ),所以不能以 2^12 个Major来计算磁盘个数,但仅仅一个Major可用的Minor数就已经达到 2^20=65536,而每个SCSI磁盘16个Minor的限制仍然不变,每个Major就可以支持2^20/16=4096个,所以整个系统可以支持的磁盘个数已经非常可观了。

注:
系统预先分配定义的Major列表可以在内核源码树的 Documentation/devices.txt 文件里找到。
Major numbers 60-63, 120-127, 240-254 是保留用于实验和内部用途的。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值