Сопоставление номеров портов с устройствами

Сопоставление номеров портов с устройствами

У нас есть компьютер с несколькими загрузочными дисками, все из которых содержат одно и то же программное обеспечение. Выбор загрузочного диска осуществляется с помощью многопозиционного переключателя на передней панели. Если выбран диск 1, загружается диск на порту SATA 0. Если выбран диск 2, загружается диск на порту SATA 1. И т. д.

Менеджер дисков на RH может показать, к какому порту SATA подключены жесткие диски. Это графический интерфейс поверхчто-нибудь, и чточто-нибудьэто то, чего я хочу.

Как мне получить эту информацию в командной строке? Я подключаюсь через ssh-соединение и хочу узнать, к чему подключен загрузочный диск. Где хранится эта информация?

Спасибо!

решение1

Сопоставление номеров портов с устройствами

Я нашел этот вопрос, потому что пытался выяснить то же самое. Вот что я выяснил; это должно работать в bash или zsh:

for i in /dev/disk/by-path/*;do [[ ! "$i" =~ '-part[0-9]+$' ]] && echo "Port $(basename "$i"|grep -Po '(?<=ata-)[0-9]+'): $(readlink -f "$i")";done

Вывод должен выглядеть примерно так:

Port 1: /dev/sda
Port 2: /dev/sdb
Port 3: /dev/sdc

Эти номера портовДОЛЖЕНсоответствуют номерам, напечатанным на вашей материнской плате, хотя это предполагает, что поставщик вашей материнской платы был достаточно внимателен, чтобы сопоставить номера, напечатанные на плате, с номерами портов в чипе контроллера SATA. По крайней мере, пути устройств остаются стабильными, поэтому как только вы установите соответствие между указанными номерами портов и номерами на панели, оно никогда не изменится.

Этот фрагмент перебирает /dev/disk/by-pathкаталог. Он пропускает файлы, которые заканчиваются на , -part<number>поскольку это просто разделы, и извлекает номер порта из -ata<number>в конце оставшихся имен файлов. Эти файлы являются символическими ссылками на традиционные /dev/sdXузлы, которые он получает с помощью readlink -f.

Если у вас несколько контроллеров SATA, вы получите список из нескольких устройств с одинаковыми номерами портов, поскольку у каждого контроллера есть свой собственный порт 1, порт 2 и т. д. Поэтому просто запустите ls -l /dev/disk/by-pathи проанализируйте его вручную.

Выяснение того, какое устройство является вашим загрузочным устройством

Чтобы выяснить, какое из них является вашим загрузочным устройством, запустите mount | grep ' on / ' | cut -f 1 -d ' '. Это покажет устройство, смонтированное в /.

решение2

Правильное сопоставление портов SATA — это то, о чем упомянул «user371366».

Хотя я настоятельно рекомендую не полагаться на номер порта SATA, указанный на печатной плате материнской платы.

Потому что существуют проблемы или ошибки в оборудовании/программном обеспечении, которые делают их ненадежными.

Иногда порт SATA №1, обозначенный на материнской плате, будет отображаться как SDB или SDx (где x — любая буква, отображаемая на терминале вашего ПК или где-то еще), а не как SDA.

Это случалось со мной несколько раз, например, при использовании программы резервного копирования «Clonezilla», где порт SATA №1 отображался как SDB, хотя должен был отображаться как SDA.

Лучший подход — записать серийный номер жесткого диска и использовать его в качестве справочного материала для жесткого диска, на который направлена ​​проверка.

Связанный контент