如何在 Linux 上掃描/檢測新的 LUN 和 SCSI 磁盤
當(dāng) Linux 系統(tǒng)連接到 SAN(存儲區(qū)域網(wǎng)絡(luò))后,你需要重新掃描 iSCSI 服務(wù)以發(fā)現(xiàn)新的 LUN。
要做到這一點,你必須向存儲團(tuán)隊提供 Linux 主機(jī)的 WWN 號和所需的 LUN 大小。
這篇文章將幫助你查找 Linux 主機(jī)的 WWN 號。
當(dāng)存儲團(tuán)隊將 LUN 與給定的 Linux 主機(jī)進(jìn)行了映射,他們將為你提供新的 LUN 詳細(xì)信息。
LUN 在存儲術(shù)語中被稱為 LUN 的串行十六進(jìn)制。
你需要掃描 SCSI 主機(jī)來尋找存儲團(tuán)隊分配的新 LUN。
這可以通過兩種方式進(jìn)行,掃描每個 scsi 主機(jī)設(shè)備或運(yùn)行 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
另外,如果你已經(jīng)用 multipath 配置了它們,那么可以用 multipath 命令找到。
`multipath 主要是配置到 Oracle 數(shù)據(jù)庫服務(wù)器中,以提高性能。
- # 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)的系統(tǒng),如 CentOS 和 Oracle Linux。
方法 1:如何使用 /sys 類文件在 Linux 上掃描新的 LUN 和 SCSI 磁盤
sysfs 文件系統(tǒng)是一個偽文件系統(tǒng),它為內(nèi)核數(shù)據(jù)結(jié)構(gòu)提供了一個接口。
sysfs 下的文件提供了關(guān)于設(shè)備、內(nèi)核模塊、文件系統(tǒng)和其他內(nèi)核組件的信息。
sysfs 文件系統(tǒng)通常被掛載在 /sys。通常,它是由系統(tǒng)自動掛載的。
你可以使用 echo 命令來掃描每個 SCSI 主機(jī)設(shè)備,如下所示:
- # echo "- - -" > /sys/class/scsi_host/host[n]/scan
當(dāng)你運(yùn)行上面的重新掃描所有的命令時,三個破折號(- – -)指的是通配符選項。這些值如下:
- # echo "c t l" > /sys/class/scsi_host/host[n]/scan
這里:
- c:HBA 上的通道
- t:SCSI 目標(biāo) ID
- l:LUN ID
- n:HBA 編號
運(yùn)行下面的命令來查找系統(tǒng)中所有的主機(jī)總線編號:
- # ls /sys/class/scsi_host
- host0 host1 host2
得到主機(jī)總線編號后,運(yùn)行以下命令來發(fā)現(xiàn)新的磁盤:
- # echo "- - -" > /sys/class/scsi_host/host0/scan
- # echo "- - -" > /sys/class/scsi_host/host1/scan
- # echo "- - -" > /sys/class/scsi_host/host2/scan
另外,還可以用 for 循環(huán)用一條命令進(jìn)行掃描。
- # 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 磁盤
確保你已經(jīng)安裝了 sg3_utils 包來使用這個腳本。否則,運(yùn)行以下命令來安裝它。
對于 RHEL/CentOS 6/7 系統(tǒng),使用 yum 命令安裝 sg3_utils。
- # yum install -y sg3_utils
對于 RHEL/CentOS 8 和 Fedora 系統(tǒng),使用 dnf 命令安裝 sg3_utils。
- # dnf install -y sg3_utils
現(xiàn)在你可以使用 rescan-scsi-bus.sh 腳本重新掃描 LUN。
- # ./rescan-scsi-bus.sh