如何在 Linux 上掃描/檢測新的 LUN 和 SCSI 磁盤

當 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
size=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

這裏:

  • c:HBA 上的通道
  • t:SCSI 目標 ID
  • l:LUN ID
  • n:HBA 編號

運行下面的命令來查找系統中所有的主機總線編號:

# 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; 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: https://www.2daygeek.com/scan-detect-luns-scsi-disks-on-redhat-centos-oracle-linux/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章