本系列文章系统、全面地介绍了Linux的SCSI设备管理机制和整套操作命令。包括以下六大主题:
本文作为系列第一篇,解答了用户的常见问题,如:怎样确认驱模块是否被加载?怎样查看SCSI子系统已发现并识别的设备?如何验证内核已正确识别出LUN的编号,用户在从fabric中添加或删除磁盘时,有哪些方法让主机重新识别? Linux SCSI子系统概述:
Linux SCSI子系统包括三层: 上层由特定的设备类型驱动所组成,如磁盘驱动、磁带驱动和CD-ROM驱动,最靠近用户空间。 下层包括诸如QLogic和Emulex HBA这类驱动,最靠近硬件。 中间层是SCSI核心代码,连接上层和下层。
按照内核版本的区别,驱动可编译进内核或以模块的形式加载到内核。sd是SCSI磁盘驱动,或块驱动,作为模块时命名为scsi_mod。
通常,在大多数版本中这些驱动都编译为模块,并在启动时作为初始化内存磁盘镜像文件(initrid image)的一部分被加载。如果当前没有在启动时加载,而启动过程中要求加载时,那么就需要重新编译一个包含该驱动的初始化内存磁盘镜像文件。在2.4版本内核中,需要修改/etc/modules.conf文件来完成;2.6版本内核中,不仅需要修改/etc/modules.conf文件,还要执行mkinitrd命令来对改动进行更新。
要确认驱动是否编译为模块及当前是否被加载,只需查看lsmod命令输出中的sd_mod和scsi_mod。以下为示例输出: # lsmod | grep sd sd_mod 13440 296 scsi_mod 104068 6 [qla2300 st sr_mod sg ncr53c8xx sd_mod] 注意:如果SCSI中间层驱动编译为模块,则scsi_mod必须先于上层和下层驱动加载。
Linux主机LUN识别:
Linux 2.4内核版本中,系统在加载主机适配层驱动时通过扫描SCSI总线时识别。SCSI子系统已发现并识别的设备在/proc/scsi/scsi文件中列出。比较好的方法是使用cat命令列出/proc/scsi/scsi的输出,来验证内核已正确识别出LUN ID。命令输出示例如下: # cat proc/scsi/scsi # cat /proc/scsi/scsi | less Attached devices: Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: IBM-PSG Model: DDYS-T36950M M Rev: S96E Type: Direct-Access ANSI SCSI revision: 03 Host: scsi1 Channel: 00 Id: 08 Lun: 00 Vendor: IBM Model: YGLv3 S2 Rev: 0 Type: Processor ANSI SCSI revision: 02 Host: scsi4 Channel: 00 Id: 00 Lun: 00 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 01 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 02 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 03 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 04 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 05 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 06 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 07 Vendor: IBM Model: 1750500 Rev: 5.17 Type: Direct-Access ANSI SCSI revision: 05
注意,/proc/scsi/scsi列出的磁盘设备不是动态的,因此不受网络状态变更的影响。
从Linux2.6内核版本开始,/proc文件系统迁移至改进后的/sys文件系统。/sys文件系统中加入对动态变更的支持,如添加和删除LUN,而无需重新加载主机适配器驱动或重启主机。通常,可通过/sys/class/scsi_host/hostN目录下的内容来查看哪些SCSI设备已被主机识别。N是主机适配器ID号。用户空间有一个lsscsi工具, 使用/sys中的信息来显示所有识别设备的汇总清单。(lsscsi命令仅在SLES中支持)
动态SAN网络重配:
用户在网络中添加或删除磁盘时,需要对其重新识别。可使用以下四种方法之一让Linux主机重新识别这些变更:
这一部分的更多命令示例可参见: 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除 |