Aqui está um onliner para descobrir todos os sd*
devices:
LC_ALL=C ls -l /sys/block/sd* | perl -npe 's#^.*?block/(sd[^/ ]+).*?/pci0000:00/0000:([^/]+/(?:ata[0-9]+|usb[0-9]+/[^/]+/[^/]+|[0-9:.]+/[^/]+/[^/]+)).*#$1 = $2#'
Para mim, a saída parece
sda = 00:01.0/0000:01:00.0/host0/port-0:0
sdb = 00:01.0/0000:01:00.0/host0/port-0:1
sdc = 00:01.0/0000:01:00.0/host0/port-0:2
sdd = 00:01.0/0000:01:00.0/host0/port-0:3
sde = 00:1d.0/usb2/2-1/2-1.5
sdf = 00:1f.2/ata3
sdg = 00:1f.2/ata4
sdh = 00:1f.2/ata6
A saída deve ser bastante legível e os dispositivos PCI Express e os dispositivos USB também obtêm algo sensato. Você pode então usar o início do dispositivo para descobrir a conexão real do hardware. Por exemplo, no exemplo acima, 01:00.0
é a placa Intel SSD 910 PCI Express com quatro sub-dispositivos SSD de 200GB. A saída lspci -nn | grep -F 01:00.0
para o mesmo hardware é
01:00.0 Serial Attached SCSI controller [0107]: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] [1000:0072] (rev 03)
Portanto, o kernel acha que sda
... sdd
está conectado ao controlador LSI Logic PCI-Express SAS-2. Infelizmente, parece não haver nenhuma maneira fácil de "saber" que esse dispositivo é realmente a placa Intel SSD 910 PCI Express.