web-dev-qa-db-ja.com

SATAコントローラのPCIアドレスと接続されたディスクのSCSIアドレスを一致させます

Linux 2.6.39カーネルを搭載したマシンの(可変)数のディスクに接続されたPCI接続のSATAコントローラーがあります。コントローラのPCIアドレスを知って、ディスクの物理的な場所を見つけようとしています。

この場合、コントローラーはアドレス0000:01:00.0にあり、SCSIアドレス6:0.0.0.0および8:0.0.0の2つのディスクがあります(これらの最後の2つは必ずしも固定されているわけではありませんが、これは単に今です)。

lshw -c storageは、コントローラーとSCSIデバイスを示します(システムディスクとコントローラーはトリミングされています)。

*-storage               
   description: SATA controller
   product: Marvell Technology Group Ltd.
   vendor: Marvell Technology Group Ltd.
   physical id: 0
   bus info: pci@0000:01:00.0
   version: 10
   width: 32 bits
   clock: 33MHz
   capabilities: storage pm msi pciexpress ahci_1.0 bus_master cap_list rom
   configuration: driver=ahci latency=0
   resources: irq:51 ioport:e050(size=8) ioport:e040(size=4) ioport:e030(size=8) ioport:e020(size=4) ioport:e000(size=32) memory:f7b10000-f7b107ff memory:f7b00000-f7b0ffff
*-scsi:1
   physical id: 2
   logical name: scsi6
   capabilities: emulated
*-scsi:2
   physical id: 3
   logical name: scsi8
   capabilities: emulated

lshw -c diskはディスクを示します。

*-disk
   description: ATA Disk
   product: Toshiba THNSNF25
   vendor: Toshiba
   physical id: 0.0.0
   bus info: scsi@6:0.0.0
   logical name: /dev/sdb
   version: FSXA
   serial: 824S105DT15Y
   size: 238GiB (256GB)
   capabilities: gpt-1.00 partitioned partitioned:gpt
   configuration: ansiversion=5 guid=79a679b1-3c04-4306-a498-9a959e2df371 sectorsize=4096
*-disk
   description: ATA Disk
   product: Toshiba THNSNF25
   vendor: Toshiba
   physical id: 0.0.0
   bus info: scsi@8:0.0.0
   logical name: /dev/sdc
   version: FSXA
   serial: 824S1055T15Y
   size: 238GiB (256GB)
   capabilities: gpt-1.00 partitioned partitioned:gpt
   configuration: ansiversion=5 guid=79a679b1-3c04-4306-a498-9a959e2df371 sectorsize=4096

ただし、PCIアドレスからSCSIアドレスに移動する方法がないようです。 PCIおよびSCSIデバイスのsysfsエントリも調べましたが、接続を行うエントリを見つけることができませんでした。ディスクがコントローラーの異なる物理ポートに接続されている場合、SCSIアドレスは必ずしも変更されないため、これをオフセットと共に使用してディスクの場所を正しく特定することはできません。

IDによるディスクの一覧表示も機能しません-ls -lah /dev/disks/by-pathは、pci-0000:01:00.0-scsi-0:0:0:0のエントリが/dev/sdc(または通常、最後に接続されたディスク)を指していることを示し、他のパスはありませんそのドライブのパーティションへの単なるリンクではないpci-0000:01:00.0から始めます。

ディスクを見つけるために使用できるものにコントローラーアドレスをマップする他の方法はありますか?

6
Inductiveload

lshw -c diskとこのコマンドudevadm info -q all -n <device>の出力を相互参照することで、必要なものを取得できると思います。

例えば

私の/dev/sdaデバイスは、lshwに対して次の出力を表示します。

$ Sudo lshw -c disk
  *-disk                  
       description: ATA Disk
       product: ST9500420AS
       vendor: Seagate
       physical id: 0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda
       version: 0003
       serial: 5XA1A2CZ
       size: 465GiB (500GB)
       capabilities: partitioned partitioned:dos
       configuration: ansiversion=5 signature=ebc57757

devadmを使用して同じデバイスに問い合わせると、DEVPATHが何であるかがわかります。

$ Sudo udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/Host0/target0:0:0/0:0:0:0/block/sda

この文字列には、このデバイスに関して探しているすべての情報が含まれています。 PCIアドレス"0000:00:1f.2"、およびSCSIアドレス"0:0:0:0"。 SCSIアドレスは、スラッシュ( "/")でこのデータを分割した場合、6番目の位置にあるデータです。

6
slm