Вы можете найти соответствующее устройство / dev / sdY, пройдя по /sys
дереву:
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
С более эффективным обходом/sys
(ср. Lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Пример вывода из системы с двумя дисками:
ata1 => /dev/sda
ata2 => /dev/sdb
Затем для надежной идентификации реального оборудования вам необходимо сопоставить / dev / sdY с серийным номером, например:
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
lssci
Утилита также может быть использована для получения отображения:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Обратите внимание, что соответствующее перечисление lsscsi начинается с 0, а перечисление ata начинается с 0.
Syslog
Если больше ничего не работает, можно посмотреть системный журнал / журнал, чтобы получить сопоставление.
Эти /dev/sdY
устройства созданы в том же порядке , как идентификаторы ATAX перечислены в kern.log
то время как игнорирование не-дисковых устройств (ATAPI) и не-связанные ссылки.
Таким образом, следующая команда отображает отображение:
$ 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
(Обратите внимание, что ata4 не отображается, поскольку приведенные выше сообщения журнала поступают из другой системы.)
Я использую, /var/log/kern.log.0
а не /var/log/kern.log
потому, что загрузочные сообщения уже повернуты. Я согласен, May 28 2
потому что это было последнее время загрузки, и я хочу игнорировать предыдущие сообщения.
Для проверки соответствия вы можете выполнить некоторые проверки, посмотрев на результат:
$ 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
[..]
И вы можете сравнить этот вывод с hdparm
выводом, например:
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(с использованием ядра 2.6.32-31)
Вот моя версия, модифицированная сверху. Поскольку я не знаю точную дату загрузки системы (для тестирования это было 27 дней назад), и я не знаю, какой kern.log содержит нужные мне данные (некоторые могут быть
gzipped
в моей системе), я используюuptime
иdate
рассчитать приблизительную дату загрузки системы (в любом случае, по дням), а затем использоватьzgrep
для поиска по всем доступным файлам kern.log.Я также немного изменил второе
grep
утверждение, поскольку теперь оно будет также отображать привод CD / DVD ATAPI и приводы ATA- *.Он все еще может использовать доработку (т. Е. Если время работы системы больше года), но пока должно работать нормально.
источник
Просто имел эту же проблему и нашел другое решение, которое могло бы понравиться.
Утилита lsscsi перечисляет устройства SCSI (или хосты) и их атрибуты.
С помощью lsscsi вы получаете имя ata и имя устройства.
Выглядит так:
На Ubuntu можно установить lsscsi просто
источник
ataX
карту с какой частью вlsscsi
выводе?lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
/sys/devices
безlsscsi
.Ни один из приведенных выше ответов не работал для меня, и подход lsscsi фактически дал неправильный ответ из-за расхождений между номерами шины SCSI и номерами ATA. В системе с 21 диском у меня было много отчетов системного журнала о проблемах с ATA18 (нарушения HSM). Какой диск вызывал эти ошибки? Некоторые из них были USB-накопителями, что значительно усложняло ситуацию. Мне нужен был отчет о том, как каждый диск SCSI подключен к системе, и я написал нижеприведенный скрипт, который выдает табличные списки для всех дисков SCSI (/ dev / s [dr]?) Независимо от того, ATA или USB.
Затем, когда все дисководы были полностью учтены, я с удивлением увидел, что ошибки ATA не имеют никакого отношения к любому из моих дисков. Я задавал неправильный вопрос, и я думаю, что другие могут легко попасть в ту же ловушку, поэтому я упоминаю об этом здесь. Затем я использовал второй подход, который идентифицировал оборудование, которое генерировало сообщения о нарушениях HSM, также подробно описанные в документации, представленной в приведенном ниже сценарии.
источник