Как мне установить соответствие между названием "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 шт):
Кажется, я нашел приблизительный ответ.
Если просмотреть лог 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
Спасибо за помощь!