Я использую 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 и содержание не очень важно).
Включен ли 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
Конечно, прежде чем пытаться что-либо из этого, настоятельно рекомендуется выполнить полное резервное копирование содержимого ваших жестких дисков.
Возможно, лучшим способом было бы:
hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device
Первый положенный hdparm устройство в режиме ожидания немедленно. Второй отключает APM, поэтому диск остается в режиме ожидания до следующего доступа к диску.