介绍
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
Linux系统SCSI磁盘扫描机制解析及命令详细介绍
2019-12-13 12:29Linux教程网 Linux
有些新手朋友对Linux系统SCSI磁盘扫描机制解析及命令不是很熟悉,接下来将详细介绍,需要了解的朋友可以参考下
延伸 · 阅读
- 2024-11-03晨报:《龙腾4》Steam“多半好评” 《Apex》不再支
- 2022-03-11在Linux下通过命令行打包Android应用的方法
- 2022-03-10这个 Linux 图形计算器让数学很有趣
- 2022-03-10Linux下部署springboot项目的方法步骤
- 2022-03-10linux中把.c的文件编译成.so文件
- 2022-03-10Linux服务器下安装配置Nginx的教程
- Linux
在 Linux 上使用 gImageReader 从图像和 PDF 中提取文本
gImageReader 是一个 GUI 工具,用于在 Linux 中利用 Tesseract OCR 引擎从图像和 PDF 文件中提取文本。...
- Linux
Linux下semop等待信号时出现Interrupted System Call错误(EINTR)解决方法
本篇文章是对在Linux下semop等待信号时出现Interrupted System Call错误(EINTR)的解决方法进行了详细的分析介绍,需要的朋友参考下...
- Linux
利用Linux高级IO实现非阻塞和多路复用IO
高级IO(Advanced IO)是一种在Linux系统中进行非阻塞和多路复用IO操作的技术。这种技术可以提高系统的并发处理能力,提升IO性能,并减少资源的消耗。下面...
- Linux
Linux系统一些重要的学习方法及路线图详解
对于Linux系统来说;一些学习方法及路线图是非常值得学习的,今天小编就为大家分享一下Linux系统一些重要的学习方法及路线图详解;有需要的朋友一起去...
- Linux
Linux系统中的访问控制:hosts.deny & hosts.allow
背景介绍 hosts.deny和hosts.allow是Linux系统中用于访问控制的重要工具,起源于TCP Wrapper软件,旨在提供对网络服务的访问控制。这两个文件在系统安全性方面...
- Linux
深入解析Linux下的磁盘缓存机制与SSD的写入放大问题
这篇文章主要介绍了深入解析Linux下的磁盘缓存机制与SSD的写入放大问题,设计到Linux的内核及线程等部分深度的知识,需要的朋友可以参考下...
- Linux
linux命令大全之telnet命令详解(linux远程登录)
telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要...
- Linux
Linux折腾记(二十二):虚拟机体验之Xen篇——令人脑洞大开的
这篇文章主要介绍了Linux折腾记(二十二):虚拟机体验之Xen篇——令人脑洞大开的奇异架构,在虚拟机领域,Xen具有非常高的知名度,其名字经常在各类文章...