我们有一个运行 oracle rac 的数据库服务器。我们最近在它所连接的主 LUN 上的空间不足。我创建了一个新的 100GB LUN 并将其连接到现有的 LUN 上,从而创建了一个新的 MetaLUN。经过一番混乱后,我设法让 linux 识别新空间。然后我在伪设备上创建了一个新分区,以使用新空间。以前,当我在其他系统上完成此操作时,下一步是在新分区上创建一个 ASM 磁盘并将该磁盘添加到 oracle 磁盘组。然而这失败了。我知道 ASM 和 powerpath 的各种问题,但我认为这不是这里的问题。在调查该问题时,我发现其中一个底层逻辑设备没有反映大小变化。见下文;
Powermt 显示所有底层逻辑单元
[root@XXXXX~]# powermt display dev=emcpowerd
Pseudo name=emcpowerd
CLARiiON ID=CKM00091500009 [VFRAC2]
Logical device ID=6006016030312200787502866C65DE11 [LUN 30]
state=alive; policy=CLAROpt; priority=0; queued-IOs=0
Owner: default=SP A, current=SP A Array failover mode: 1
`==============================================================================`
---------------- Host --------------- - Stor - -- I/O Path - -- Stats ---
`### HW Path I/O Paths Interf. Mode State Q-IOs Errors`
`==============================================================================`
3 qla2xxx sde SP A0 active alive 0 0
3 qla2xxx sdj SP B0 active alive 0 0
4 qla2xxx sdo SP A1 active alive 0 0
4 qla2xxx sdt SP B1 active alive 0 0
**Fdisk on the pseudo device shows correct space.**
[root@XXXXX ~]# fdisk -l /dev/emcpowerd
Disk /dev/emcpowerd: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/emcpowerd1 1 39162 314568733+ 83 Linux
/dev/emcpowerd2 39163 52216 104856255 83 Linux
**fdisk on one of the logical units is wrong**
[root@XXXXX~]# fdisk -l /dev/sde
Disk /dev/sde: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 39162 314568733+ 83 Linux
/dev/sde2 39163 52216 104856255 83 Linux
**fdisk on the rest of the units is fine**
[root@XXXXX ~]# fdisk -l /dev/sdj
Disk /dev/sdj: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdj1 1 39162 314568733+ 83 Linux
/dev/sdj2 39163 52216 104856255 83 Linux
此外,当我创建分区时,linux 没有在 /dev 目录中为第二个分区创建任何条目,所以我手动创建了这些
[root@XXXXX dev]# mknod sde2 b 8 66
[root@XXXXX dev]# ls -al sd[ejot]?
brw-r----- 1 root disk 8, 65 Dec 29 14:20 sde1
brw-r--r-- 1 root disk 8, 66 Apr 8 20:31 sde2
brw-r----- 1 root disk 8, 145 Dec 29 14:19 sdj1
brw-r--r-- 1 root disk 8, 146 Apr 8 20:33 sdj2
brw-r----- 1 root disk 8, 225 Apr 6 23:12 sdo1
brw-r--r-- 1 root disk 8, 226 Apr 8 20:33 sdo2
brw-r----- 1 root disk 65, 49 Dec 29 14:19 sdt1
brw-r--r-- 1 root disk 65, 50 Apr 8 20:33 sdt2
这是我们无法轻易重启的生产服务器。
任何想法将不胜感激。
Ĵ
除此之外
partprobe
,尝试使用 blockdev 实用程序重新读取设备的分区表:然后,问题可能是 LUN 本身没有正确更新。
您可以尝试通过文件系统对光纤通道或 SCSI 主机发出重新扫描命令
/sys
。前段时间,我编写了这个
scsi_rescan_bus.sh
脚本来处理我们的 EMC Clariion 设备:我不完全确定它是否仍然适用于现代内核和设备。在生产环境中尝试之前,请务必在专用测试环境中进行测试!
有许多陷阱,因此请确保您阅读了这些相关主题:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=1454807
以及 Red Hat 官方文档(“在线存储重新配置指南”): http ://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/index.html
尝试运行
/sbin/partprobe /dev/emcpowerd
partprobe
告诉你的内核重新扫描分区我一直在与 EMC 一起调查这个问题,如果不重新启动,似乎没有办法解决这个问题。然而,作为一项工作,我创建了一个全新的 lun,并动态拾取它,并且能够让 oracle 识别这一点。Ĵ