Примусовий відкат зовнішнього жорсткого диска на Linux (малиновий пі)


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 HDD
  • Western Digital WD10EZRX Зелений 1 Тб

Чи можливо, що надіслані віджимання-сигнали десь перезаписані / втрачені / проігноровані?


1
Оновлення: згадана док-станція Inateck має функцію клонування жорстких дисків, забезпечуючи головний / джерело та порт slave / sink для жорстких дисків. Під час підключення жорсткого диска до підлеглого порту команди, згадані вище, тренуються. Це обмежує проблему відсутності спина до головного порту.
користувач258346

1
Якщо ви вважаєте, що це рішення, ви повинні прийняти своє власне рішення. Банально, хоча це може здатися, це корисно і майбутнім читачам з тією ж проблемою.
MariusMatutiae

1
Ви, звичайно, розумієте, що команда, яку ви використовуєте у своєму сценарії, - це та сама, яку ви заявили, що не працює, правда? hdparm -y / dev / sda ...
MariusMatutiae

Відповіді:


4

Мені не пощастило з 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

4
Я думав, hdparm -yщо не працює.
Крістіан Цюпіту,

Дякую, працює чудово. Мій жорсткий диск WD віджимається зараз, коли не використовується. Що, на ваш погляд, є розумним втручанням у cron для виклику сценарію? Я зараз це називаю кожні 15 хв.
таратор

5

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

Угода полягає в тому, що USB-міст служить більше, ніж електричним перетворювачем. HDD-накопичувач, прикріплений до USB, імітує привід SCSI, який має інший набір команд. У той час як стандартні команди для читання / запису / пошуку перекладаються весь час, більш екзотичні перетворення вгору / вниз не роблять. Більшість фішок цього не робитимуть. Крім того, НЕ існує універсальний API рівня чіпів. Тож якби я написав код, я мав би мати посібник з програмування мікросхеми USB Bridge.

Підсумок, якщо ви не маєте специфіки програмування на мікросхемі і не знайомі з набором інструкцій 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.