开始新对话

未解决

此帖子已超过 5 年

4142

2012年8月29日 01:00

Linux/Unix常见SCSI问题及解决方法

​ ​

​Linux/Unix​​常见​​SCSI​​问题及解决方法​

​ ​

​转载请在文首保留原文出处:​​EMC​​中文支持论坛​

​ ​

​介绍​

​ ​

​本文归纳总结了​​Linux/Unix​​系统几个常见的​​SCSI​​故障如:主机​​HBA​​无法发现​​LUN​​,路径显示错误,同一个​​LUN​​显示重复的​​LUN ID​​,故障切换问题,重新扫描磁盘问题等,并列出相关解决方法。​

​ ​

​更多信息​

​ ​

​问题​​1:​​如何通过​​iSCSI​​在​​Linux​​动态发现新​​LUNs​​?​

​平台​​:​​Red Hat Linux, SuSE Linux​

​问题描述​​:无法动态发现新磁盘设备​

​根本原因​​:​

​iSCSI​​驱动可在​​Ethernet​​上动态发现目标存储系统,然而,它无法动态发现存储系统上的​​LUN​​。​​Linux​​操作系统的​​SCSI​​中间层负责发现​​LUN​​。因此,通过​​Fibre Channel​​,用户必须重新扫描​​SCSI​​总线以发现新添加​​LUN​​,用户可通过重启服务器或重新加载​​iSCSI​​模块实现上述操作。​

​解决方法​​:​

​root​​权限使用以下命令在​​ RHEL 3, RHEL4, SLES 8, SLES 9, Asianux 1.0, and Asianux 2.0​​上重新加载​​iSCSI​​驱动:​

​# /etc/init.d/iscsi restart​

​在​​RHEL5​​和​​SLES 10​​上作为​​root​​使用以下命令:​

​RHEL5​​:​

​# /etc/init.d/iscsid restart​

​SLES 10​​:​

​# /etc/init.d/open-iscsi restart​

​或​

​# /sbin/iscsiadm -m session –R​


​问题​​2:Linux​​是否需要​​LUN 0​​?​

​平台​​:​​Linux​

​问题描述​​:​

​ ​

​1. /proc/scsi/scsi​​每条路径只包含一个​​DGC LUN Z​​。​

​ ​

​2. /proc/scsi/qla2?00/[0-9] ​​显示除了​​LUN 0​​以外的所有​​LUN​​,星号标记显示没有​​ SCSI​​注册。​

​ ​

​3. Emulex HBA ​​已在​​ FA​​注册 但​​/proc/scsi/scsi​​中没有​​device entry​​。​

​ ​

​ ​​根本原因​​:​

​ ​​Linux 2.4.x​​内核对​​LUN 0​​使用​​SCSI INQUIRY​​命令以确定系统连接到何种类型的磁盘设备。如果没有​​LUN 0​​,​​QLogic​​和​​Emulex​​驱动将会返回错误而不是发​​INQUIRY​​命令给磁盘设备,因此,​​Linux​​系统将无法自动扫描磁盘设备。须手动激活​​LUN​​。​

​ ​​解决方法​​:​

​ ​​可通过以下方法解决此问题:​

​ ​​1. 映射一个​​Gatekeeper​​给​​LUN 0​​。​​Linux 2.4​​受到最大​​SCSI​​磁盘设备数量的限制,因此可能需要手动指定​​HLU​​。​

​ ​​2. 手动扫描​​LUN​​。用户须小心规划扫描时间。​

​ ​​3. 为​​Linux SCSI​​驱动打补丁(不推荐)。​

​ ​​详情请见​​Primus Solution emc115253​​。​


​问题​​3​​:​​Linux​​主机​​Emulex HBA​​无法看见磁盘设备​

​平台​​:​​Linux Kernel 2.4​

​问题描述​​:​

​1. 主机在存储端注册并登记后无法看到任何磁盘设备。​

