xulei1
2 Bronze

CX 相关问题

转到解答

我又来了~~

环境是这样的:

主机:RHEL5.4/4.8

array:CX380/CX4960

我先给主机划了4块盘,后来再往这台主机划8块盘(相同的一台CX存储),

将数据全部迁往新划的8块盘以后,我在线删掉了老的4块盘,使用下边的步骤:

powermt remove dev=emcpowera

echo 1 > /sys/block/sdac/device/delete

powermt release

将4个powerpath设备和所有的路径设备(4*8)全部删掉了。

然后在array端去掉了对这台主机的mask配置。

然后回到主机进行在线扫盘操作,

echo "- - -" > /sys/class/scsi_host/host0/scan

echo "- - -" > /sys/class/scsi_host/host0/scan

主机又扫出来8块路径盘,并且这8块路径设备不能进行IO操作:

# dd if=/dev/sdo of=/dev/null bs=1024k count=1

dd: reading `/dev/sdo': Input/output error

0+0 records in

0+0 records out

0 bytes (0 B) copied, 0.011038 seconds, 0.0 kB/s

谁可以帮我解释下是怎么回事呢?

标签 (1)
标记 (3)
0 项奖励
1 个已接受解答

已接受的解答
ylinn
1 Copper

Re: CX 相关问题

转到解答

关于LUNZ,请参考这篇,链接  http://goo.gl/rFzEd

在 SCSI-3 (SCC-2) 的实现中,LUNZ定义为”the logical unit number that an application client uses to communicate with, configure and determine information about an SCSI storage array and the logical units attached to it. The LUN_Z value shall be zero.” 即client端用于和SCSI存储阵列通讯、进行配置和获取阵列和LUN信息的LUN,有点绕。

在 CLARiiON 相关的说法上,LUNZ也叫ghost LUN,是当阵列中没有LUN输出给主机的时候,CLARiiON 阵列用来实现阵列对主机和PowerPath可见的一种方法:

  • 如果阵列无法通过ip(例如没有连接网络)与主机通讯,那么LUNZ就可以作为主机发送指令(例如 bind)至阵列的通道。
  • 同样,如果主机的HBA还没有“log in”到Storage Group时,主机OS和PowerPath可以通过LUNZ看到阵列。LUNZ也是Navisphere Agent 推送 initiator 记录至阵列所必须的设备。而主机“log in”到Storage Group是必须的,当initiator被推送到阵列后,该initiator相应的主机会在阵列的Navisphere Manager 中显示为可用,这时就可以添加到Storage Group中去了。在分配物理LUN给主机之前,每条IO path上都是看到一个LUNZ设备。

总而言之,这是因为arraycommpath被设置为1,而阵列上又没有分配一个地址为0的物理LUN(就是配置lun时指定其Host ID 为0)给主机的initiator时,就产生了一个虚拟的LUN0,用于主机和阵列通讯。
所以,如果想除掉LUNZ,就是分配一个地址为0的物理LUN给主机,则LUNZ就不再需要了,Agent会通过这个物理的LUN与阵列通讯,LUNZ会自己消失。而当这个地址为0的LUN被从主机的Storage Group删除后,LUNZ会再次出现。
另外一种方法,也可以将arraycommpath设置为0 。当然,arraycommpath的这两个值就是设置主机和阵列间是否可通讯的参数,需要特别注意的是,如果设置错误,那将使您的主机看不到存储了。

0 项奖励
10 条回复10
SteveZhou
2 Iron

Re: CX 相关问题

转到解答

如果你去掉了lun mask,那么8条路径就是到CLARIION的LUNZ设备。这个是虚拟设备,主机用其向CLARIION发送SCSI命令用的。如果你重新分配LUN给这台机器,并且必须有HLU=0的LUN,我相信LUNZ就会消失。

0 项奖励
xulei1
2 Bronze

Re: CX 相关问题

转到解答

lunz是不是和DMX的Gatekeeper设备一个道理,接通了zone以后,一条路径就会产生一个设备。

具体有什么用吗?

主机端没有启用naviphere的agent,需要像array发送什么scsi指令呢?

我是否可以直接将这些设备删除掉呢?

echo 1 > /sys/block/sdo/device/delete

因为这些LUNZ设备不能被OS访问的。OS会定时测试一下块设备是否都是OK的,因此会一直打印错误日志。甚是恶心。

0 项奖励
zhouzengchao
4 Germanium

Re: CX 相关问题

转到解答

作用就是接收来自主机的SCSI命令,NaviAgent只是一个例子,你不能保证操作系统本身或者驱动程序需要通过LUNZ于存储进行通信。删除LUNZ只要关闭initiator的arraycommpath属性,或者分配一个HLU=0的LUN给主机。

0 项奖励
zhouzengchao
4 Germanium

Re: CX 相关问题

转到解答

关于LUNZ,看这篇文章 https://community.emc.com/docs/DOC-16365

0 项奖励
Highlighted
Celia_Lee
2 Iron

Re: CX 相关问题

转到解答

LUNZ不是给navisphere agent来用的,是给底层的driver用来保持主机和存储的通讯检查来用的.

你这种情况看上去是没有生成完全的底层物理设备.

我碰到过类似的情况,在删除旧的LUN以后要扫一次,确保旧的设备清干净了.

添加新的LUN以后还要再扫一次,并用命令检查扫出来的设备名是正确的.

可以用powermt display dev=all来查看设备

用powermt config去创建emcpower设备和sd设备之间的映射关系.

有一种情况,就是在linux某些版本下,在线扫描物理设备的功能不是很强,需要重启服务器去刷新sd设备.

在线扫描SCSI device的命令有可能没有完全更新全部扫出来的盘.

刷新出来的sd设备的数量,应该是LUN的数量乘以链路数.

这个步骤很关键.

比如说如果从主机到存储4条链路,8个LUN, 在你扫描出来的设备,应该一共有32sd的设备.

然后才能用powermt config去生成powerpath的伪设备,即名称为emcpowera的设备.

这个逻辑关系就是这样的: HBA --> sdX --> powerpath --> emcpowerY

xulei1
2 Bronze

Re: CX 相关问题

转到解答

最初,4条链路,4个lun,总共16个sd设备

添加8个lun,并删掉4个lun,再扫盘(注意顺序很重要),

sd设备为4*8+4=36,也就是说最后扫盘又扫出来4条路径,证实了是LUNZ设备了。

并且,我再往这条主机添加一个lun,HLU=0,扫盘后不会新增新的sd设备,而会更新LUNZ的sd设备的时间戳。

大家的意思是,LUNZ还是有必要存在的是吧?

0 项奖励
zhouzengchao
4 Germanium

Re: CX 相关问题

转到解答

LUNZ是没有必要存在的,仅当最初配置时还没有任何设备作为主机到存储的通信路径时作为临时的虚拟路径使用。一旦有了LUN呈现给主机,主机就可以使用真正的LUN与存储通信。LUNZ无法删除的问题的确存在,而且不同的OS解决方法不同,建议直接到support.emc.com搜索相关LUNZ无法删除的知识库或者联系EMC主机Team,其实就是重新配置,重新扫描。

0 项奖励
ylinn
1 Copper

Re: CX 相关问题

转到解答

关于LUNZ,请参考这篇,链接  http://goo.gl/rFzEd

在 SCSI-3 (SCC-2) 的实现中,LUNZ定义为”the logical unit number that an application client uses to communicate with, configure and determine information about an SCSI storage array and the logical units attached to it. The LUN_Z value shall be zero.” 即client端用于和SCSI存储阵列通讯、进行配置和获取阵列和LUN信息的LUN,有点绕。

在 CLARiiON 相关的说法上,LUNZ也叫ghost LUN,是当阵列中没有LUN输出给主机的时候,CLARiiON 阵列用来实现阵列对主机和PowerPath可见的一种方法:

  • 如果阵列无法通过ip(例如没有连接网络)与主机通讯,那么LUNZ就可以作为主机发送指令(例如 bind)至阵列的通道。
  • 同样,如果主机的HBA还没有“log in”到Storage Group时,主机OS和PowerPath可以通过LUNZ看到阵列。LUNZ也是Navisphere Agent 推送 initiator 记录至阵列所必须的设备。而主机“log in”到Storage Group是必须的,当initiator被推送到阵列后,该initiator相应的主机会在阵列的Navisphere Manager 中显示为可用,这时就可以添加到Storage Group中去了。在分配物理LUN给主机之前,每条IO path上都是看到一个LUNZ设备。

总而言之,这是因为arraycommpath被设置为1,而阵列上又没有分配一个地址为0的物理LUN(就是配置lun时指定其Host ID 为0)给主机的initiator时,就产生了一个虚拟的LUN0,用于主机和阵列通讯。
所以,如果想除掉LUNZ,就是分配一个地址为0的物理LUN给主机,则LUNZ就不再需要了,Agent会通过这个物理的LUN与阵列通讯,LUNZ会自己消失。而当这个地址为0的LUN被从主机的Storage Group删除后,LUNZ会再次出现。
另外一种方法,也可以将arraycommpath设置为0 。当然,arraycommpath的这两个值就是设置主机和阵列间是否可通讯的参数,需要特别注意的是,如果设置错误,那将使您的主机看不到存储了。

0 项奖励
Celia_Lee
2 Iron

Re: CX 相关问题

转到解答

所以这个问题的现象就是因为先添加了LUN到SG里,这样Host ID顺序排下去就是4-11了, 而把原来的LUN从SG里删掉后,就把Host ID为0-3的LUN都删掉了,所以出现了LUNZ.

后来又添加进去的LUN默认Host ID就是0了. 再扫描,LUNZ就消失了.

是否确实如此可以去Storage Group里查询Host ID.

所以如果你先移除LUN,再添加LUN进去, 就不会有LUNZ出现了.

LUNZ存在就有它存在的意义,知道这种现象并不是错误就可以了. 它没有可存储的空间,也不会影响其他LUN的使用.

另外, sd的设备是扫描SCSI device生成的. 而emcpower的设备在不重启服务器的情况下,需要运行powermt config去生成. 而不会自动生成. 我们也碰到过在linux环境里重启过服务器但依旧没有成生emcpower的设备的情况,也要用powermt config去解决.