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

时间:2021-05-02

当 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
  • total0
  • lrwxrwxrwx1rootroot10Jul917:52scsi-60a98000486e542d4f5a2f47694d684b->../../sdah
  • lrwxrwxrwx1rootroot9Jul917:52scsi-60a98000486e542d4f5a2f47694d684c->../../sdw
  • .
  • .
  • lrwxrwxrwx1rootroot10Jul917:52scsi-60a98000486e542d4f5a2f47694d684d->../../sdjk
  • lrwxrwxrwx1rootroot10Jul917:52scsi-60a98000486e542d4f5a2f47694d684e->../../sdaa
  • lrwxrwxrwx1rootroot9Jul917:52scsi-60a98000486e542d4f5a2f47694d684f->../../sdh
  • 另外,如果你已经用 multipath 配置了它们,那么可以用 multipath 命令找到。

    `multipath 主要是配置到 Oracle 数据库服务器中,以提高性能。

  • #multipath-ll
  • 60a98000486e542d4f5a2f47694d684bdm-37NETAPP,LUNC-Mode
  • size=512Gfeatures='3queue_if_no_pathpg_init_retries50'hwhandler='1alua'wp=rw
  • |-+-policy='round-robin0'prio=50status=active
  • ||-1:0:4:18sdoe128:416activereadyrunning
  • ||-0:0:4:18sdpq131:256activereadyrunning
  • ||-0:0:5:18sdsr135:496activereadyrunning
  • |`-1:0:5:18sdsq135:480activereadyrunning
  • `-+-policy='round-robin0'prio=10status=enabled
  • |-1:0:1:18sdfw131:32activereadyrunning
  • |-1:0:0:18sdci69:96activereadyrunning
  • |-0:0:1:18sdbz68:208activereadyrunning
  • |-0:0:0:18sds65:32activereadyrunning
  • |-1:0:3:18sdmd69:336activereadyrunning
  • |-1:0:2:18sdjj8:464activereadyrunning
  • |-0:0:3:34sdjt65:368activereadyrunning
  • `-0:0:2:34sdgi131:224activereadyrunning
  • 这个过程适用于基于 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"ctl">/sys/class/scsi_host/host[n]/scan
  • 这里:

    • c:HBA 上的通道
    • t:SCSI 目标 ID
    • l:LUN ID
    • n:HBA 编号

    运行下面的命令来查找系统中所有的主机总线编号:

  • #ls/sys/class/scsi_host
  • host0host1host2
  • 得到主机总线编号后,运行以下命令来发现新的磁盘:

  • #echo"---">/sys/class/scsi_host/host0/scan
  • #echo"---">/sys/class/scsi_host/host1/scan
  • #echo"---">/sys/class/scsi_host/host2/scan
  • 另外,还可以用 for 循环用一条命令进行扫描。

  • #forhostinls/sys/class/scsi_host/;doecho"---">/sys/class/scsi_host/${host}/scan;done
  • 你可以使用文章开头提到的 ls 命令来检查它们。

  • #ls/dev/disk/by-id|grep-i"serial-hexofLUN"
  • 方法 2:如何使用 rescan-scsi-bus.sh 脚本在 Linux 上扫描新的 LUN 和 SCSI 磁盘

    确保你已经安装了 sg3_utils 包来使用这个脚本。否则,运行以下命令来安装它。

    对于 RHEL/CentOS 6/7 系统,使用 yum 命令安装 sg3_utils。

  • #yuminstall-ysg3_utils
  • 对于 RHEL/CentOS 8 和 Fedora 系统,使用 dnf 命令安装 sg3_utils。

  • #dnfinstall-ysg3_utils
  • 现在你可以使用 rescan-scsi-bus.sh 脚本重新扫描 LUN。

  • #./rescan-scsi-bus.sh
  • 声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章