Найти, какой диск соответствует какому USB-накопителю в Linux

У меня есть несколько USB-накопителей, подключенных к компьютеру с Ubuntu Linux (Ubuntu 10.04.1, ядро 2.6. 32-25-386), и мне нужно различать их программно (по возможности из bash, но я не боюсь и компиляции) - мне нужно найти, какое блочное устройство соответствует какому физическому устройству (например, /dev/sdb1 -> устройство в порту USB 1; в моем случае одно устройство ~ один том).

Другими словами, я знаю, что у меня есть три аппаратных устройства, подключенных к USB портам; каждое из них отображается в системе как USB накопитель (как видно с помощью lsusb), создается как блочное устройство (/dev/sdb1) и автоматически монтируется по UUID (/media/1234-5678).

USB device               block device    mountpoint
USB device in port 2.2 <-> /dev/sdb1   <-> /media/1234-5678

Я не пытаюсь найти связь между блочным устройством и точкой монтирования; я пытаюсь найти связь между блочным устройством и USB-устройством, есть ли способ?

Почему? На диски будут производиться записи с непредсказуемым временем завершения. Мне нужно дать оператору какую-то индикацию типа "теперь вы можете извлечь диск в порту 2 (который второй слева)". Я выяснил, какой физический порт соответствует номеру порта на конкретной машине, и найти блочные устройства по точкам монтирования очень просто; теперь я застрял на сопоставлении логических USB-портов с блочными устройствами.

Я могу видеть диски с помощью lsusb :

Bus 001 Device 058: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 060: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 061: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device

и я могу видеть их смонтированными (по их UUID):

/dev/sdb1 on /media/BC88-15C4 type vfat
/dev/sdc1 on /media/AE54-65AA type vfat
/dev/sdd1 on /media/58D2-FED1 type vfat

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

Я нашел /sys/bus/usb/devices (список USB-устройств), но, похоже, это те же данные, что я получаю из lsusb - я не вижу там привязки к дискам.

Есть также /sys/block/sdb и /sys/block/sdb/sdb1 (блочное устройство и его первый раздел; аналогично для sdc и sdd), но опять же, я не вижу привязки к устройствам.

5
задан Piskvor cc-by-sa 3.0 7 October 2010 в 14:13
поделиться