Принудительное замедление внешнего жесткого диска на Linux (Raspberry Pi)


16

В настоящее время я настраиваю домашний сервер, используя Raspberry Pi с внешним жестким диском, подключенным через USB. Тем не менее, мой жесткий диск никогда не будет крутиться при простое.

Я уже попробовал подсказки, предоставленные на raspberrypi.org ... безуспешно.

1.)

sudo hdparm -S5 /dev/sda

возвращается

/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

возвращается

/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

... и 3.)

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

возвращается

/dev/sda: HDD         1234

... без замедления привода.

Я использую следующее оборудование:

  • Док-станция для жестких дисков Inateck FDU3C-2 с двумя портами USB 3.0
  • Western Digital WD10EZRX Зеленый 1 ТБ

Возможно ли, что отправленные сигналы замедления где-то перезаписываются / теряются / игнорируются?


1
Обновление: упомянутая док-станция Inateck имеет функцию клонирования жестких дисков, предоставляя порт главного / источника и порт подчиненного устройства / приемника для жестких дисков. При подключении жесткого диска к подчиненному порту выполняются команды, упомянутые выше, тренировки. Это ограничивает проблему отсутствия вращения до мастер-порта.
user258346

1
Если вы думаете, что это решение, вы должны принять собственное решение. Может показаться странным, но это полезно для будущих читателей с такой же проблемой.
MariusMatutiae

1
Вы, конечно, понимаете, что команда, которую вы используете в своем скрипте, является той же самой, которую вы заявили, не работает, верно? hdparm -y / dev / sda ...
MariusMatutiae

Ответы:


4

Мне не повезло с HD-холостым ходом; это бежало, но не функционировало. Я закончил писать сценарий ниже:

#!/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
Я думал, hdparm -yчто не работает.
Кристиан Чиупиту

Спасибо, работает отлично. Мой WD синий жесткий диск вращается сейчас, когда не используется. Каков разумный интервал для cron, чтобы назвать сценарий, по вашему мнению? Я называю это каждые 15 минут сейчас.
таратор

5

Да, это возможно, но потребует некоторой пользовательской разработки, а не тривиальной, и код будет специфичным для чипа моста USB-> SATA ВНУТРИ вашего корпуса.

Дело в том, что USB-мост служит не только электрическим преобразователем. Подключенный к USB жесткий диск эмулирует диск SCSI с другим набором команд. В то время как стандартные команды чтения / записи / поиска переводят все время, более экзотические вращения вверх / вниз не делают. Большинство фишек этого не сделает. Кроме того, нет универсального API уровня чипа. Поэтому, если бы я написал код, мне понадобилось бы руководство по программированию для чипа моста USB.

В итоге, если вы не имеете специфики программирования на чипе и не знакомы с набором команд ATA и SCSI и инкапсулированием сквозных команд, то вам просто не придется обойтись. Слишком много работы и нет стандарта.


5

Вполне возможно, что посылаемые вами сигналы игнорируются. Вы не предоставили вывод

sudo hdparm -I /dev/sdX

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

К счастью, есть очень удобная утилита hd-idle, которую вы можете скачать отсюда , которая позволяет принудительно вращать диск по прошествии определенного промежутка времени. Программа была разработана специально для Debian (но она работает на Linux в целом), поэтому ее установка должна быть очень простой для вас. Я просто надеюсь, что он также работает на архитектуре ARM, что я не могу проверить.

Редактировать: он компилируется и устанавливается правильно на raspbian.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.