在Solaris 10上删除MPxIO设备而不重新启动

我正在两个光纤通道连接的EMCarrays之间进行存储迁移。 我已经将数据从旧arrays上的磁盘移动到新arrays上的磁盘上。 现在,我想从操作系统中删除旧的磁盘,这样arrays就可以在操作系统没有发现警报的情况下解除分区,因为磁盘已经消失了。 我真的不想重新启动来实现这一点。

我可以在没有非MPxIO磁盘的情况下执行此操作,但是对于MPxIO磁盘,我通常的方法不起作用。

我通常的技巧是使用

luxadm -e offline /dev/rdsk/cXtXdXs2 devfsadm -Cvc disk 

这是一个例子。 这是在我的testing实验室没有连接到EMCarrays,而是旧的SENA(A5100),但它应该适用于任何FC连接的磁盘。 正如你所看到的,它根本不起作用

 v480:root $ stmsboot -L | grep /dev/rdsk/c6t20000020371AC414d0 /dev/rdsk/c5t22d0 /dev/rdsk/c6t20000020371AC414d0 /dev/rdsk/c2t22d0 /dev/rdsk/c6t20000020371AC414d0 v480:root $ luxadm -e offline /dev/rdsk/c6t20000020371AC414d0s2 v480:root $ stmsboot -L | grep /dev/rdsk/c6t20000020371AC414d0 /dev/rdsk/c5t22d0 /dev/rdsk/c6t20000020371AC414d0 /dev/rdsk/c2t22d0 /dev/rdsk/c6t20000020371AC414d0 

尝试删除底层设备也不起作用

 v480:root $ luxadm -e offline /dev/rdsk/c5t22d0s2 Error: Invalid pathname (/dev/rdsk/c5t22d0s2) v480:root $ luxadm -e offline /dev/rdsk/c2t22d0s2 Error: Invalid pathname (/dev/rdsk/c2t22d0s2) 

有谁知道这是怎么完成的?

我在Solaris 文档中find了这个问题的答案。 归结为使用cfgadm -al给出的设备cfgadm -c unconfigure设备( cfgadm -c unconfigure ),并使用devfsadm清理。 接下来的难题是识别与要移除的MPxIO设备相对应的wwns。 这个小脚本应该打印设备wwn,它是相应的设备文件。

  fcinfo hba-port | awk '/HBA Port WWN: / { HBAwwn=$NF} /OS Device Name:/ {print $NF, HBAwwn}' | sed 's/\/dev\/cfg\///g' | while read ctlr HBAwwn do fcinfo remote-port -sp $HBAwwn | awk '/Remote Port WWN: / {rpwwn=$NF} /OS Device Name/ {print "'$ctlr'::" rpwwn, $NF}' done 

例如。

  c0::500000e010f3eaf2 /dev/rdsk/c0t1d0s2 c0::500000e010f23c62 /dev/rdsk/c0t0d0s2 c5::21000020371ac414 /dev/rdsk/c6t20000020371AC414d0s2 c2::22000020371ac414 /dev/rdsk/c6t20000020371AC414d0s2 

所以在这里放下/dev/rdsk/c6t20000020371AC414d0s2就可以运行

  cfgadm -c unconfigure c5::21000020371ac414 c2::22000020371ac414 devfsadm -Cvc disk 

Oracle调用MPxIO的“StorageTekstream量pipe理器软件”或STMS,使文档更难find。

Solaris 11等效文档在这里 。 它们看起来几乎与Solaris 10完全相同。 我还没有find早期版本的文档,但缺乏fcinfo命令和pre- fcinfo FC驱动程序必须使它成为一个真正的琐事。