===== Relación entre ATA ID y SATA ID y cómo comprobar la velocidad de las conexiones SATA =====
Mapear un identificador ATA (ATA ID) con el dispositivo SATA en cuestión (SATA ID) (Muy útil a la hora de saber qué disco está fallando al recibir un error especificando un ID ATA, por ejemplo con dmesg).
#!/bin/bash
# save original IFS
OLDIFS="$IFS"
for i in /sys/block/sd*; do
readlink $i |
sed 's^\.\./devices^/sys/devices^ ;
s^/host[0-9]\{1,2\}/target^ ^ ;
s^/[0-9]\{1,2\}\(:[0-9]\)\{3\}/block/^ ^' \
\
|
while IFS=' ' read Path HostFull ID
do
# OLD line: left in for reasons of readability
# IFS=: read HostMain HostMid HostSub <<< "$HostFull"
# NEW lines: will now also work without a hitch on r/o environments
IFS=: h=($HostFull)
HostMain=${h[0]}; HostMid=${h[1]}; HostSub=${h[2]}
if echo $Path | grep -q '/usb[0-9]*/'; then
echo "(Device $ID is not an ATA device, but a USB device [e. g. a pen drive])"
else
echo $ID: ata$(< "$Path/host$HostMain/scsi_host/host$HostMain/unique_id").$HostMid$HostSub
fi
done
done
# restore original IFS
IFS="$OLDIFS"
sda: ata2.00
sdb: ata3.00
sdc: ata5.00
Otra forma sería listando los dispositivos scsi del sistema.
cat /proc/scsi/scsi
**Velocidad de la conexión SATA**.
Lista de velocidades SATA REVISION => Velocidad ({Gbit|MB}/s).
* SATA revision 1.0 => 1.5 Gbit/s, 150 MB/s
* SATA revision 2.0 => 3 Gbit/s, 300 MB/s
* SATA revision 3.0 => 6 Gbit/s, 600 MB/s
* SATA revision 3.2 => 16 Gbit/s, 1969 MB/s
Listar la velocidad de cada conexión SATA.
dmesg | grep -i sata | grep 'link up'
ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
# Con el script anterior se obtuvieron los siguientes valores.
# sda: ata2.00 (6.0 Gbps)
# sdb: ata3.00 (3.0 Gbps)
# sdc: ata5.00 (3.0 Gbps)
# Otra manera de obtener la misma información.
for i in `grep -l Gbps /sys/class/ata_link/*/sata_spd`; do echo Link "${i%/*}" Speed `cat $i`; cat "${i%/*}"/device/dev*/ata_device/dev*/id | perl -nE 's/([0-9a-f]{2})/print chr hex $1/gie' | echo " " Device `strings` | cut -f 1-3; done
Link /sys/class/ata_link/link1 Speed 1.5 Gbps
Device MIQC118289WL 1.00 PIONEER DVD-RW DVR-221L
Link /sys/class/ata_link/link2 Speed 6.0 Gbps
Device WD-WMC3F0685256 01.01A01WDC WD10EZEX-00BN5A0 tk}aA#ti AA#@
Link /sys/class/ata_link/link3 Speed 3.0 Gbps
Device S0URJ9CPB07644 FH100-05SAMSUNG HD250HJ A#ti A#@ w 88
Link /sys/class/ata_link/link5 Speed 3.0 Gbps
Device 9VP5ENVM CC38 ST31000528AS Ac4i tp
Comprobar el tipo de dispositivo SATA y su revisión (acorde a la velocidad).
hdparm -I /dev/sdb | egrep "Model|speed"
Model Number: SAMSUNG HD250HJ
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
hdparm -I /dev/sda | egrep "Model|speed"
Model Number: WDC WD10EZEX-00BN5A0
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
hdparm -I /dev/sdc | egrep "Model|speed"
Model Number: ST31000528AS
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
También puede ser de utilidad el comando smartctl, aunque a veces no muestra la información relativa a la velocidad y es necesario usar hdparm.
smartctl -a /dev/sda | grep "^SATA"
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
**Enlaces de Interés**.
* [[http://serverfault.com/questions/244944/linux-ata-errors-translating-to-a-device-name]]
* [[http://www.cyberciti.biz/faq/linux-command-to-find-sata-harddisk-link-speed/]]