微信号:dellemc_tech

介绍:为戴尔易安信客户提供技术支持服务,为广大IT行业用户分享技术文章与行业信息。

Linux系统SCSI磁盘管理全攻略(三)

2016-07-18 12:07 EMC中文技术社区

本系列文章系统、全面地介绍了Linux 的SCSI设备管理机制和整套操作命令。包括以下六大主题:

  1. Linux SCSI子系统概述

  2. Linux主机LUN识别

  3. 动态SAN网络重配

  4. LUN发现步骤

  5. Linux设备命名

  6. SCSI磁盘限制

附:SCSI磁盘问题识别与解决方法


系列文章第一篇看这里:

Linux系统SCSI磁盘管理全攻略(一)

Linux系统SCSI磁盘管理全攻略(二)

 

作为系列之三,本文主要回答Linux磁盘设备数量与major和minor的关系,以及SCSI磁盘问题识别与解决方法。


 

Linux磁盘限制:定义磁盘设备数量

 

Linux内核使用静态的major和minor编号来进行SCSI寻址。major可看作设备驱动程序,同一设备驱动程序管理的设备由相同的major编号。而minor编号代表被访问的具体设备。内核为SCSI磁盘设备保留了一定数量的major编号。因此,SCSI磁盘设备的数量受到可用的major编号的限制。这些可用的major编号数量又随内核版本不同而有所区别。

 

对于Linux 2.4内核版本,Linux主机系统上最大可配置设备数是128、256或2304。保留8位bit位用作minor编号,因此对于每一个major有256个可用的minor编号。按照惯例,每块SCSI磁盘要保留16个minor,因此每块磁盘最多可有15个分区(另1个minor代表整块磁盘)。这样,通过16个minor编号来定义一块磁盘和它的分区,而最多可以有2^8=256个minor,则每个major编号可支持256÷16=16块SCSI磁盘。

 

比较旧的内核版本为SCSI磁盘设备保留8个major编号。分别是8,65,66,67,68,79,70和71。REHL2.1和REHL3中,就是使用以上保留的major。有了这8个保留的major,和每个major有的16个minor编号,内核一共可支持8×16=128个磁盘设备。早期的SuSE SLES8内核由于保留16个major,共可以支持256个磁盘设备。额外的major编号是128, 129, 130, 131, 132, 133, 134, 135。

 

新的内核版本使用动态配置的方法,在头16个保留major编号用完之后,会使用任何可用的major编号。因此这些内核可支持2304个磁盘设备。

 

通常,可使用以下公式来计算Linux主机系统可支持的最大设备数:

最大磁盘数=major编号数×minor编号数÷分区数

例如:磁盘数=8×256÷16=128或 磁盘数=144×256÷16=2304

 

对于Linux2.6内核版本major数增长至12比特位而minor增长至20比特位,因此Linux 2.6内核支持上千块磁盘,每块磁盘最多15个分区的限制没有改变。由于major并不仅仅用于磁盘(/proc/devices),所以不能以2^12个major来计算磁盘个数。一个major可用的minor数就达到2^20=65536,而每个SCSI磁盘16个minor的限制仍然不变,每个major可支持2^20÷16=4096个。

 

其他限制磁盘数量的因素

 

如果主机适配器驱动作为模块加载在Linux系统中,则内核对可配置磁盘总数有一定的限制。有可能小于内核支持的最大值(通常128或256)。系统加载的第一个模块发现磁盘数可配置为内核支持的最大磁盘数,之后的驱动则达不到这个值。所有这些驱动共享一个pool中的设备结构,这些设备结构是在第一个主机适配器驱动加载后静态分配的。

 

 

SCSI磁盘问题识别与解决方法:

 

  • SAN发生故障之后,内核可能永久禁用LUN并对磁盘设备记录一条消息:“device set offline”。如果这发生在2.4内核版本,则无法将LUN重新设为online,除非卸载底层设备驱动并重新加载,或重启系统。

  • 在2.6内核版本上,设备可通过以下方法之一重新设置为online:

    Redhat: echo "running" >/sys/class/scsi_host/hostH/device/targetH:C:T/H:C:T:L/state

    SLES: echo "1" > /sys/class/scsi_host/hostH/device/H:C:T:L /online 

  • 系统ps命令可能周期性显示进程处于D-state,表示不可中断的状态,这是由于进程一直在内核中等待。在错误的情形下,进程可能永久停留在这个状态,需要系统重启才能回复。



更多精彩内容,请点击阅读原文”进行查看!

如何每天都能收到如此精彩的文章?

①点击右上角点击查看官方账号”→点击关注

②长按并识别下图中的二维码,直接访问EMC中文支持论坛


 
戴尔易安信技术支持 更多文章 备份和归档的区别 云计算的三种模型:公有云、私有云和混合云 正确描述IO类型 【大咖讲网络】谁动了我的网络 浅析I/O处理过程与存储性能的关系
猜您喜欢 如何优化系统架构 进行有效的持续集成\/持续交付 元数据管理解析以及数据仓库和主数据介绍 干货:一次内存泄露的实战分析过程 安全行业|ThreadFix团队是如何把Docker应用到测试环境? 首届“华信智原杯”LOGO设计大赛圆满结束