linux系统下扫描新增磁盘命令是什么呢?下面是具体介绍:
linux系统下扫描新增磁盘命令是:SCSI。
Linux系统提供多重机制以重新扫描SCSI总线并重认系统中加入的SCSI设备。在2.4内核方案里,因为动态LUN扫描机制不具备一致性,所以需要中断I/O。2.6内核里,LUN扫描有了显著改进并添加了动态LUN扫描机制。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 上扫描/检测新的LUN和SCSI磁盘
当 Linux 系统连接到 SAN(存储区域网络)后,你需要重新扫描 iSCSI 服务以发现新的 LUN。
• 来源:linux.cn • 作者:Magesh Maruthamuthu • 译者:geekpi •
(本文字数:3394,阅读时长大约:4 分钟)
当 Linux 系统连接到 SAN(存储区域网络)后,你需要重新扫描 iSCSI 服务以发现新的 LUN。
要做到这一点,你必须向存储团队提供 Linux 主机的 WWN 号和所需的 LUN 大小。
这篇文章将帮助你 查找 Linux 主机的 WWN 号 。
当存储团队将 LUN 与给定的 Linux 主机进行了映射,他们将为你提供新的 LUN 详细信息。
LUN 在存储术语中被称为 LUN 的串行十六进制。
你需要扫描 SCSI 主机来寻找存储团队分配的新 LUN。
这可以通过两种方式进行,扫描每个 scsi 主机设备或运行 rescan-scsi-bus.sh 脚本来检测新磁盘。
扫描后可以在 /dev/disk/by-id 目录下找到它们。
# ll /dev/disk/by-idtotal 0lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684b -> ../../sdahlrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684c -> ../../sdw..lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684d -> ../../sdjklrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684e -> ../../sdaalrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684f -> ../../sdh
另外,如果你已经用 multipath 配置了它们,那么可以用 multipath 命令找到。
`multipath 主要是配置到 Oracle 数据库服务器中,以提高性能。
# multipath -ll60a98000486e542d4f5a2f47694d684b dm-37 NETAPP,LUN C-Modesize=512G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw|- - policy='round-robin 0' prio=50 status=active| |- 1:0:4:18 sdoe 128:416 active ready running| |- 0:0:4:18 sdpq 131:256 active ready running| |- 0:0:5:18 sdsr 135:496 active ready running| `- 1:0:5:18 sdsq 135:480 active ready running`- - policy='round-robin 0' prio=10 status=enabled|- 1:0:1:18 sdfw 131:32 active ready running|- 1:0:0:18 sdci 69:96 active ready running|- 0:0:1:18 sdbz 68:208 active ready running|- 0:0:0:18 sds 65:32 active ready running|- 1:0:3:18 sdmd 69:336 active ready running|- 1:0:2:18 sdjj 8:464 active ready running|- 0:0:3:34 sdjt 65:368 active ready running`- 0:0:2:34 sdgi 131:224 active ready running
这个过程适用于基于 Red Hat 6.x、7.x 和 8.x(RHEL - Red Hat Enterprise Linux)的系统,如 CentOS 和 Oracle Linux。
方法 1:如何使用 /sys 类文件在 Linux 上扫描新的 LUN 和 SCSI 磁盘sysfs 文件系统是一个伪文件系统,它为内核数据结构提供了一个接口。
sysfs 下的文件提供了关于设备、内核模块、文件系统和其他内核组件的信息。
sysfs 文件系统通常被挂载在 /sys。通常,它是由系统自动挂载的。
你可以使用 echo 命令来扫描每个 SCSI 主机设备,如下所示:
# echo "- - -" > /sys/class/scsi_host/host[n]/scan
当你运行上面的重新扫描所有的命令时,三个破折号(- – -)指的是通配符选项。这些值如下:
# echo "c t l" > /sys/class/scsi_host/host[n]/scan
这里:
运行下面的命令来查找系统中所有的主机总线编号:
# ls /sys/class/scsi_hosthost0 host1 host2
得到主机总线编号后,运行以下命令来发现新的磁盘:
# echo "- - -" > /sys/class/scsi_host/host0/scan# echo "- - -" > /sys/class/scsi_host/host1/scan# echo "- - -" > /sys/class/scsi_host/host2/scan
另外,还可以用 for 循环用一条命令进行扫描。
# for host in ls /sys/class/scsi_host/;do echo "- - -" >/sys/class/scsi_host/${host}/scan; done
你可以使用文章开头提到的 ls 命令 来检查它们。
# ls /dev/disk/by-id | grep -i "serial-hex of LUN"方法 2:如何使用 rescan-scsi-bus.sh 脚本在 Linux 上扫描新的 LUN 和 SCSI 磁盘
确保你已经安装了 sg3_utils 包来使用这个脚本。否则,运行以下命令来安装它。
对于 RHEL/CentOS 6/7 系统,使用 yum 命令 安装 sg3_utils。
# yum install -y sg3_utils
对于 RHEL/CentOS 8 和 Fedora 系统,使用 dnf 命令 安装 sg3_utils。
# dnf install -y sg3_utils
现在你可以使用 rescan-scsi-bus.sh 脚本重新扫描 LUN。
# ./rescan-scsi-bus.sh
via: www.2daygeek.com
作者: Magesh Maruthamuthu 选题: lujun9972 译者: geekpi 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
点击“了解更多”可访问文内链接