linux挂载EMC存储基本思路,常用命令及故障处理
------本博文素材取自于网络,加入了自己的操作经验,文中的软件需要和对应的EMC设备匹配,不能全部照搬本文!具体软件、设备型号可到EMC官方查询!
对运行中的存储操作是需要谨慎的!本博文仅作参考,如果您按照此博文操作出现故障,与本博主无关,一切后果自负!------
一、linux挂载EMC存储基本思路(redhat\centos):
挂载存储有两种方式:光纤模式(hub卡)和iscsi (以太网)。两者大体思路是一样的。
1、在linux应用服务器上安装hub卡,连接光纤到光纤交换机上;
2、在linux应用服务器安装hub卡驱动程序,并查看本机hub的wwpn/wwnn号;
也可以登陆到光纤交换机上,查看对应的HBA卡接入到光交的端口,端口会显示wwpn号【通过switchshow查询】;
查看wwpn号: cat /sys/class/fc_host/host*/port_name
查看wwnn号: cat /sys/class/fc_host/host*/node_name
3、在linux应用服务器上需要安装Agent,安装后重起,EMC阵列才能发现主机;
A、将Agent光盘放入服务器光驱,或通过U盘、FTP上传均可
B、打开光盘或U盘所在目录,找到所在文件
C、通过命令行或双击完成安装
a. rpm –ivh NaviHostAgent-Linux-64-x86-en_US-6.29.5.0.66-1.x86_64.rpm
b. 确认安装完成;
4、在存储上连接linux应用服务器、并划出lun,选择存储大小;
A、登陆emc
B、先确认存储是否能够正确识别的主机,在存储上右键选择“connectivity status”.
C、在connectivity status 界面查看是否已经正确识别主机HBA卡的WWN
D、对新识别的HBA卡进行注册,点击“Group Edit”,弹出Group Edit Initators界面,从Available 里面选择新的HBA卡,移至Selected筐内,输入正确的主机名和IP地址,确定
E、回到Connectivity Status 检查所有HBA卡已经注册并且 处于logged in状态。
F、创建新LUN,在需要创建LUN的Raid Group上右键,选择 Bind LUN。
G、创建LUN的时候,确认几个主要参数 RAID Group for new LUN、LUN Size 、Default Owner。
H、创建Storage Group,在Storage Groups上右键,选择New Storage Group
I、在新创建的Storage Group上右键选择 属性,给主机分配相对应空间。
J、在属性的 LUNs页面,选择可用的新LUN,分配至Selected LUNs
K、在Hosts页面选择需要空间的主机,分配至Hosts be Connected筐内,点击OK确认所有配置。
L、然后分对lun 进行trespass,这样主机才能联机此磁盘。
5、在应用服务器上安装多路径软件,不同的存储,多路径软件不同;
A、 将PowerPath光盘放入服务器光驱,或通过U盘、FTP上传均可
B、 安装方式,同Agent相同,无需软件任何信息
C、 安装命令rpm –ivh EMCpower.LINUX-5.3.1.00.00-111.rhel5.x86_64.rpm
D、 输入PowerPath License
a、 在命令行下输入:emcpreg –install (emcpreg -add + SN 码)
(如果在安装 PowerPath的过程中没有注册 PowerPath 软件,且随后运行了 powermt config 命令 或重新启动了主机,则负载平衡和故障切换策略将设置为基本故障切换。
如果出现这种情况,您必须使用 emcpreg -install 命令注册 PowerPath,然后根据需要运行powermt set policy 命令重置该策略.)
b、 按提示输入序列号即可
E、 重启服务器。
F、 命令:powermt display dev=all 以查看软件是否正确安装。
6、在应用服务器将磁盘格式化,按需求挂载到相应的目录;
rmmod lpfc #删除lpfc模块
fdisk -l
modprobe lpfc #重新加载lpfc模块
fdisk -l #查看发现的EMC磁盘,命名格式为emcpowerx
A、 分区方式使用EMC磁盘:
a. 通过fdisk /dev/emcpowerx命令添加分区
(1、 创建分区:依次输入命令n创建分区;p主分区;1第一个分区w保存。
(2、 删除分区:输入命令d删除分区w保存。
b. mkfs.ext3 /dev/emcpowera1
c. mount /dev/emcpowera1 /tempdir
B、 若通过vg来管理
a. 通过fdisk /dev/emcpowerx命令添加分区,但选择分区类型时,建议选LVM
b. pvcreate /dev/emcpowera1
c. vgcreate –s 128M newvg /dev/emcpowera1
d. lvcreate -L 100G -n lv01 newvg
e. mkfs.ext3 /dev/newvg/lv01
f. mount /dev/newvg/lv01 /tempdir
g. vgdisplay
h. lvdisplay
C、 若需要修改磁盘名称,请通过以下命令:
a. emcpadm –renamepesudo –s 源磁盘名 –t 目标磁盘名
7、在/etc/fstab 设置自动启动挂载;
A、vi /etc/fstab
#在最后一行加入:
/dev/newvg/lv01 /tempdir ext3 defaults 0 0
B、在/etc/rc.d/rc.local加入 :
/sbin/vgsan
/sbin/vgchange -a y
二、Linux主机上查看emc挂载
1、查看是否有emc存储挂载
[root@xxx ~]# powermt display dev=all
Pseudo name=emcpowera
VPLEX ID=xxxxxx
Logical device ID=xxxxxxxx
.....
如果能看到以上emcpowera,能说明有emc存储挂载在本机上,如果挂载多块,也会按照emcpowera,b.c,d排序下去,能看到所有存储信息。
2、查看各挂载存储盘大小情况
[root@xxx ~]# fdisk -l |grep emcpower
Disk /dev/emcpowera:5000 MB, 5000709120 bytes
Disk /dev/emcpowerb: 500 GB, 500045094400 bytes
Disk /dev/emcpowerc: 500 GB, 500045094400bytes
.....
注意:emc统计的MB,GB是按照除以1000来换算的,如果需要换算准确的存储大小,可以使用后面的bytes除以1024来换算。
三、Linux主机上挂载常见故障(来源于:http://blog.sina.com.cn/s/blog_627aacdb01015hm5.html)
本文归纳总结了Linux/Unix系统几个常见的SCSI故障如:主机HBA无法发现LUN,路径显示错误,同一个LUN显示重复的LUN ID,故障切换问题,重新扫描磁盘问题等,并列出相关解决方法。
平台: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/<driver_name>/<adapter_ID>
<driver_name>是qla2100, qla2200, qla2300 (2.4内核驱动)或qla2xxx(2.6内核驱动)<adapter_ID>是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