Mapeando o número do dispositivo ata para o nome do dispositivo lógico

7

Estou recebendo mensagens do kernel sobre 'ata3'. Como faço para descobrir qual dispositivo (/ dev / sd_) que corresponde a?

    
por jsd 08.07.2013 / 23:36

5 respostas

5

De link :
O comando grep '[0-9]' /sys/class/scsi_host/host{0..9}/unique_id fornecerá saída como /sys/class/scsi_host/host0/unique_id:1
/sys/class/scsi_host/host1/unique_id:2
/sys/class/scsi_host/host2/unique_id:0
/sys/class/scsi_host/host3/unique_id:0
/sys/class/scsi_host/host4/unique_id:3
/sys/class/scsi_host/host5/unique_id:4
/sys/class/scsi_host/host6/unique_id:5
/sys/class/scsi_host/host7/unique_id:6

Assim, podemos combinar o ID exclusivo usado nas mensagens de erro do kernel para o número do host. Em seguida, o comando ls -l /sys/block/sd* nos mostrará qual nome de dispositivo pertence a qual número de host:
/sys/block/sda -> ../devices/pci0000:00/0000:00:13.2/usb1/1-6/1-6:1.0/host2/target2:0:0/2:0:0:0/block/sda
/sys/block/sdb -> ../devices/pci0000:00/0000:00:13.2/usb1/1-8/1-8:1.0/host3/target3:0:0/3:0:0:0/block/sdb
/sys/block/sdc -> ../devices/pci0000:00/0000:00:12.0/host6/target6:0:0/6:0:0:0/block/sdc /sys/block/sdd -> ../devices/pci0000:00/0000:00:13.2/usb1/1-8/1-8:1.0/host3/target3:0:0/3:0:0:1/block/sdd
/sys/block/sde -> ../devices/pci0000:00/0000:00:13.2/usb1/1-8/1-8:1.0/host3/target3:0:0/3:0:0:2/block/sde /sys/block/sdf -> ../devices/pci0000:00/0000:00:13.2/usb1/1-8/1-8:1.0/host3/target3:0:0/3:0:0:3/block/sdf
/sys/block/sdg -> ../devices/pci0000:00/0000:00:12.0/host7/target7:0:0/7:0:0:0/block/sdg

A partir dessas duas saídas, podemos ver que o id único 6 mapeia para o host7 e o host7 mapeia para o / dev / sdg. E finalmente, com o comando hdparm -i /dev/sdg :
/dev/sdg: Model=ST3500418AS, FwRev=CC34, SerialNo=6VM2KSFD
podemos encontrar o número de série da unidade.

    
por 08.07.2013 / 23:43
1

Não é possível comentar sobre a resposta anterior, mas para essa linha, você quer mudar o grep para ser um pouco mais restritivo, já que 1 e 10 são válidos: #

$ grep 1 /sys/class/scsi_host/host*/unique_id
/sys/class/scsi_host/host0/unique_id:1
/sys/class/scsi_host/host9/unique_id:10
$ grep ^1$ /sys/class/scsi_host/host*/unique_id
/sys/class/scsi_host/host0/unique_id:1

Então ...

ata=3; ls -l /sys/block/sd* | grep $(grep ^$ata$ /sys/class/scsi_host/host*/unique_id | awk -F'/' '{print $5}')

Para minhas necessidades, eu queria mapear uma letra de unidade para um ata, então escrevi isso, e no meu sistema a string ata nem sempre foi o quinto componente do caminho:

#!/bin/sh                                                                       
dev=$1                                                                         
name='basename $dev'                                                            
readlink /sys/block/$name | perl -ne'm{/(ata\d+)/} && print "$1\n"'             

Use assim:

$ ./map2ata /dev/sda
ata2
    
por 11.09.2014 / 18:50
1

Só assim estamos claros o número ATA mapeia para o UNIQUE_ID, diretamente (eles são o mesmo número). Então, o ATA # 3 é UNIQUE_ID # 3. Então você procura o que o HOST # está associado ao UNIQUE_ID

/ sys / class / scsi_host / host4 / unique_id: 3

Então aqui ATA # 3 é UNIQUE_ID # 3 é HOST # 4

Em seguida, para obter a letra da unidade, basta executar "ls -lisah / sys / block" e encontrar o HOST # 4.

Aqui está um bom supercomputador / stackex falando sobre isso: Mapping ata número do dispositivo para o nome do dispositivo lógico

    
por 10.07.2015 / 00:23
0

Eu prefiro assim:

sg_inq /dev/sdq --verbose --id

VPD INQUIRY: Device Identification page
    inquiry cdb: 12 01 83 00 fc 00
    inquiry: requested 252 bytes but got 54 bytes
  Designation descriptor number 1, descriptor length: 24
    id_type: T10 vendor identification,  code_set: ASCII
    associated with the addressed logical unit
      vendor id: HITACHI
      vendor specific: R500D1075BCC
  Designation descriptor number 2, descriptor length: 6
    id_type: vendor specific [0x0],  code_set: Binary
    associated with the target port
 00     00 00                                               ..
  Designation descriptor number 3, descriptor length: 20
    id_type: NAA,  code_set: Binary
    associated with the addressed logical unit
      NAA 6, IEEE Company_id: 0x60e8
      Vendor Specific Identifier: 0x6d10700
      Vendor Specific Identifier Extension: 0xd10700005bcc
      [0x60060e8006d107000000d10700005bcc]


Logical device number in HEX:
vendor specific: R500D107**5BCC**
Array Serial in HEX:
vendor specific: R500**D107**5BCC

Não tenho certeza se isso é bom para outros fabricantes de storage array, mas funciona para a Hitachi,

    
por 09.11.2016 / 11:57
0

Um método talvez mais fácil, mas não infalível: inspecione a saída de / bin / dmesg. Os dispositivos estão listados lá.

ata1: SATA max UDMA/133 abar m2048@0xf0616000 port 0xf0616100 irq 29
[ ... ]
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ATA-8: Hitachi HDT721010SLA360, ST6OA31B, max UDMA/133
ata1.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
ata1.00: configured for UDMA/133
scsi 0:0:0:0: Direct-Access     ATA      Hitachi HDT72101 A31B PQ: 0 ANSI: 5
[ ... ] 
sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda:

Não é infalível por alguns motivos. / bin / dmesg lista o conteúdo do "buffer de anel" do kernel; as mensagens de inicialização podem ser sobrescritas por mensagens posteriores do kernel.

Requer que você acompanhe e converta de ata1.00 para (aqui) Hitachi HDT72101 e, em seguida, veja imediatamente que scsi 0: 0: 0: 0: é o mesmo disco. Então sd 0: 0: 0: 0: é mostrado para ser sda.

Se você tiver várias unidades com números de modelo e firmware idênticos, não será possível saber com certeza qual é qual deles usa esse método. Você pode inferir isso da ordem dos probes na saída do dmesg.

No meu sistema centos6, o / var / log / dmesg contém o dmesg da última inicialização.

    
por 15.12.2016 / 06:10