以下を使用して、すべてのメガRAIDアダプター上の物理ドライブをリストできます。
megacli -PDList -aALL
これにより、各アダプターのアダプター番号が表示され、それらに接続されている物理ドライブがリストされます。
PDList出力の個々のデバイスには、smartctlコマンドに使用されるデバイスIDもあります。デバイスID 3の場合:
smartctl -a -d sat+megaraid,3 /dev/sda
どちらのコマンドも同じデバイスIDを使用するため、問題はありません。しかし、アダプターをデバイスノードに適切にマッピングするにはどうすればよいですか?
CentOS 6でsmartmontools-5.43-1.el6を実行しています。ソースコードを見ると、ioctlから取得したバス番号/ Host_noが必要なようですSG_GET_SCSI_ID
またはSCSI_IOCTL_GET_BUS_NUMBER
指定されたデバイスノード。これは、MegaCLIの出力で「アダプター#」として使用されている番号と同じですか?
実際には私の場合、おそらく/ dev/sdaへのハードコーディングを回避できますが、もっと良い方法があるかどうか知りたいのですが。
これは私が以前にやった方法です。もっと良い方法があるかもしれません。
MegaCLIからアダプターのPCIバスIDを取得します。
/opt/MegaRAID/MegaCli/MegaCli64 -adpgetpciinfo -a0 | grep Bus
Bus Number : 2
この場合、BUS = 2です。次に、そのBUS上のデバイスのPCIテーブルを調べ、「hostX」エントリを探します。
ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/ | grep Host
host0
したがって、Host = host0です。
今、そのホストディレクトリでターゲットを探します
ls /sys/bus/pci/devices/0000\:0${BUS}\:00.0/${Host}/ | grep target
target0:2:0
SCSIターゲットIDは0:2:0(ホスト0:チャネル2:ターゲット0)です。
SCSIターゲットをlsscsiの出力と一致させます
# lsscsi
[0:2:0:0] disk LSI MR9271-8i 3.24 /dev/sda
[1:2:0:0] disk LSI MR9271-8i 3.24 /dev/sdb
[2:0:0:0] disk ATA INTEL SSDSC2BA80 5DV1 /dev/sdc
MegaCLIアダプターa0は/ dev/sdaに対応します(この場合、0:2:0は〜= 0:2:0:0です。最後の0はLUN IDです)
アダプターa1に同じ方法を使用すると、バス番号3、Host1、およびターゲット値1:2:0が取得されます。これは/ dev/sdbにマップされます。
smartctl --scan
を実行して、デバイスIDとRAIDタイプを含む、接続されているすべてのデバイスを印刷します。
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/bus/0 -d megaraid,0 # /dev/bus/0 [megaraid_disk_00], SCSI device
/dev/bus/0 -d megaraid,1 # /dev/bus/0 [megaraid_disk_01], SCSI device
/dev/bus/0 -d megaraid,2 # /dev/bus/0 [megaraid_disk_02], SCSI device
別の出力:
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/bus/0 -d megaraid,5 # /dev/bus/0 [megaraid_disk_05], SCSI device
/dev/bus/0 -d megaraid,7 # /dev/bus/0 [megaraid_disk_07], SCSI device
ここで、megaraid
はRAIDタイプであり、5,7
はデバイスIDです