Перевести HDD в режим ожидания через X минут с помощью hdparm не работает

Я использую Ubuntu 12.04 на домашнем сервере. Существует 5 жестких дисков: один SSD с ОС и 4 HDD (Samsung HD204UI), настроенные как RAID5 с использованием mdadm.

Мне не нужен RAID очень часто (скажем, в среднем примерно раз в день); он содержит мультимедийные данные и некоторые резервные копии, поэтому я решил перевести накопители в режим ожидания большую часть времени.

Я настроил приводы на автоматическое замедление через 20 минут, используя hdparm, вот как /dev/sda в качестве примера:

hdparm -S 240 /dev/sda

Вывод команды подтвердил это:

/dev/sdb:
 setting standby to 240 (20 minutes)
[ 119] Но проблема в том, что диск вращается примерно через 5 секунд (вместо 20 минут) после последнего доступа, и

hdparm -C /dev/sdb

отображает:

/dev/sdb:
 drive state is:  standby

Почему нет диск ждать 20 минут как настроено? Это как-то связано с настройкой RAID? (Я так не думаю ...)

Этот очень короткий тайм-аут проблематичен, так как это RAID5, и когда я обращаюсь к файлу, он распределяется по четырем дискам по блокам. Поскольку диск 1 не нужен, когда диск 2 читается, он засыпает, когда будет использоваться в следующий раз (после того, как диск 3 будет считан с). Таким образом, диски постоянно вращаются вверх и вниз, что приводит к пропускной способности, близкой к нулю.

Для людей, которые беспокоятся о сроке службы моих дисков: не будет проблем с тем, чтобы диски вращались в среднем один раз в день, так как я предпочитаю экономить энергию и тепло, а не здоровье дисков (я использую RAID5 и содержание не очень важно).

10
задан 16 May 2012 в 01:32

2 ответа

Включен ли AHCI в BIOS? Если нет, попробуйте включить его и повторить попытку.

Если это все еще не работает, то вам, возможно, придется попробовать что-то более сложное, поскольку hdparm не всегда хорошо работает с дисками SATA, что, как я полагаю, у вас есть.

Проверьте на этой странице следующее относительно простое решение, использующее crontab:

sudo apt-get install sg3-utils
crontab -e

Теперь добавьте это в конец вашего crontab (замените sdx на нужный диск перевести в режим ожидания):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

Конечно, прежде чем пытаться что-либо из этого, настоятельно рекомендуется выполнить полное резервное копирование содержимого ваших жестких дисков.

0
ответ дан 16 May 2012 в 01:32

Возможно, лучшим способом было бы:

hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device

Первый положенный hdparm устройство в режиме ожидания немедленно. Второй отключает APM, поэтому диск остается в режиме ожидания до следующего доступа к диску.

0
ответ дан 16 May 2012 в 01:32

Другие вопросы по тегам:

Похожие вопросы: