资讯动态

如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘

发布时间:2026/8/11 10:12:27 来源:尧图企业网站定制
当 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-id total 0 lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684b - ../../sdah lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684c - ../../sdw . . lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684d - ../../sdjk lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684e - ../../sdaa lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684f - ../../sdh另外如果你已经用multipath配置了它们那么可以用multipath命令找到。multipath 主要是配置到 Oracle 数据库服务器中以提高性能。# multipath -ll 60a98000486e542d4f5a2f47694d684b dm-37 NETAPP,LUN C-Mode size512G features3 queue_if_no_path pg_init_retries 50 hwhandler1 alua wprw |-- policyround-robin 0 prio50 statusactive | |- 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 -- policyround-robin 0 prio10 statusenabled |- 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.xRHEL - 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这里cHBA 上的通道tSCSI 目标 IDlLUN IDnHBA 编号运行下面的命令来查找系统中所有的主机总线编号# ls /sys/class/scsi_host host0 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; donefor host in /sys/class/scsi_host/*; do echo - - - | sudo tee $host/scan; ls /dev/sd* ; 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

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价