恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
首页
资讯中心
/
Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
发布时间:2026/8/24 15:22:50
背景#Linux 服务器中的磁盘可以分为本地磁盘和LUNlogical unit number本地磁盘即为物理服务器的本地磁盘或虚拟机的本地虚拟磁盘而LUN是逻辑单元号这是一个逻辑对象所以很多时候被称为Logical Device。在FC SAN中还有IP SAN它是远端集中式存储通过光交、光纤和主机端的HBA卡共享给服务器的逻辑磁盘但看起来和本地磁盘没有什么区别访问速度不输本地磁盘。在以前解决了很多主机本地磁盘空间不足和需要共享磁盘的问题如ORACLE RAC集群。存在这样的场景就是存储侧划了新的LUN或扩容了虚拟磁盘如何在 Linux 上扫描/检测新的LUN和SCSI磁盘呢如果是新主机还没有业务那大可重启系统识别新添加的设备但大多数情况下主机上运行这业务我们更希望在线操作来保持业务的连续性。这可以通过三种方式进行扫描每个scsi主机设备或运行rescan-scsi-bus.sh脚本来检测新磁盘。扫描后可以在 /dev/disk/目录下已不同的标识找到它们。[rootirora01 ~]# ll /dev/disk/ total 0 drwxr-xr-x 2 root root 2480 Sep 2 03:00 by-id drwxr-xr-x 2 root root 1980 Sep 2 03:00 by-path drwxr-xr-x 2 root root 260 Sep 2 03:00 by-uuid你还可以通过如下的命令发现新增的磁盘fdisk -llsscsilsblk对于LUN通常是有链路冗余的所以同一磁盘scsci_id相同在主机上能看到4个或8个一般需要使用多路径软件聚合后使用多路径软件配合存储可实现主备或负载形式提供存储访问。多路径软件有很多不通厂商有各自的多路径软件通用的为multipath。对于multipath我们通常需要自定义聚合后的磁盘别名。使用multipath -ll命令可以查看多路径。[rootorarac01 ~]# multipath -ll mpath06 (363c9d56100e06a30f694115300000092) dm-10 HUAWEI,XSG1 size100G features0 hwhandler0 wprw |-- policyround-robin 0 prio1 statusactive | - 7:0:0:6 sdh 8:112 active ready running |-- policyround-robin 0 prio1 statusenabled | - 7:0:1:6 sdae 65:224 active ready running |-- policyround-robin 0 prio1 statusenabled | - 8:0:0:6 sdbb 67:80 active ready running -- policyround-robin 0 prio1 statusenabled - 8:0:1:6 sdby 68:192 active ready running mpath23 (363c9d56100e06a30f69487c7000000a3) dm-22 HUAWEI,XSG1 size400G features0 hwhandler0 wprw |-- policyround-robin 0 prio1 statusactive | - 7:0:0:23 sdy 65:128 active ready running |-- policyround-robin 0 prio1 statusenabled | - 7:0:1:23 sdav 66:240 active ready running |-- policyround-robin 0 prio1 statusenabled | - 8:0:0:23 sdbs 68:96 active ready running -- policyround-robin 0 prio1 statusenabled - 8:0:1:23 sdcp 69:208 active ready running扫盘#方法 1#方法 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 -l /sys/class/scsi_host来查找系统中所有的主机总线编号[rootorarac01 ~]# ls -l /sys/class/scsi_host total 0 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host0 - ../../devices/pci0000:00/0000:00:03.2/0000:03:00.0/host0/scsi_host/host0 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host1 - ../../devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host2 - ../../devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host3 - ../../devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host4 - ../../devices/pci0000:00/0000:00:1f.2/host4/scsi_host/host4 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host5 - ../../devices/pci0000:00/0000:00:1f.2/host5/scsi_host/host5 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host6 - ../../devices/pci0000:00/0000:00:1f.2/host6/scsi_host/host6 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host7 - ../../devices/pci0000:40/0000:40:03.2/0000:45:00.0/host7/scsi_host/host7 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host8 - ../../devices/pci0000:40/0000:40:03.2/0000:45:00.1/host8/scsi_host/host8查看FC通道[rootorarac01 ~]# ls -l /sys/class/fc_host/ total 0 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host7 - ../../devices/pci0000:40/0000:40:03.2/0000:45:00.0/host7/fc_host/host7 lrwxrwxrwx 1 root root 0 Sep 2 03:00 host8 - ../../devices/pci0000:40/0000:40:03.2/0000:45:00.1/host8/fc_host/host8得到主机总线编号后运行以下命令来发现新的磁盘# echo - - - /sys/class/scsi_host/host0/scan # echo - - - /sys/class/scsi_host/host1/scan # echo - - - /sys/class/scsi_host/host2/scan如果只是扫描LUN从上面可以看出只需扫描host7、host8即可当然不同主机上可能不一样要根据实际情况操作。另外还可以用 for 循环用一条命令全部进行扫描不会有太大的问题。# for host in ls /sys/class/scsi_host/;do echo - - - /sys/class/scsi_host/${host}/scan; done方法 2#方法 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方法 3#此操作执行循环初始化协议(LIP)然后扫描互连并使SCSI层更新以反映当前总线上的设备。LIP本质上是总线复位会导致设备添加和移除。要在光纤通道互连上配置新的SCSI目标必须执行此过程。请记住这issue_lip是一个异步操作。该命令可能会在整个扫描完成之前完成。您必须监视/var/log/messages以确定何时完成。lpfc和qla2xxx驱动程序支持issue_lip。有关 Red Hat Enterprise Linux 中每个驱动程序支持的 API 功能的更多信息请参阅表 1.1“光纤通道 API 功能”。echo 1 /sys/class/fc_host/host[n]/issue_lip以上命令本质上是初始化了HAB卡端口必要时使用此类扫描这种类型的扫描可能具有破坏性。本人就曾遇到过使用这种方式扫盘导致链路Down引发主机重启的情况。操作时可在messages中看到 FC Link Down/Up 相关信息。Dec 28 00:13:15 orarac01 kernel: lpfc 0000:45:00.0: 0:1305 Link Down Event x4 received Data: x4 x20 x110 x0 x0 Dec 28 00:13:15 orarac01 kernel: lpfc 0000:45:00.0: 0:1303 Link Up Event x5 received Data: x5 x0 x20 x0 x0 x0 0 Dec 28 00:13:46 orarac01 kernel: rport-7:0-13: blocked FC remote port time out: removing rport Dec 28 00:15:14 orarac01 kernel: lpfc 0000:45:00.1: 1:1305 Link Down Event x4 received Data: x4 x20 x110 x0 x0 Dec 28 00:15:14 orarac01 kernel: lpfc 0000:45:00.1: 1:1303 Link Up Event x5 received Data: x5 x0 x20 x0 x0 x0 0 Dec 28 00:15:46 orarac01 kernel: rport-8:0-13: blocked FC remote port time out: removing rport有关技术预览的更多信息请参阅 Technology Preview Features - Scope of Support | Red Hat Customer Portal 。