Linux/Unix存储管理常见问题与解决方法(一)

Linux主机对磁盘设备进行从新配置的方式服务器

    • 重启系统ide

    • 卸载并从新加载HBA驱动模块函数

    • Echo /proc下的SCSI设备列表spa

    • 经过/sys下的属性设置运行SCSI扫描代理

    • 经过HBA厂商脚本运行SCSI扫描orm

 

 

系统重启xml

重启主机是检测新添加磁盘设备的可靠方式。在全部I/O中止以后方可重启主机,同时静态或以模块方式链接磁盘驱动。系统初始化时会扫描PCI总线,所以挂载其上的SCSI host adapter会被扫描到,并生成一个PCI device。以后扫描软件会为该PCI device加载相应的驱动程序。加载SCSI host驱动时,其探测函数会初始化SCSI host,注册中断处理函数,最后调用scsi_scan_host函数扫描scsi host adapter所管理的全部scsi总线。接口

 

 

从新加载HBA驱动ip

一般状况下,HBA驱动在系统中以模块形式加载。从而容许模块被卸载并从新加载,在该过程当中SCSI扫描函数得以调用。一般,在卸载HBA驱动以前,SCSI设备的全部I/O都应该中止,卸载文件系统,多路径服务应用也需中止。若是有代理或HBA应用帮助模块,也应当停止。rem

命令示例:

例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行以下命令:

# modprobe -r lpfc(卸载驱动)

# modprobe lpfc(加载驱动)

 

/procSCSI扫描

  1. 2.4内核中,/proc文件系统提供了可用SCSI设备的列表。若是系统中SCSI设备从新配置,那么全部这些改变经过echo /proc接口反映到SCSI设备中。添加一个设备,主机,channeltarget ID,以及磁盘设备的LUN编号会被添加到/proc/scsi/,需指定scsi编号。

命令示例:

# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi

0:主机ID

1channel ID

2target ID

3LUN编号

该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。若是没有找到相应文件,需为/dev路径下新增磁盘设备建立设备文件名。

 

若是要删除一个磁盘设备,使用适当的主机,channeltarget IDLUN编号运行以下格式命令:

# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi

0:主机ID

1channel ID

2target ID

3LUN编号

 

/sysSCSI扫描

  1. 2.6内核中,HBA驱动将SCAN功能导出至/sys目录下,可用来从新扫描该接口下的SCSI磁盘设备。命令以下:

# cd /sys/class/scsi_host/host4/

# ls -al scan

# echo ‘- - -’ > scan

‘- - -’表明channeltargetLUN编号。以上命令会致使hba4下全部channeltarget以及可见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:

  1. 1.    1.确保存储端已配置好LUN并输出给Linux 主机

  2. 2.    2.经过powermt命令得到HBA 卡列表,并扫描列表中全部的HBA

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

  1. 3.    3.运行powermt config 配置新认到的磁盘,生成虚拟设备

  2. 4.    4.powermt display 检查新认到的LUN 及设备路径

在现有PowerPath环境中动态删除 LUN

注意,必须严格遵照操做次序,若是次序有误可能会形成主机OS panic

  1. 1.    1.在将要删除的设备上中止全部的I/O

  2. 2.    2.经过如下命令肯定虚拟设备对应的原始SCSI设备:

powermt display dev=emcpower<id>

  1. 3.    3.删除虚拟设备

      powermt remove dev=emcpower<id>

  1. 4.    4.回收虚拟设备号以备后用

      powermt release

      若是此命令失败,已删除的虚拟设备仍会存在于/dev /sys/block 下,而且在之后动态添加新LUN时可能会引起问题。

  1. 5.    5.对每一个原始SCSI 设备执行如下命令:

      echo 1 > /sys/block/sd<id>/device/delete

      此命令使PowerPath 中止这些原始sd 设备上的I/O 而且将其从/dev /sys/block下移除。如此命令执行不成功,在之后动态添加新LUN时可能会引起问题。

  1. 6.    6.在存储阵列中删除对应的LUN,执行powermt display 验证设备已被删除。

 

经过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主机编号2lpfc HBA

# lun_scan 2

 

以后确认OS 识别到新设备:

# fdisk -l

若是系统中有PowerPath ,还须要运行:

# powermt config

相关文章
相关标签/搜索