Você pode encontrar o dispositivo / dev / sdY correspondente, percorrendo a /sys
árvore:
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
Com uma /sys
travessia mais eficiente (cf. lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Exemplo de saída de um sistema com 2 discos:
ata1 => /dev/sda
ata2 => /dev/sdb
Em seguida, para identificar com segurança o hardware real, você precisa mapear / dev / sdY para o número de série, por exemplo:
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
O lssci
utilitário também pode ser usado para derivar o mapeamento:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Observe que a enumeração lsscsi relevante começa em 0 enquanto a enumeração ata começa em 0.
Syslog
Se nada mais funcionar, pode-se olhar o syslog / journal para derivar o mapeamento.
Os /dev/sdY
dispositivos são criados na mesma ordem em que os identificadores ataX são enumerados kern.log
enquanto ignoram dispositivos sem disco (ATAPI) e links não conectados.
Portanto, o seguinte comando exibe o mapeamento:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-' | \
sed 's/^.*\] ata//' | \
sort -n | sed 's/:.*//' | \
awk ' { a="ata" $1; printf("%10s is /dev/sd%c\n", a, 96+NR); }'
ata1.00 is /dev/sda
ata3.00 is /dev/sdb
ata5.00 is /dev/sdc
ata7.00 is /dev/sdd
ata8.00 is /dev/sde
ata10.00 is /dev/sdf
(Observe que o ata4 não é exibido porque as mensagens de log acima são de outro sistema.)
Estou usando /var/log/kern.log.0
e não /var/log/kern.log
porque as mensagens de inicialização já foram giradas. Eu espero May 28 2
porque esse foi o último horário de inicialização e quero ignorar as mensagens anteriores.
Para verificar o mapeamento, você pode fazer algumas verificações observando a saída de:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-'
May 28 20:43:26 hn kernel: [ 1.260488] ata1.00: ATA-7: SAMSUNG SV0802N, max UDMA/100
May 28 20:43:26 hn kernel: [ 1.676400] ata5.00: ATA-5: ST380021A, 3.19, max UDMA/10
[..]
E você pode comparar esta saída com a hdparm
saída, por exemplo:
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(usando o Kernel 2.6.32-31)
Aqui está minha versão, modificada de cima. Como não sei a data exata em que o sistema foi inicializado (para testar isso há 27 dias), e não sei qual kern.log contém os dados de que preciso (alguns podem estar
gzipped
no meu sistema), usouptime
edate
para calcular uma data aproximada de inicialização do sistema (para o dia, de qualquer maneira), usezgrep
para pesquisar todos os arquivos kern.log disponíveis.Também modifiquei levemente a segunda
grep
instrução, já que agora também mostrará uma unidade de CD / DVD ATAPI e unidades ATA- *.Ele ainda pode usar refinamento (ou seja, se o tempo de atividade do sistema for maior que um ano), mas deve funcionar bem por enquanto.
fonte
Só tive esse mesmo problema e encontrou uma outra solução que poderia ser útil.
A ferramenta lsscsi lista os dispositivos SCSI (ou hosts) e seus atributos.
Com o lsscsi, obtém-se o nome do ata e o nome do dispositivo.
Se parece com isso:
No Ubuntu pode-se instalar o lsscsi simplesmente com
fonte
ataX
mapa para que parte dalsscsi
saída?lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
/sys/devices
semlsscsi
.Nenhuma das respostas acima funcionou para mim, e a abordagem lsscsi realmente produziu a resposta errada, devido a discrepâncias entre os números de barramento SCSI e ATA. Em um sistema de 21 discos, eu tinha muitos relatórios de syslog sobre problemas com o ATA18 (violações do HSM). Qual disco estava causando esses erros? Alguns eram drives USB, o que tornava as coisas consideravelmente mais confusas. Eu precisava de uma contabilidade de como todas as unidades SCSI estão conectadas ao sistema e escrevi o script abaixo que produz listagens tabulares para todos os discos SCSI (/ dev / s [dr]?), Independentemente de ATA ou USB.
Então, com todas as unidades de disco totalmente contabilizadas, fiquei surpreso ao ver que meus erros ATA não tinham nada a ver com nenhuma das minhas unidades de disco. Eu estava fazendo a pergunta errada, e acho que outras pessoas podem facilmente cair na mesma armadilha, e é por isso que menciono aqui. Em seguida, usei uma segunda abordagem que identificou o hardware que estava gerando as mensagens de violação do HSM, também detalhadas na documentação que aparece no script abaixo.
fonte