​2. 所有​​lpfc​​驱动实例文件(例如:​​/proc/scsi/lpfc/*​​)无法看见存储​​WWN。​

​解决方法​​:​

​按照以下步骤进行操作:​

​1. ​​通过如下命令检查哪些模块依赖于​​lpfc​​:​

​lsmod | grep lpfc​
​lpfc 243664 0 [lpfcdfc]​

​命令输出地黑体部分是正在使用​​lpfc​​的模块。在​​lpfcdfc​​被删除之前,​​lpfc​​将无法删除。​

​2. 使用​​rmmod​​命令删除相关模块,命令格式如下:​

​rmmod lpfcdfc​

​当该命令执行成功,通过​​lsmod​​命令验证该模块已被删除。​

​3. ​​使用以下命令删除​​lpfc​​模块:​

​rmmod lpfc​

​4.​​ ​​使用以下命令重新加载​​lpfc​​模块:​

​modprobe lpfc​

​5. ​​模块成功加载之后,将会初始化​​PLOGI​​及存储端口信息,将会在驱动实例文件中看到。​

​同时也会自动扫描磁盘设备,如果没有,运行命令​​echo '- - -' > /proc/scsi/scsi​​扫描磁盘设备。​

​问题​​4​​:​​"powermt display dev=all "Device(s) not found""​

​平台​​:​​HP-UX, IBM AIX, Red Hat Linux, UNIX​

​软件​​:​​PowerPath 5.0​

​问题描述​​:使用命令​​powermt display dev=all​​无法查看新加​​SCSI​​磁盘设备​

​解决方法​​:在​​emcgrab​​日志​​"powermt display options"​​文件检查​​PowerPath​​阵列状态是否设置为“​​managed​​”,或在主机运行命令​​powermt display options​​。​

​如果指定阵列设置为“​​unmanaged​​”,则输入以下命令:​

​powermt manage class=symm (or class=clariion, etc.)​

​powermt display dev=all​

​powermt save​​。​

​问题​​5​​:​​Linux​​主机在​​proc/scsi/scsi​​中发现重复​​LUN ID​

​平台​​:​​Red Hat Linux 5.3​

​产品​​:​​Symmetirx DMX-4​​,​​ VMAX​​系列​

​问题描述​​:​

​一个磁盘设备呈现给​​2​​个​​HBA​​,每个​​HBA​​上通过​​2​​个不同​​LUN ID​​显示​​2​​个实例。主机应当在各​​HBA​​上看到相同的实例(​​LUN 16​​而非​​16​​和​​17​​),而不是两个不同的​​LUN ID​​。​

​Host: scsi5 Channel: 00 Id: 02 Lun: 16​

​Vendor: EMC Model: SYMMETRIX Rev: 5772​

​Type: Direct-Access ANSI SCSI revision: 02​

​Host: scsi5 Channel: 00 Id: 02 Lun: 17​

​Vendor: EMC Model: SYMMETRIX Rev: 5772​

​Type: Direct-Access ANSI SCSI revision: 02​

​Host: scsi3 Channel: 00 Id: 02 Lun: 16​

​Vendor: EMC Model: SYMMETRIX Rev: 5772​

​Type: Direct-Access ANSI SCSI revision: 02​

​Host: scsi3 Channel: 00 Id: 02 Lun: 17​

​Vendor: EMC Model: SYMMETRIX Rev: 5772​

​Type: Direct-Access ANSI SCSI revision: 02​

​解决方法​​:​

​查看是否​​SPC 2​​和​​SCSI 3​​标记缺失。重新添加标记会解决此问题,主机必须重启以使更改生效。在​​HBA​​级别设置标记,例如:​​symmask -sid 308 -dir 8C -p 0 -wwn 10000000c99338ca set hba_flags on SPC2,SC3 –enable​​。​

​当磁盘设备设置了​​SPC 2​​和​​SCSI 3​​之后,​​proc/scsi/scsi​​将会返回正确地​​LUN ID​​。​

​问题​​6​​:​​Linux​​操作系统能否不重新加载​​Linux​​驱动而重新扫描磁盘设备?​

​平台​​:​​Red Hat Linux​​,​​SuSE Linux Enterprise Server(SLES)​​,​​QLogic​​,​

​问题描述​​:新​​LUN​​添加到存储阵列之后,无法通过操作系统的​​QLogic HBA​​驱动看到该设备。重启或重新加载驱动会造成生产中断。​

​解决方法​​:​

​按照以下步骤,强制驱动重新扫描目标设备,允许添加新磁盘设备。该步骤触发驱动初始化​​LUN​​发现进程。扫描顺序:首先驱动层(​​qla2300/qla2200​​等),之后​​Linux SCSI​​中间层(即​​OS​​扫描)。​

​1.​​ ​​1. ​​通过命令行强制扫描,输入以下命令:​

​ ​​# echo "scsi-qlascan" > /proc/scsi​​/ / ​

​ ​​ ​​是​​qla2100, qla2200, qla2300 ​​(​​2.4​​内核驱动)或​​qla2xxx​​(​​2.6​​内核驱动)​​ ​​是​​HBA​​实例编号。​

​2.​​ ​​2. ​​执行步骤​​1​​之后,通过以下命令强制​​SCSI​​中间层执行扫描并为新加磁盘设备添加​​device table entry​​。​

​ ​​# echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi​

​ ​​"0 1 2 3"​​是“主机 通道​​ LUN​​”。​


​问题​​7​​:​​Red Hat Linux​​收到​​SCSI​​错误返回值​​0x20000​

​平台​​:​​Red Hat Enterprise Linux 4 U2​​及以上版本,​​QLogic​​,​​PowerPath​

​问题描述​​:​

​1.​​ ​​1. ​​Red Hat Linux​​收到​​SCSI​​错误返回值​​0x20000​​。​

​2.​​ ​​2. ​​kernel: SCSI error : <1 0 7 206> return code = 0x20000​
​kernel: end_request: I/O error, dev sdik, sector 4069594​

​ ​​根本原因​​:​

​ ​​当一个端口被禁止,拔出,或重置光纤通道交换机通常会导致一个​​RSCN​​(​​Registered State Change Notification​​)事件,所有仍连接在交换机上的​​HBA​​都会看到该​​RSCN​​事件。在没有预警的情况下,多路径软件(​​PowerPath, DMP, MPIO​​)将会无法判断。​

​ ​​注意:返回值​​0x20000​​表示​​DID_BUS_BUSY​​。并非所有​​0x20000​​错误都是由​​RSCN​​事件引起。​​Fabric​​或阵列故障也可能导致该错误。用户不应假设​​RSCN​​一定是导致该错误发生的原因。​

​ ​​解决方法​​:​

​ ​​要正确地解释​​RSCN​​事件,须在​​modprobe.conf​​文件中添加一个内核选项。须重启以使更改生效。​

​1.​​ ​​1. ​​编辑​​/etc/modprobe.conf​​并添加以下一行内容:​

​ ​​options qla2xxx ql2xprocessrscn=1​

​2.​​ ​​2.​​ ​​保存文件。​

​3.​​ ​​3. ​​重新编译​​initrd​​。​

​ ​​mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`​

​4. ​​重启系统以使更改生效。​


​问题​​8​​:​​Linux​​主机在​​/proc/scsi/scsi​​中只能看到一条路径连接存储​

​平台​​:​​SLES 9​​,​​SLES 10​​,​​QLogic 8.01.06.01​​,​​PowerPath 5.0.1​

​问题描述​​:​

​1.​​ ​​SuSE Linux​​在​​/proc/scsi/scsi​​中只看到一条路径连接存储。​

​2.​​ ​​PowerPath​​只显示一条路径连接到​​emcpower​​设备。​

​3.​​ ​​即使配置了​​4​​条路径,​​/proc/scsi/scsi​​也只显示一条路径连接到磁盘设备​

​ ​​Attached devices:​
​Host: scsi0 Channel: 00 Id: 00 Lun: 00​
​Vendor: DGC Model: RAID 5 Rev: 0324​

​ ​​Type: Direct-Access ANSI SCSI revision: 04 ​

​ ​​powermt display dev=all displays only one path to the emcpower device:​

​ ​​Pseudo name=emcpowera​
​CLARiiON ID=CK200072300649 [SG_LINUXTST01]​
​Logical device ID=60060160128C1D00D8D768A3915BDC11 [fiscuat2 DATA]​
​state=alive; policy=BasicFailover; priority=0; queued-IOs=0​
​Owner: default=SP B, current=SP B​
​==============================================================================​
​---------------- Host --------------- - Stor - -- I/O Path - -- Stats ---​
​### HW Path I/O Paths Interf. Mode State Q-IOs Errors​
​==============================================================================​
​ 0 qla2xxx sda SP B0 active alive 0 0​

​根本原因​​:​

​如果用户阻止​​PowerPath​​显示交换机上连接​​HBA0​​的端口,路径将会故障切换。​​PowerPath​​显示​​LUN​​并没有被另一个​​HBA​​通过另一个​​SP​​访问。(​​LUN​​将会​​trespass​​)。信息显示如下:​

​Jan 29 16:01:07 linuxtst01 kernel: qla2400 0000:08:00.0: LOOP DOWN detected (2).​
​Jan 29 16:01:18 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016039a028a8 -> 5006016839a028a8 - LUN 00, reason=0x2​
​Jan 29 16:01:18 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 0​
​Jan 29 16:01:19 linuxtst01 cmafcad[6362]: Host controller 129 status change.Status is now Loop Degraded.​
​Jan 29 16:01:21 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016839a028a8 -> 5006016a39a028a8 - LUN 00, reason=0x2​
​Jan 29 16:01:21 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 0​
​Jan 29 16:01:23 linuxtst01 kernel: qla2400 0000:08:00.0: Scheduling rescan for new luns...​
​Jan 29 16:01:23 linuxtst01 kernel: qla2400 0000:08:00.1: Scheduling rescan for new luns...​
​Jan 29 16:01:24 linuxtst01 kernel: qla2x00: FAILOVER device 0 from 5006016a39a028a8 -> 5006016939a028a8 - LUN 00, reason=0x2​
​Jan 29 16:01:24 linuxtst01 kernel: qla2x00: FROM HBA 0 to HBA 1​

​很明显​​PowerPath​​没有进行故障切换,但​​QLogic​​本机的故障切换被激活了。​

​检查​​/etc/modprobe.conf (RHEL​​主机​​) ​​或​​/etc/modprob.conf.local (SuSE ​​主机​​)​​的​​ql2xfailover​​参数。​

​解决方法​​:​

​更改​​ql2xfailover​​参数值为​​0​​以禁止本机故障切换。在​​/etc/modprobe.conf​​中添加​​options qla2xxx ql2xfailover=0 ConfigRequired=0​​,重新编译​​initrd​​并重启。重启之后,确认​​"cat /sys/module/qla2xxx/parameters/ql2xfailover"​​返回​​0​​。​

​ ​

​参考​

​ ​

​Primus Solution: emc166607, emc229414, emc253085, emc169907, emc166975, emc115253, emc162233, emc179178​

​ ​

​应用于​

​ ​

​Linux/Unix​​主机系统​

146 消息

2013年1月29日 19:00

mark!

找不到事件!

Top