如何在 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 目標 IDl
:LUN IDn
: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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive