未解决
此帖子已超过 5 年
2 Intern
•
1.2K 消息
0
7804
2014年6月12日 19:00
【专家问答】Linux/Unix存储管理常见问题与解决方法
好消息,EMC中文论坛里新一期的“专家问答”活动又将开启。从6月16日(周一)开始为期两周的时间里,我们将和大家一起讨论和分享有关Linux/Unix存储管理常见问题与解决方法的话题和心得。以往所有已完成的“专家问答”活动可参考这个汇总贴。
本期讨论主题:Linux/Unix存储管理常见问题与解决方法
本期持续时间:2014年6月16日 – 6月30日,为期两周。活动结束后,本贴将锁定,有相关的后续问题可开新贴提问。
本期我们邀请到的三位专家是: Kevin Cai,Fenglin Li和Jiawen Zhang。
Kevin Cai 来自EMC技术支持 Unix主机组的Kevin。在Unix 操作系统领域将近做了10年的系统管理和技术支持,熟悉各个Unix/Linux/VMware操作系统,并擅长系统磁盘管理。目前主要负责Powerpath和Solutions Enabler这两款EMC软件的技术支持,同时也帮助客户解决Unix主机在连接EMC中高端存储过程中遇到的相关问题 | ||
Fenglin Li IT行业8年从业经验,曾在跨国企业担任IT系统工程师、数据库管理员、技术支持工程师等职位,熟悉IT基础架构解决方案。目前担任EMC eServices技术支持工程师,负责Symmetrix和EMC主机软件技术支持工作。 | ||
Jiawen Zhang 就职于EMC在线支持部门,负责Symmetrix产品及Linux/Unix主机系统相关的技术支持。在Linux系统内核、存储管理与设备驱动方面有所见长。对Symmetrix系统管理、PowerPath多路径控制软件有强烈兴趣。 |
和专家交流,与同行畅谈。欢迎大家以回帖的方式就 Linux/Unix存储管理常见问题与解决方法 这个主题,来积极提问和踊跃发表自己的意见。期待您的参与!
Jason_Zhou
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月12日 19:00
本帖暂时锁定,将于下周一(6月16日)活动开启前正式解锁。
Jason_Zhou
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月15日 18:00
帖子解锁。本期活动正式开启,欢迎对此话题感兴趣的朋友们积极参与提问和讨论。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月16日 01:00
常见问题与解决方法分享:
问题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
问题描述:
根本原因:
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
问题描述:
解决方法:
按照以下步骤进行操作:
lsmod | grep lpfc
lpfc 243664 0 [lpfcdfc]
命令输出地黑体部分是正在使用lpfc的模块。在lpfcdfc被删除之前,lpfc将无法删除。
rmmod lpfcdfc
当该命令执行成功,通过lsmod命令验证该模块已被删除。
rmmod lpfc
modprobe lpfc
同时也会自动扫描磁盘设备,如果没有,运行命令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扫描)。
# echo "scsi-qlascan" > /proc/scsi/ /
是qla2100, qla2200, qla2300 (2.4内核驱动)或qla2xxx(2.6内核驱动) 是HBA实例编号。
# 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
问题描述:
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文件中添加一个内核选项。须重启以使更改生效。
options qla2xxx ql2xprocessrscn=1
mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`
问题8:Linux主机在/proc/scsi/scsi中只能看到一条路径连接存储
平台:SLES 9,SLES 10,QLogic 8.01.06.01,PowerPath 5.0.1
问题描述:
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。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月16日 01:00
总结了一些以前用户常常问到的问题与解决方法,欢迎大家提问。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月16日 01:00
常见问题与解决方法分享:
Linux主机对磁盘设备进行重新配置的方式:
系统重启
重启主机是检测新添加磁盘设备的可靠方式。在所有I/O停止之后方可重启主机,同时静态或以模块方式连接磁盘驱动。系统初始化时会扫描PCI总线,因此挂载其上的SCSI host adapter会被扫描到,并生成一个PCI device。之后扫描软件会为该PCI device加载相应的驱动程序。加载SCSI host驱动时,其探测函数会初始化SCSI host,注册中断处理函数,最后调用scsi_scan_host函数扫描scsi host adapter所管理的所有scsi总线。
重新加载HBA驱动
通常情况下,HBA驱动在系统中以模块形式加载。从而允许模块被卸载并重新加载,在该过程中SCSI扫描函数得以调用。通常,在卸载HBA驱动之前,SCSI设备的所有I/O都应该停止,卸载文件系统,多路径服务应用也需停止。如果有代理或HBA应用帮助模块,也应当中止。
命令示例:
例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行如下命令:
# modprobe -r lpfc(卸载驱动)
# modprobe lpfc(加载驱动)
/proc下SCSI扫描
命令示例:
# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi
0:主机ID
1:channel ID
2:target ID
3:LUN编号
该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。
如果要删除一个磁盘设备,使用适当的主机,channel,target ID及LUN编号运行如下格式命令:
# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi
0:主机ID
1:channel ID
2:target ID
3:LUN编号
/sys下SCSI扫描
# cd /sys/class/scsi_host/host4/
# ls -al scan
# echo ‘- - -’ > scan
‘- - -’代表channel,target和LUN编号。以上命令会导致hba4下所有channel,target以及可见LUN被扫描。
RHEL5 或SUSE10:
echo ‘- - -’ > /sys/class/scsi_host/host0/scan
/sys/class/scsi_host/ 下面有几个host 就扫描几次
RHEL4 或SUSE9:
echo 1 >> /sys/class/scsi_host/host0/issue_lip
同样是/sys/class/scsi_host/ 下面有几个host 就执行几次
echo ‘- - -’ >> /sys/class/scsi_host/host0/scan
在现有PowerPath环境中增加LUN:
echo ‘- - -’ > /sys/class/scsi_host/host#/scan
例如, 如果powermt 显示列出HBA 4 和5, 使用如下命令开始扫描:
echo ‘- - -’ > /sys/class/scsi_host/host4/scan
echo ‘- - -’ > /sys/class/scsi_host/host5/scan
在现有PowerPath环境中动态删除 LUN
注意,必须严格遵守操作次序,如果次序有误可能会造成主机OS panic。
powermt display dev=emcpower
powermt remove dev=emcpower
powermt release
如果此命令失败,已删除的虚拟设备仍会存在于/dev 和/sys/block 下,并且在以后动态添加新LUN时可能会引发问题。
echo 1 > /sys/block/sd /device/delete
此命令使PowerPath 停止这些原始sd 设备上的I/O 并且将其从/dev 和/sys/block下移除。如此命令执行不成功,在以后动态添加新LUN时可能会引发问题。
通过HBA厂商脚本进行SCSI扫描
QLogic
利用QLogic FC HBA LUN Scan Utility 脚本即可无需重启动系统而识别新添加的LUN。也无需对QLogic FC driver 的重新加载。
命令示例:
通过以下命令重新扫描所有HBA:
# ./ql-dynamic-tgt-lun-disc.sh
# ./ql-dynamic-tgt-lun-disc.sh -s
# ./ql-dynamic-tgt-lun-disc.sh –scan
重新扫描并删除丢失的LUN,使用以下两个命令其中任何一个:
# ./ql-dynamic-tgt-lun-disc.sh -s -r
# ./ql-dynamic-tgt-lun-disc.sh --scan –refresh
Emulex
使用 Emulex LUN Scan Utility 脚本可以动态扫描新添加的LUN。
命令示例:
# gunzip lun_scan.sh.gz
# chmod a+x lun_scan
扫描所有lpfc HBA:
# lun_scan all
扫描scsi主机编号2的lpfc HBA:
# lun_scan 2
之后确认OS 识别到新设备:
# fdisk -l
如果系统中有PowerPath ,还需要运行:
# powermt config
RockndRoll
6 消息
1
2014年6月18日 18:00
能介绍一下Linux系统LUN迁移和扩容的操作步骤吗?
born_chen
2 Intern
2 Intern
•
1.8K 消息
0
2014年6月18日 20:00
目前新版本的linux 在添加了存储LUN后,到底要不要重启才能扫到新的磁盘?
Fenglin1
2 Intern
2 Intern
•
2.1K 消息
0
2014年6月18日 20:00
楼上Kevin描述的步骤很详细,我这里再补充一个实际的Linux LVM的扩容案例,Linux文件系统在线扩容(操作示范), 它是中文论坛现有的文档。
RockndRoll,目前中文论坛的各种技术文章已经很丰富了,搜索一下可能会发现你想了解或者感兴趣的东西,
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月18日 22:00
再补充一个Linux主机HBA(Emulex)的常用操作文档,
https://community.emc.com/docs/DOC-33681
欢迎提问。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月18日 23:00
这里举一个在不同存储阵列之间用LVM做迁移的例子:
1. 将新磁盘添加到卷组
创建新卷: pvcreate
扩展卷组:vgextend
2. 对现有逻辑卷作镜像
lvconvert -m 1 --corelog
3. 镜像结束后,断开镜像
lvconvert -m 0
4. 从卷组中将源卷移除
lvremove
bearsh
1 消息
0
2014年6月24日 08:00
不好意思。最近遇到一個問題。沒有裝powerpath。是用linux本來mulitpath。
當mount 裡來時候,重開機會開不進去,而進入maintenance mode.
如果要設定話,怎樣設定是比較好的。感謝
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月24日 16:00
如果已经正确mount了root文件系统,用vi /etc/fstab看下文件系统是不是只读模式,如果是的话可以尝试用以下命令remount为读写模式:mount -o remount,rw,然后重启系统。
zhouzengchao
2 Intern
2 Intern
•
1.4K 消息
0
2014年6月25日 23:00
Hi Kevin,
请教如何将host#与实际的物理HBA口对应起来?比如host1,我怎么知道是哪个HBA的哪个口?
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年6月27日 01:00
分享一个Linux存储管理的常用命令吧(原文出处:https://community.emc.com/docs/DOC-18819)
文件系统操作工具:
fdisk – 作用是用来创建和控制分区表。
用法:fdisk
parted – 一个用来控制分区的程序。
用法:parted
mkfs – 用来创建Linux的文件系统和磁盘设备分区。
用法:mkfs
fsck – 用来检测和修复Linux文件系统。
用法:fsck
mount – 加载文件系统到目录结构。
用法:mount
unmount – 卸载文件系统。
用法:unmount
多路径操作工具:
multipath –multipath命令作用是检测Linux到磁盘设备的多路径,达到故障转移和性能的目的,是Linux自带的MPIO工具。
用法:multipath
kpartx – 用来从分区表创建磁盘设备映射,可以映像任何分区块设备到设备文件的工具。
用法:kpartx
dmsetup – dmsetup命令用管理使用device-mapper驱动的逻辑设备。
用法:dmsetup
scsi_id – 获取和生成独立的SCSI identifier
用法:scsi_id
驱动模块工具:
modprobe – 自动处理可载入模块。modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
用法:multipath
lsmod -列出所有已载入系统的内核模块。
用法:lsmod
insmod – 动态加载单个模块到Linux内核
用法:insmod
rmmod – 用来卸载内核中不使用的模块,作用和insmod –r选项类似。
用法:rmmod
Linux设备管理器udev工具:
udev – 用作系统中的硬件设备的状态动态更新设备文件,设备文件的创建,删除等。设备文件通常放在/dev目录下。
用法:udev
udevinfo – 用作从udev数据库中查询设备信息。
用法:udevinfo
udevmonitor – 显示内核和udev的事件日志
用法:udevmonitor
iSCSI工具:
iscsiadm – isciadm工具用来Linux扫描和登入iSCSI target,同时支持访问和管理open-iscsi数据库。
用法:isciadm
iscsi-ls – 显示iscsi设备工具,工具可以显示当前连接的iSCSI target。
用法:iscsi-ls
其他工具:
ispci –ispci工具用来显示系统中所有PCI相关设备和所有设备连接到PCI的的信息。
用法:ispci
isscsi – isscsi工具用来显示系统内所有SCSI设备的信息。
用法:isscsi
Jason_Zhou
2 Intern
2 Intern
•
1.2K 消息
0
2014年7月1日 01:00
本期专家问答活动已圆满结束。谢谢各位的参与以及专家们的解答。本帖就此锁定,大家如有其它后续问题,欢迎开新贴讨论。