Forza lo spin-down del disco rigido esterno su Linux (raspberry pi)


16

Attualmente sto configurando un server di casa utilizzando un Raspberry Pi con un disco rigido esterno collegato tramite USB. Tuttavia, il mio disco rigido non si spegnerà mai quando è inattivo.

Ho già provato i suggerimenti forniti su raspberrypi.org ... senza successo.

1.)

sudo hdparm -S5 /dev/sda

ritorna

/dev/sda:
 setting standby to 5 (25 seconds)
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

2.)

sudo hdparm -y /dev/sda

ritorna

/dev/sda:
 issuing standby command
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

... e 3.)

sudo sdparm --flexible --command=stop /dev/sda

ritorna

/dev/sda: HDD         1234

... senza spin-down dell'unità.

Uso il seguente hardware:

  • Docking station per HDD USB 3.0 dual port Inateck FDU3C-2
  • Western Digital WD10EZRX verde 1TB

È possibile che i segnali spin-down inviati vengano da qualche parte sovrascritti / persi / ignorati?


1
Aggiornamento: la menzionata docking station Inateck ha una funzionalità per clonare dischi rigidi, fornendo una porta master / source e una porta slave / sink per gli HDD. Quando si collega l'HDD alla porta slave i comandi, menzionati sopra, allenamento. Ciò limita il problema del mancato spin-down alla porta principale.
user258346,

1
Se pensi che questa sia una soluzione, dovresti accettare la tua soluzione. Per quanto banale possa sembrare, è utile per i futuri lettori con lo stesso problema.
MariusMatutiae,

1
Ti rendi conto, ovviamente, che il comando che usi nella tua sceneggiatura è lo stesso che hai affermato che non funzionava, giusto? hdparm -y / dev / sda ...
MariusMatutiae

Risposte:


4

Non ho avuto fortuna con hd-idle; funzionava ma non funzionava. Ho finito per scrivere la sceneggiatura qui sotto:

#!/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

4
Pensavo hdparm -ynon funzionasse.
Cristian Ciupitu,

Grazie, funziona perfettamente. Il mio hard disk blu WD si gira ora, quando non viene utilizzato. Secondo te, qual è un intervallo ragionevole per cron per chiamare lo script? Lo chiamo ogni 15 minuti per ora.
Tarator

5

Sì, è possibile ma richiederà un po 'di lavoro di sviluppo personalizzato e non banale e il codice sarà specifico per il chip bridge USB-> SATA INTERNO del tuo contenitore.

L'accordo è che il bridge USB funge da più di un convertitore elettrico. Un HDD collegato tramite USB emula un'unità SCSI con un set di comandi diverso. Mentre i comandi di lettura / scrittura / ricerca standard traducono continuamente, lo spin up / down più esotico no. La maggior parte dei chip non lo farà. Inoltre NON esiste un'API a livello di chip universale. Quindi se avessi scritto il codice avrei dovuto avere un manuale di programmazione per il chip bridge USB.

In conclusione, a meno che tu non abbia specifiche di programmazione sul chip e non abbia familiarità con il set di istruzioni ATA e SCSI e incapsulando i comandi pass-through, allora dovrai solo farne a meno. Troppo lavoro e nessuno standard.


5

È del tutto possibile che i segnali che stai inviando vengano trascurati. Non hai fornito l'output di

sudo hdparm -I /dev/sdX

che ci avrebbe detto le capacità del disco, ma molti dischi semplicemente non rispondono a questi comandi.

Fortunatamente, c'è un'utilità molto conveniente, hd-idle, che puoi scaricare da qui , che consente di forzare lo spin down del disco dopo un determinato intervallo di tempo. Il programma è stato sviluppato appositamente per Debian (ma funziona su Linux in generale), quindi la sua installazione dovrebbe essere molto semplice per te. Spero solo che funzioni anche su un'architettura ARM, qualcosa che non posso testare.

Modifica: si compila e si installa correttamente su raspbian.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.