ドライブの物理スロットとデバイスIDをsasutilsを使って把握する。

サーバーに多くの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
```
#
以上簡単ですが。
いつか誰かのお役に立てば。