Ответы:
Посмотрите на hdparm
.
Из руководства ( man hdparm
в командной строке):
-S Установить время ожидания (spindown) для накопителя. Это значение используется дисководом для определения того, как долго (без дисковой активности) ждать перед выключением двигателя шпинделя для экономии энергии. При таких обстоятельствах накопителю может потребоваться до 30 секунд для ответа на последующий доступ к диску, хотя большинство накопителей работают намного быстрее.
Кодирование значения тайм-аута несколько своеобразно. Нулевое значение означает «тайм-ауты отключены»: устройство не будет автоматически переходить в режим ожидания. Значения от 1 до 240 определяют кратные 5 секундам, приводя к тайм-аутам от 5 секунд до 20 минут. Значения от 241 до 251 указывают от 1 до 11 единиц по 30 минут, что дает время ожидания от 30 минут до 5,5 часов. Значение 252 означает тайм-аут 21 минуты. Значение 253 устанавливает период ожидания, определенный поставщиком, от 8 до 12 часов, а значение 254 резервируется. 255 интерпретируется как 21 минута плюс 15 секунд. Обратите внимание, что некоторые старые диски могут иметь разные интерпретации этих значений.
Так sudo hdparm -I /dev/sdb | grep level
покажет текущее значение spindown, например:
Advanced power management level: 254
Из руководства: 254 зарезервировано, поэтому я ожидаю, что это будет Ubuntu по умолчанию (может кто-нибудь подтвердить / расширить это, пожалуйста?)
Пример:
sudo hdparm -S 25 /dev/sdb
= откат через 25 * 5 секунд.
sudo hdparm -S 245 /dev/sdb
= откат после (245-240) * 30 минут.
grep
за APM ( -B
parm), но поговорите о -S
потраченном времени. Вы также знаете что-нибудь о APM?
-B
настройка отображается, как указано выше. Как я могу увидеть текущие -S
настройки?
sudo hdparm -y /dev/sdb
убивает зверя немедленно
Дисковая утилита -> выберите жесткий диск -> щелкните значок «Дополнительные действия ...» в правом верхнем углу -> Настройки диска ...
Моя выглядит так:
gnome-disk-utility
.
Если вы заинтересованы в том, чтобы настройка hdparm сохранялась между перезагрузками, вместо добавления ее в crontab, вы можете использовать /etc/hdparm.conf
. У меня есть следующее, обратите внимание на использование заглавной буквы S, а не в нижнем регистре:
command_line {
hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215
}
Добавьте эту строку, заменив UUID на ваш, или вы также можете указать устройство, используя /dev/sdX
формат. Вы можете узнать UUID вашего диска с помощью команды sudo blkid
.
command_line
настоящее время? У меня есть разные примеры в моем /etc/hdparm
?
sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
редактировать /etc/hdparm.conf
sudo -H gedit /etc/hdparm.conf # Be careful from now on
Ищите spindown-time
или ваш раздел настроек диска.
/dev/disk/by-label/4TB {
spindown_time = 1200
}
Я предпочитаю ссылаться на диск по UUID, который остается неизменным в разных установках (если только вы не измените его в самом HW).
/dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
spindown_time = 1200
}
Если скрипт init вызывает проблемы с загрузкой, вы можете передать nohdparm
командную строку ядра, и скрипт не запустится.
man hdparm.conf
.
man hdparm.conf
косвенно читает, что значение передается, -S
следовательно, для значений <255 должно быть совместимо с правилом в верхнем ответе . Любая дополнительная информация приветствуется.
Потратив часы и часы, я обнаружил, что мой привод WDC не поддерживает команду hdparm -S, независимо от значения атрибута idle3 (google: idle3ctl). И это общая проблема с накопителями WD. Но я рад сообщить, что hd-idle ( http://hd-idle.sourceforge.net/ ) работает без нареканий. При установке из пакета dpkg (см. Примечания по установке) он создает демон как в ubuntu, так и в debian (config находится в / etc / default / hd-idle). Хорошо работает и после выхода из спящего режима.
mc default # ps aux | grep hd-idle | grep -v grep | вырезать -c 66-; для f в [ad]; do hdparm -C / dev / sd $ f | grep -v "^ $"; сделанный / usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log / DEV / SDA: Состояние диска: активно / неактивно / DEV / SDB: Состояние диска: в режиме ожидания / DEV / SDC: Состояние диска: в режиме ожидания / DEV / SDD: Состояние диска: в режиме ожидания
Я обнаружил, что поведение Samsung HD204UI зависит от уровня APM ( hdparm -B
). Если уровень APM равен 127, тайм-аут тайм-аута равен 10 с. Если уровень APM равен 150, тайм-аут тайм-аута определяется -S
параметром.
-S
опцию (см. Как определить время вращения диска ). Чтобы получить его, используйте программное обеспечение GUI «Диск». Смотрите другой ответ со скриншотом.
Я добавляю что-то вроде:
@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e > /dev/null 2> /dev/null
в корневой каталог. Использование uuid лучше, я думаю, потому что sda
/ sdb
и т.д. меняется с каждой перезагрузкой
hdparm.conf
?
В Ubuntu 14.04
Диски> выделите диск> нажмите на шестерню в правом верхнем углу> Настройки диска> Теперь у вас есть настройки Standby, APM, AAM и Write Cache в удобном графическом интерфейсе!
В Debian с дисками WD я обнаружил, что установка любого уровня с помощью hdparm -S приводит к тому, что диск возвращает уровень 254 на последующем hdparm -I . Так что я действительно не уверен, вращаются они или нет. Я думаю, что они все еще вращаются.
Эти диски находятся в массиве серверов, и я действительно не хочу, чтобы они когда-либо вращались. В прошлом я использовал это, устанавливая задание cron для обновления файла каждые несколько минут.
Мне не повезло с hdparm на внешнем жестком диске, смонтированном в корпусе USB, который я использую для обслуживания носителей с минидлна.
Я наткнулся на идею отсюда: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping- while-mounting
Наилучшие результаты достигаются при использовании uuid диска, который вы можете найти с помощью:
sudo blkid
Следующий метод требует root-доступа, но так же требует hdparm. Он использует crontab для чтения случайного блока с диска каждые 5 минут и игнорирует все сообщения. Чтобы убедиться, что у вас правильный UUID, протестируйте его в командной строке следующим образом (убедитесь, что вы используете нужный UUID, а не этот):
sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM
Вы должны увидеть результат примерно так:
1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`
Чтобы подавить это сообщение, которое может в конечном итоге быть записано где-то, возможно, в файловую систему / (которая в моем случае используется на SSD), ниже я использую в корневом crontab. Вы получаете там с
sudo crontab -e
Тогда под комментариями:
*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1
Надеюсь, что это помогает кому-то еще с похожими проблемами. К сожалению, это все еще записывается в системный журнал, но потенциально есть способы подавить это; см. этот пост ServerFault .
[править] 2017-01-07 09:02:
Мне удалось подавить эти сообщения, отредактировав /etc/rsyslog.d/50-default.conf, чтобы изменить эту строку:
*.*;auth,authpriv.none -/var/log/syslog
к этому:
*.*;cron,auth,authpriv.none -/var/log/syslog
К сожалению, это подавляет все сообщения cron; Я не смог заставить cron перенаправить выход из корневой файловой системы (которая в моем случае работает на устаревшем SSD, поэтому я хочу ограничить количество записей), но так как это всего лишь домашний сервер, я, вероятно, не сильно упущу. Определенно не рекомендовал бы эту стратегию для производственной машины.