GNU/Linux >> Tutoriales Linux >  >> Linux

Forzar el giro hacia abajo del disco duro externo en Linux (raspberry pi)

Sí, es posible, pero requerirá un trabajo de desarrollo personalizado y no trivial, y el código será específico para el chip puente USB->SATA DENTRO de su gabinete.

El trato es que el puente USB sirve como más que un convertidor eléctrico. Un disco duro conectado por USB emula una unidad SCSI que tiene un conjunto de comandos diferente. Mientras que los comandos estándar de lectura/escritura/búsqueda se traducen todo el tiempo, los giros hacia arriba/abajo más exóticos no lo hacen. La mayoría de los chips no harán eso. Además, NO existe una API de nivel de chip universal. Entonces, si escribiera el código, tendría que tener un manual de programación para el chip puente USB.

En pocas palabras, a menos que tenga detalles de programación en el chip y esté familiarizado con el conjunto de instrucciones ATA y SCSI y los comandos de paso encapsulados, entonces tendrá que prescindir de ellos. Demasiado trabajo y sin estándares.


Es muy posible que se descuiden las señales que está enviando. No proporcionó la salida de

sudo hdparm -I /dev/sdX

lo que nos habría dicho las capacidades del disco, pero muchos discos simplemente no responden a estos comandos.

Afortunadamente, hay una utilidad muy conveniente, hd-idle, que puede descargar desde aquí, lo que le permite forzar el giro del disco después de un lapso de tiempo específico. El programa ha sido desarrollado especialmente para Debian, (pero funciona en Linux en general), por lo que su instalación te resultará muy sencilla. Solo espero que también funcione en una arquitectura ARM, algo que no puedo probar.

Editar:compila e instala correctamente en raspbian.


No tuve suerte con hd-idle; corrió pero no funcionó. Terminé escribiendo el guión a continuación:

#!/bin/bash
# This script looks for recent disk access, and if nothing has changed, puts /dev/"drive" into spindown mode.
# This should be used only is the hdparm power management function is not working.
# Call this script with cron or manually as desired
#
#
#
# Change which drive this script looks at by changing the drive variable below:
drive="sda"
#
#
current=`date`
caller=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
filename="/tmp/diskaccess.txt"
if [ -f "$filename" ]; then
    stat_old=`cat "$filename" | tr -dc "[:digit:]"`
    stat_new=`cat /sys/block/"$drive"/stat | tr -dc "[:digit:]"`
    if [ "$stat_old" == "$stat_new" ]; then
        stat="0"
        echo "The disk hasn't been used; spinning down /dev/$drive"
        echo $stat_old
        hdparm -y /dev/$drive > /dev/null
    else
        stat="1"
        echo $stat_old
        echo $stat_new
        echo "The drive has been used..."
        echo $stat_new > $filename
    fi
else
    echo "/tmp/diskaccess.txt file does not exist; creating it now."
    echo $stat_new > $filename
fi
echo $stat " - " $drive " - " $current " - by: " $caller >> /tmp/diskaccesslog.txt

Linux
  1. Usando la fuerza en la línea de comando de Linux

  2. Cómo forzar la instalación en modo texto de Redhat Linux

  3. Comando de eco de Linux

  4. linux shell wc -c cuenta caracteres +1

  5. ¿Qué hace % en las cadenas de shell de Linux?

Tutorial de comandos echo de Linux para principiantes (5 ejemplos)

Comando Bash Echo explicado con ejemplos en Linux

Comando de eco en Linux

Cómo usar el comando echo en Bash Scripts en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos de comandos echo de Linux