サーバーに多くのHDDやSSDを搭載している場合、RAIDカード経由であればスロット位置とデバイスの紐づけは"まだ"わかるのですが、RAIDカードを搭載していない場合、実際の搭載位置と/dev/sdxなどのIDが本当に若い番号順であっているのか不安。
さらにシリアルナンバーも抜いてみないと分からずディスク交換は心臓に悪いのです。
lsscsiではでわかるようでわからないので、sasutilsを使ったらスッキリした。
1,Githubからsasutilsを貰ってくる
2,環境を整理
3,デバイスのIDを確認
OS環境:CentOS 8
サーバー:Seagate製サーバー EXOS AP
1,Githubから貰ってくる
#yum install git
#git clone https://github.com/stanford-rc/sasutils.git
2,環境を整理
pythonが入ってなかったら入れる。
=>Defaultで入っていたPython3で動いた
pipが入ってなかったら入れる
=>Defaultで入っていたpip3で動いた
pipからもsasutilsのパッケージをインストール
$sudo pip3 install susutils
3,デバイスのIDを確認
まずは、lsscsiでデバイス名を確認してみる。
この一番左はSCSI IDなのでどれかを抜いて差すと別のIDとして再度認識されます。
これをアテにすると良くない方向に行きます。
[root@localhost cli]# lsscsi --generic
[0:0:0:0] enclosu SEAGATE SP-3224-AP-BV-1 52FF - /dev/sg0
[0:0:1:0] disk SEAGATE ST400FM0303 0007 /dev/sda /dev/sg1
[0:0:2:0] disk SEAGATE ST300MP0006 N003 /dev/sdb /dev/sg2
[0:0:3:0] disk SEAGATE ST300MP0006 N003 /dev/sdc /dev/sg3
[0:0:4:0] disk SEAGATE ST300MP0006 N003 /dev/sdd /dev/sg4
[0:0:5:0] disk SEAGATE ST300MP0006 N003 /dev/sde /dev/sg5
[0:0:6:0] disk SEAGATE ST300MP0006 N003 /dev/sdf /dev/sg6
[0:0:7:0] disk SEAGATE ST300MP0006 N003 /dev/sdg /dev/sg7
[0:0:8:0] disk SEAGATE ST300MP0006 N003 /dev/sdh /dev/sg8
[0:0:9:0] disk SEAGATE ST300MP0006 N003 /dev/sdi /dev/sg9
[0:0:10:0] disk SEAGATE ST300MP0006 N003 /dev/sdj /dev/sg10
[0:0:11:0] disk SEAGATE ST300MP0006 N003 /dev/sdk /dev/sg11
[0:0:12:0] disk SEAGATE ST300MP0006 N003 /dev/sdl /dev/sg12
なのでsasutilsを使います。
[root@localhost]# cd sasutils/sasutils/cli
[root@localhost cli]# ls
_init__.py sas_counters.py sas_devices.py sas_discover.py
sas_mpath_snic_alias.py sas_sd_snic_alias.py ses_report.py
いくつかのコマンドセットが用意してありますが、その中のsas_devices.pyを-vを付けて使用します。
[root@localhost cli]# python3 sas_devices.py -v
Found 1 SAS hosts: host0
SAS expander 0x50050cc1308038bf x2 (expander-0:0,expander-0:1)
Found 1 SAS expanders
Found 1 enclosure groups
Enclosure group: [sg13:SEAGATE SP-3224-AP-BV-1, addr: 0x50050cc1308038be]
BAY LOGICAL UNIT DEVICE MAPPER BLOCK_DEVS SG_DEVS PATHS VENDOR MODEL SERIAL_NUMBER REV SIZE
0 0x5000c50030225197 [Not mapped] sda sg1 1 SEAGATE ST400FM0303 ZB4151QY0000822150Z3 0007 400.1GB
1 0x5000c500a02d9ee3 [Not mapped] sdb sg2 1 SEAGATE ST300MP0006 WAE07V3X0000K804J79Q N003 300.0GB
2 0x5000c500a02d3a1f [Not mapped] sdc sg3 1 SEAGATE ST300MP0006 WAE065M30000K80571ZD N003 300.0GB
3 0x5000c500a02d5517 [Not mapped] sdd sg4 1 SEAGATE ST300MP0006 WAE07L2R0000K804JA5R N003 300.0GB
4 0x5000c500a02d948b [Not mapped] sde sg5 1 SEAGATE ST300MP0006 WAE07VC10000K8056ZVZ N003 300.0GB
5 0x5000c500a02dd117 [Not mapped] sdf sg6 1 SEAGATE ST300MP0006 WAE07T1N0000E805618D N003 300.0GB
6 0x5000c500a02d0a93 [Not mapped] sdg sg7 1 SEAGATE ST300MP0006 WAE07LTA0000K804HXX1 N003 300.0GB
7 0x5000c500a02dbf37 [Not mapped] sdh sg8 1 SEAGATE ST300MP0006 WAE07TJ50000K80578LA N003 300.0GB
8 0x5000c500a02c68cb [Not mapped] sdi sg9 1 SEAGATE ST300MP0006 WAE07Q370000E80478SM N003 300.0GB
9 0x5000c500a02dc7af [Not mapped] sdj sg10 1 SEAGATE ST300MP0006 WAE07TAL0000K8056ZXQ N003 300.0GB
10 0x5000c500a0132b87 [Not mapped] sdk sg11 1 SEAGATE ST300MP0006 WAE05MLK0000E8037DPC N003 300.0GB
11 0x5000c500a02d973f [Not mapped] sdl sg12 1 SEAGATE ST300MP0006 WAE07VCH0000K805779H N003 300.0GB
一番左が実際の搭載位置、BLOCK_DEVSがデバイスID、シリアルナンバーやファームウェアも確認可能です。
ちなみにマルチパスだとこのようにmpathと/dev/sdx, sgxとの確認も出来てスッキリ。
Enclosure group: [sg13:SEAGATE SP-3212A-E12EBD, addr: 0x500c0ff00afd6d3e]
BAY LOGICAL UNIT DEVICE MAPPER BLOCK_DEVS SG_DEVS PATHS VENDOR MODEL SERIAL_NUMBER REV SIZE
0 0x5000c500cb7a0fef mpatha sdy,sda sg27,sg1 2 SEAGATE ST16000NM002G ZL2DZ9TL0000C127F2Y2 E003 16.0TB
1 0x5000c500cb8535bf mpathb sdb,sdz sg2,sg28 2 SEAGATE ST16000NM002G ZL2DFDS30000C128M248 E003 16.0TB
2 0x5000c500cb7c6d8b mpathc sdc,sdaa sg3,sg29 2 SEAGATE ST16000NM002G ZL2DXKXN0000C12879Y8 E003 16.0TB
3 0x5000c500cb7ceceb mpathd sdd,sdab sg4,sg30 2 SEAGATE ST16000NM002G ZL2E04R50000C128ADSU E003 16.0TB
4 0x5000c500cb7cc95b mpathe sde,sdac sg5,sg31 2 SEAGATE ST16000NM002G ZL2E0T2H0000C128ADKQ E003 16.0TB
5 0x5000c500cb7bf643 mpathf sdad,sdf sg32,sg6 2 SEAGATE ST16000NM002G ZL2DXMNV0000C128ACCD E003 16.0TB
6 0x5000c500cb723613 mpathg sdg,sdae sg7,sg33 2 SEAGATE ST16000NM002G ZL2DRETA0000W126Y0A6 E003 16.0TB
7 0x5000c500cb6f1ddb mpathh sdaf,sdh sg34,sg8 2 SEAGATE ST16000NM002G ZL2DL3T00000C125ACAU E003 16.0TB
8 0x5000c500cb7cc14f mpathi sdi,sdag sg9,sg35 2 SEAGATE ST16000NM002G ZL2E098H0000C128AG0M E003 16.0TB
9 0x5000c500cb7d23db mpathj sdah,sdj sg36,sg10 2 SEAGATE ST16000NM002G ZL2E0YF30000C128AP99 E003 16.0TB
10 0x5000c500cb7cfe0f mpathk sdk,sdai sg11,sg37 2 SEAGATE ST16000NM002G ZL2E194T0000C128AEUF E003 16.0TB
11 0x5000c500cb7c6c13 mpathl sdaj,sdl sg38,sg12 2 SEAGATE ST16000NM002G ZL2DXKY20000C128780K E003 16.0TB
Total: 12 block devices in enclosure group
以上簡単ですが。
いつか誰かのお役に立てば。