Принудительный спин-Даун внешнего жесткого диска на linux (raspberry pi)

в настоящее время я настраиваю домашний сервер с помощью 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 dual Ports USB 3.0 HDD док-станция
  • Western Digital WD10EZRX зеленый 1 ТБ

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

6
задан user258346
07.01.2023 22:14 Количество просмотров материала 3020
Распечатать страницу

3 ответа

мне не повезло с hd-idle, он работал, но не работал. Я закончил писать сценарий ниже:

#!/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
2
отвечен user300457 2023-01-09 06:02

Да, это возможно, но потребует некоторых пользовательских разработок и не тривиально, и код будет специфичен для чипа USB - >SATA bridge внутри вашего корпуса.

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

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

5
отвечен David Lethe 2023-01-09 08:19

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

sudo hdparm -I /dev/sdX

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

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

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

5
отвечен MariusMatutiae 2023-01-09 10:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх