- Вопрос или проблема
- Используйте инструменты мониторинга SMART smartctl для изменения времени ожидания
- Примеры использования
- Примечания
- Ответ или решение
- Как управлять временем простоя жесткого диска (HDD) в Ubuntu
- 1. Утилита hdparm
- 2. Утилита smartctl
- 3. Использование фоновых процессов
- 4. Проверка настроек
- Заключение
Вопрос или проблема
У меня в ПК две жестких дискa. Ubuntu отключает второй HDD очень быстро, примерно через 15 минут, что для меня слишком коротко. Мне нужно контролировать это время. Как я могу это сделать?
Я пробовал управление питанием GNOME, но не нашел его полезным.
Обратите внимание на hdparm
.
Из руководства (man hdparm
в командной строке):
-S Перевести диск в режим ожидания (низкое потребление энергии) и установить тайм-аут
ожидания (выключения) для диска. Это значение тайм-аута используется диском для определения того,
как долго ждать (без активности диска) перед отключением мотора шпинделя для экономии
энергии. В таких обстоятельствах диск может отвечать на последующий доступ к диску до 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
покажет текущее значение отключения, например:
Уровень управления питанием: 254
Из руководства, 254 зарезервировано, так что я ожидаю, что это значение по умолчанию в Ubuntu (может кто-то подтвердить/дополнить это?).
Пример:
-
sudo hdparm -S 25 /dev/sdb
= отключение через 25*5 секунд. -
sudo hdparm -S 245 /dev/sdb
= отключение через (245-240)*30 минут.
Дисковая утилита -> выберите HDD -> кликните на значок “Дополнительные действия…” в верхнем правом углу -> Настройки диска…
У меня это выглядит так:
Если вас интересует, как сделать настройки 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
.
-
sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
-
Отредактируйте
/etc/hdparm.conf
sudo -H gedit /etc/hdparm.conf # Будьте осторожны с этого момента
-
Найдите
spindown-time
или раздел настроек вашего диска./dev/disk/by-label/4TB { spindown_time = 1200 }
-
Я предпочитаю ссылаться на диск по UUID, который остается неизменным при различных установках (если вы не изменяете его в самом оборудовании).
/dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 { spindown_time = 1200 }
-
Если скрипт инициализации вызывает проблемы при загрузке, вы можете передать
nohdparm
в командной строке ядра, и скрипт не будет выполнен.
Проведя часы и часы, я обнаружил, что мой жесткий диск Western Digital не поддерживает команду hdparm -S
, независимо от значения атрибута idle3
(гугл: idle3ctl
). Это распространенная проблема с дисками WD.
Но я рад сообщить, что hd-idle
(http://hd-idle.sourceforge.net/) работает безупречно.
Если установлен из пакета, собранного с помощью dpkg (см. примечания по установке), он создает демон как в Ubuntu, так и в Debian (конфигурация находится в /etc/default/hd-idle
). Также нормально работает после выхода из гибернации.
mc default # ps aux | grep hd-idle | grep -v grep | cut -c 66- ; for f in [a-d] ; do hdparm -C /dev/sd$f | grep -v "^$" ; done /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: состояние диска: в режиме ожидания
Я добавил что-то вроде:
@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e > /dev/null 2> /dev/null
в crontab пользователя root. Думаю, использование uuid лучше, потому что sda
/sdb
и т.д. похоже, меняется с каждой перезагрузкой.
Я обнаружил, что поведение отключения диска Samsung HD204UI зависит от уровня APM (hdparm -B
). Если уровень APM равен 127, тайм-аут отключения составляет 10 секунд. Если уровень APM равен 150, тайм-аут отключения определяется опцией -S
.
Важное примечание: в отличие от основного ответа, похоже, что
sudo hdparm -I /dev/sdb | grep level
# Уровень управления питанием: 254
не показывает текущее значение отключения (которое мы можем установить с помощью hdparm -S
, как этого хотел OP), а скорее отображает значение, установленное с помощью hdparm -M
:
hdparm -M 128 # Установить акустическое управление на 'тихий'
hdparm -M 254 # Установить акустическое управление на 'быстрый'
В Ubuntu 14.04
Диски > выделите диск > кликните на шестеренку в правом верхнем углу > Настройки диска > теперь у вас есть настройки ожидания, APM, AAM и кеша записи в удобном графическом интерфейсе!
Мне не повезло с hdparm на внешнем HDD, смонтированном в USB-корпусе, который я использую для потоковой передачи медиа с minidlna.
Я наткнулся на идею отсюда: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted
Лучшие результаты достигаются при использовании 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 записей в
1+0 записей из
512 байт скопировано, 0.000738308 с, 693 кБ/с
Чтобы подавить это сообщение, которое может оказаться записанным где-то, потенциально в файловую систему / (которая, в моем случае, на SSD), ниже приведено, что я использую в crontab пользователя root. Вы попадаете туда с помощью
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
Надеюсь, это поможет кому-то другому с подобными проблемами. К сожалению, это все еще записывается в syslog, но есть потенциальные способы подавить это; смотрите этот пост на 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
К сожалению, это подавляет все сообщения crontab; я не смог заставить cron перенаправить журналы с файловой системы root (которая находится на стареющем SSD в моем случае, поэтому я хочу ограничить записи), но так как это просто домашний сервер, я, вероятно, не пропускаю много. Определенно не рекомендую эту стратегию для рабочей машины.
в ubuntu 18.04 по 20.04 вы можете изменить время ожидания настроек диска в:
поиск Диски в запуске > выберите свой диск > нажмите ⋮ в строке меню рядом с кнопкой минимизации окна > Настройки диска > используйте ползунок для установки времени ожидания
На Debian с дисками WD я обнаружил, что установка любого уровня с помощью hdparm -S приводит к тому, что диск возвращает уровень 254 при последующих hdparm -I. Так что я действительно не уверен, останавливаются ли они или нет. Думаю, они все еще останавливаются.
Эти диски находятся на серверном массиве, и я действительно не хочу, чтобы они когда-либо останавливались. В прошлом я это обходил, устанавливая задание cron для обновления файла каждые несколько минут.
Я выяснил, что
sudo hdparam -S 0 /dev/sda1
на моем диске дает следующий вывод:
установка ожидания на 0 (выключить)
Используйте инструменты мониторинга SMART smartctl
для изменения времени ожидания
Если у вас установлены инструменты мониторинга SMART, ваш диск поддерживает SMART (что обычно так), и ваш диск является SATA или ATA, вы можете использовать программу smartctl
с флагом опции -s
для изменения настройки на диске. Вот отрывок из страницы руководства smartctl
, описывающий поведение таймера ожидания настройки диска:
Значение 0 или 'выключить' отключает таймер ожидания. Значения
от 1 до 240 задают тайм-ауты от 5 секунд до 20 минут
с шагом 5 секунд. Значения от 241 до 251 задают
тайм-ауты от 30 минут до 330 минут с шагом 30 минут.
Значение 252 задает 21 минуту. Значение 253
задает значение, специфичное для производителя, между 8 и 12 часами.
Значение 255 задает 21 минуту и 15 секунд. Некоторые диски
могут использовать специфическую интерпретацию производителя для значений.
Примеры использования
Например, это устанавливает таймер ожидания на 20 минут:
smartctl /dev/sdx -s standby,240
…и эта команда отключает таймер ожидания, чтобы немедленно отключить диск, что полезно для предотвращения повреждений диска, если вам нужно физически его переместить:
smartctl /dev/sdx -s standby,0
Примечания
- Помните, что целевым устройством должен быть сам диск, а не раздел на этом диске, то есть
/dev/sda
, а не/dev/sda1
. - Имейте в виду, что некоторые диски могут иметь специфическое поведение производителя в отношении установки ожидания.
- Чтобы последовательно изменять настройки конкретного диска, например, в сценарии, который запускается при загрузке, вы можете использовать сопоставленную ссылку UUID диска в
/dev/disk/by-uuid
.
Следуйте этой ссылке, https://forums.raspberrypi.com/viewtopic.php?t=379149&sid=8ed9402be549e1bc80571c7744558890, это автоматизирует весь процесс.
Ответ или решение
Как управлять временем простоя жесткого диска (HDD) в Ubuntu
Если ваш компьютер под управлением Ubuntu отключает вторичный жесткий диск слишком быстро (например, через 15 минут простоя), вы можете настроить это время с помощью различных методов. В данном руководстве мы рассмотрим, как контролировать время простоя HDD с использованием утилит hdparm
и smartctl
, а также другие способы, чтобы достичь желаемого результата.
1. Утилита hdparm
hdparm
— это утилита, позволяющая управлять различными параметрами жестких дисков. В вашем случае мы воспользуемся ей для изменения времени простоя.
1.1 Установка hdparm
Если у вас еще не установлена hdparm
, вы можете установить ее с помощью команды:
sudo apt-get install hdparm
1.2 Проверка текущего времени простоя
Вы можете проверить текущее значение параметра простоя для вашего жесткого диска. Например, для диска /dev/sdb
используйте команду:
sudo hdparm -I /dev/sdb | grep level
Это покажет текущее состояние уровня управления питанием.
1.3 Установка времени простоя
Чтобы установить время простоя, используйте следующую команду, заменив N
на значение времени простоя. Например, чтобы установить время простоя в 20 минут:
sudo hdparm -S 240 /dev/sdb # 240 * 5 секунд = 20 минут
Значения от 1 до 240 задают множество 5-секундных интервалов, значения от 241 до 251 задают временные интервалы от 30 минут до 5,5 часов, а значение 255 означает 21 минуту и 15 секунд.
1.4 Создание постоянных настроек
Чтобы эти настройки применялись после перезагрузки, добавьте следующую строку в файл конфигурации /etc/hdparm.conf
:
/dev/disk/by-uuid/<ваш-uuid> {
spindown_time = 240
}
Вы можете получить UUID вашего диска, выполнив команду:
sudo blkid
2. Утилита smartctl
Ещё один способ управления временем простоя — использование утилиты smartctl
, которая является частью пакета smartmontools
.
2.1 Установка smartmontools
Если у вас нет установленного smartmontools
, установите его:
sudo apt-get install smartmontools
2.2 Управление временем простоя
С помощью smartctl
вы можете изменить время простоя:
sudo smartctl -s standby,240 /dev/sdx # Установите 20 минут
Здесь вы заменяете /dev/sdx
на соответствующее устройство.
3. Использование фоновых процессов
Если указанная утилита не дает ожидаемого результата, вы можете создать фоновые процессы, чтобы предотвратить отключение диска. Например, вы можете настроить cron
для периодического чтения из диска:
sudo crontab -e
И добавьте следующую строку для чтения данных каждые 5 минут:
*/5 * * * * dd if=/dev/disk/by-uuid/<ваш-uuid> of=/dev/null count=1
Это предотвратит отключение диска, так как будет происходить постоянная активность.
4. Проверка настроек
После выполнения настроек убедитесь, что они действуют, выполнив следующую команду:
sudo hdparm -I /dev/sdb | grep level
Это позволит вам убедиться, что параметр управления питанием настроен должным образом.
Заключение
Настройка времени простоя для жесткого диска в Ubuntu — это процесс, который можно выполнить различными способами. Используя утилиты hdparm
и smartctl
, а также фоновые процессы для предотвращения отключения диска, вы можете управлять временем простоя в соответствии с вашими потребностями. Эти методы помогут вам оптимизировать работу вашего ПК, а также продлить срок службы жесткого диска.
Не забывайте регулярно проверять статус ваших HDD и следить за обновлениями, поскольку производители могут изменять поддержку таких параметров.