当前位置: 移动技术网 > 科技>操作系统>Linux > Linux系统SCSI磁盘扫描机制解析及命令详细介绍

Linux系统SCSI磁盘扫描机制解析及命令详细介绍

2019年05月29日  | 移动技术网科技  | 我要评论
介绍
linux系统扫描scsi磁盘有几种方式?linux新增lun之后,能否不重启主机就认出设备?如果安装了powerpath,动态添加/删除lun的命令是什么?本文总结了linux主机对磁盘设备进行重新配置的方式,并附加命令实例。

更多信息
linux系统提供多重机制以重新扫描scsi总线并重认系统中加入的scsi设备。在2.4内核方案中,由于动态lun扫描机制不具备一致性,往往需要中断i/o。
2.6内核里,lun扫描有了显著改进并添加了动态lun扫描机制。linux目前缺乏像drvconfig或ioscan那样允许动态scsi通道重配的命令。
linux主机对磁盘设备进行重新配置的方式包括:
◦重启系统
◦卸载并重新加载hba驱动模块
◦echo /proc下的scsi设备列表
◦通过/sys下的属性设置运行scsi扫描
◦通过hba厂商脚本运行scsi扫描

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

重新加载hba驱动
通常情况下,hba驱动在系统中以模块形式加载。从而允许模块被卸载并重新加载,在该过程中scsi扫描函数得以调用。通常,在卸载hba驱动之前,scsi设备的所有i/o都应该停止,卸载文件系统,多路径服务应用也需停止。如果有代理或hba应用帮助模块,也应当中止。

命令示例
例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行如下命令:
# modprobe -r lpfc(卸载驱动)
# modprobe lpfc(加载驱动)
/proc下scsi扫描
2.4内核中,/proc文件系统提供了可用scsi设备的列表。如果系统中scsi设备重新配置,那么所有这些改变通过echo /proc接口反映到scsi设备中。添加一个设备,主机,channel,target id,以及磁盘设备的lun编号会被添加到/proc/scsi/,需指定scsi编号。

命令示例
# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi
0:主机id
1:channel id
2:target id
3:lun编号

该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。
如果要删除一个磁盘设备,使用适当的主机,channel,target id及lun编号运行如下格式命令:
# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi
0:主机id
1:channel id
2:target id
3:lun编号

/sys下scsi扫描
2.6内核中,hba驱动将scan功能导出至/sys目录下,可用来重新扫描该接口下的scsi磁盘设备。命令如下:
# cd /sys/class/scsi_host/host4/
# ls -al scan
# echo ‘- - -’ > scan
‘- - -’代表channel,target和lun编号。以上命令会导致hba4下所有channel,target以及可见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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网