On 19/02/2011 11:52, Mathias BurÃn wrote: [...]
What I wonder is, how do I know what device is ata3? I do have 4 devices of that model (WD20EARS). I've tried searching in /sys but there's nothing of value there (or I've missed it). If dmesg only showed the S/N... I posted the smartctl --all output of all devices here in case someone has time to take a look: http://stuff.dyndns.org/logs/smart-sd[a,b,c,d,e,f,g].log
Try using Phil Turmel's excellent lsdrv script; I've attached the version I use on EL5, but I hacked it about to work on such an old distro so I wouldn't swear it will work on more recent distros; Phil's original that does work on more recent distros can be found in the list archives around 6 November last year in the thread "Determining which spindle is out of order".
Cheers, John.
#! /bin/bash # # Examine specific system host devices to identify the drives attached # function describe_controller () { local device driver modprefix serial slotname driver="`readlink -f \"$1/driver\"`" driver="`basename $driver`" modprefix="`cut -d: -f1 <\"$1/modalias\"`" echo "Controller device @ ${1##/sys/devices/} [$driver]" if [[ "$modprefix" == "pci" ]] ; then slotname="`basename \"$1\"`" echo " `lspci -s $slotname |cut -d\ -f2-`" return fi if [[ "$modprefix" == "usb" ]] ; then if [[ -f "$1/busnum" ]] ; then device="`cat \"$1/busnum\"`:`cat \"$1/devnum\"`" serial="`cat \"$1/serial\"`" else device="`cat \"$1/../busnum\"`:`cat \"$1/../devnum\"`" serial="`cat \"$1/../serial\"`" fi echo " `lsusb -s $device` {SN: $serial}" return fi echo -e " `cat \"$1/modalias\"`" } function describe_device () { local empty=1 while read device ; do empty=0 if [[ "$device" =~ ^(.+)/block[/:](.+)$ ]] ; then targ="${BASH_REMATCH[1]}" bdev="${BASH_REMATCH[2]}" vnd="$(< $targ/vendor)" mdl="$(< $targ/model)" sn="`sginfo -s /dev/$bdev 2>/dev/null | \ sed -rn -e \"/Serial Number/{s%^.+' *(.+) *'.*\\\$%\\\\1%;p;q}\"`" &>/dev/null if [[ -n "$sn" ]] ; then echo -e " $1: `echo /dev/$bdev $vnd $mdl {SN: $sn}`" else echo -e " $1: `echo /dev/$bdev $vnd $mdl`" fi else echo -e " $1: Unknown $device" fi done [[ $empty -eq 1 ]] && echo -e " $1: [Empty]" } function check_host () { local found=0 local pController= while read shost ; do host=`dirname "$shost"` controller=`dirname "$host"` bhost=`basename "$host"` if [[ "$controller" != "$pController" ]] ; then pController="$controller" describe_controller "$controller" fi find $host -regex '.+/target[0-9:]+/[0-9:]+/block[:/][^/]+' |describe_device "$bhost" done } find /sys/devices/ -name 'scsi_host*' |check_host