Как мне установить соответствие между названием "ata10" и диском (например, /dev/sdb)?

Господа, в сервере (Ubuntu 18.04 LTS) я время от времени получаю в /var/log/syslog ошибку такого вида:

    Sep 17 00:49:31 tower kernel: [132513.210773] ata10.00: exception Emask 0x10 SAct 0x7c000 SErr 0x1910000 action 0xe frozen
    Sep 17 00:49:31 tower kernel: [132513.211326] ata10.00: irq_stat 0x08400000, interface fatal error, PHY RDY changed
    Sep 17 00:49:31 tower kernel: [132513.211831] ata10: SError: { PHYRdyChg Dispar LinkSeq TrStaTrns }
    Sep 17 00:49:31 tower kernel: [132513.212332] ata10.00: failed command: READ FPDMA QUEUED
    Sep 17 00:49:31 tower kernel: [132513.212838] ata10.00: cmd 60/00:70:00:96:78/02:00:2b:00:00/40 tag 14 ncq dma 262144 in
    Sep 17 00:49:31 tower kernel: [132513.212838]          res 40/00:8c:a0:bb:f0/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:31 tower kernel: [132513.214145] ata10.00: status: { DRDY }
    Sep 17 00:49:31 tower kernel: [132513.214893] ata10.00: failed command: READ FPDMA QUEUED
    Sep 17 00:49:31 tower kernel: [132513.215544] ata10.00: cmd 60/00:78:40:a7:78/01:00:2b:00:00/40 tag 15 ncq dma 131072 in
    Sep 17 00:49:31 tower kernel: [132513.215544]          res 40/00:8c:a0:bb:f0/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:31 tower kernel: [132513.216977] ata10.00: status: { DRDY }
    Sep 17 00:49:31 tower kernel: [132513.217700] ata10.00: failed command: READ FPDMA QUEUED
    Sep 17 00:49:31 tower kernel: [132513.218421] ata10.00: cmd 60/00:80:40:a8:78/01:00:2b:00:00/40 tag 16 ncq dma 131072 in
    Sep 17 00:49:31 tower kernel: [132513.218421]          res 40/00:8c:a0:bb:f0/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:31 tower kernel: [132513.219896] ata10.00: status: { DRDY }
    Sep 17 00:49:31 tower kernel: [132513.220593] ata10.00: failed command: READ FPDMA QUEUED
    Sep 17 00:49:31 tower kernel: [132513.221325] ata10.00: cmd 60/80:88:a0:bb:f0/00:00:00:00:00/40 tag 17 ncq dma 65536 in
    Sep 17 00:49:31 tower kernel: [132513.221325]          res 40/00:8c:a0:bb:f0/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:31 tower kernel: [132513.222817] ata10.00: status: { DRDY }
    Sep 17 00:49:31 tower kernel: [132513.223536] ata10.00: failed command: READ FPDMA QUEUED
    Sep 17 00:49:31 tower kernel: [132513.224268] ata10.00: cmd 60/00:90:20:2f:79/01:00:2b:00:00/40 tag 18 ncq dma 131072 in
    Sep 17 00:49:31 tower kernel: [132513.224268]          res 40/00:8c:a0:bb:f0/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:31 tower kernel: [132513.225745] ata10.00: status: { DRDY }
    Sep 17 00:49:31 tower kernel: [132513.226485] ata10: hard resetting link
    Sep 17 00:49:37 tower kernel: [132519.310441] ata10: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
    Sep 17 00:49:37 tower kernel: [132519.323440] ata10.00: configured for UDMA/133
    Sep 17 00:49:37 tower kernel: [132519.323468] ata10: EH complete
    Sep 17 00:49:45 tower kernel: [132527.637984] ata10.00: exception Emask 0x10 SAct 0x1000000 SErr 0x1990000 action 0xe frozen
    Sep 17 00:49:45 tower kernel: [132527.638565] ata10.00: irq_stat 0x08400000, interface fatal error, PHY RDY changed
    Sep 17 00:49:45 tower kernel: [132527.639124] ata10: SError: { PHYRdyChg 10B8B Dispar LinkSeq TrStaTrns }
    Sep 17 00:49:45 tower kernel: [132527.639664] ata10.00: failed command: WRITE FPDMA QUEUED
    Sep 17 00:49:45 tower kernel: [132527.640221] ata10.00: cmd 61/40:c0:48:76:fc/05:00:14:00:00/40 tag 24 ncq dma 688128 out
    Sep 17 00:49:45 tower kernel: [132527.640221]          res 40/00:c4:48:76:fc/00:00:14:00:00/40 Emask 0x10 (ATA bus error)
    Sep 17 00:49:45 tower kernel: [132527.641761] ata10.00: status: { DRDY }
    Sep 17 00:49:45 tower kernel: [132527.642570] ata10: hard resetting link
    Sep 17 00:49:51 tower kernel: [132533.717674] ata10: link is slow to respond, please be patient (ready=0)

В сервере несколько дисков. Не могу понять, какой из них глючит. Как мне установить соответствие между названием "ata10" и диском (например, /dev/sdb)?

Я попробовал команду ls -l /dev/disk/by-path/, но в этом списке что либо, похожее на ata10 - отсутствует.

Спасибо за советы!


Ответы (1 шт):

Автор решения: S.H.

Кажется, я нашел приблизительный ответ.

Если просмотреть лог dmesg, то оказывается, в самом начале загрузки выводится полное название диска. То есть, команда

    dmesg | grep ata10

выведет длинный список, в начале которого будет что то вроде

    [    4.031155] ata10.00: ATA-8: WDC WD5000AAJS-55YFA0, 12.01C02, max UDMA/133

отсюда уже можно понять, о каком диске идет речь.

К сожалению, для этого надо залезть внутрь компа и прочитать надписи на этикетках дисков.

Если же говорить о соответствии между "ata10" и логическим именем диска - то Fat-Zer подсказал мне в комментариях ссылку

В результате, после выполнения команды

    find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$'     | sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'

я получил список вида

    ata4 => /dev/sdd
    ata3 => /dev/sdb
    ata3 => /dev/sda
    ata3 => /dev/sdc
    ata6 => /dev/sdf
    ata9 => /dev/sdg
    ata10 => /dev/sdh

При этом видно, что в команде есть какой то дефект, потму что один и тот же диск еперчисляется несколько раз под разными именами, а один из дисков (ata5) не в этот список вывелся вообще.

Я пришел к выводу, что самый простой и надежный сопсоб - это при загрузке составить список всех дисков, просматривая dmesg, а потом - найти их в списке, который выводит команда lsscsi

Спасибо за помощь!

→ Ссылка