Что делать если жёсткий диск не засыпает в период бездействия

Столкнулся в Windows 10 с проблемой: жёсткий диск не останавливается по истечении времени, указанного в панели управления электропитанием компьютера. HDD установлен вторым, а Windows расположен на диске SSD. Дело именно в жёстком диске, в данном случае у меня ноутбучный диск TOSHIBA формата 2,5”. До него стоял HDD Western Digital, и такой проблемы не наблюдалось.

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

Почему жёсткий диск не останавливается

Для начала давайте удостоверимся, что все понимают, о чём идёт речь. Заходим в «Панель управления -> Электропитание» и нажимаем «Настройка схемы электропитания» активной схемы:

электропитание настройка схемы управления

Далее жмём «Изменить дополнительные параметры питания»:

изменить дополнительные параметры питания

Теперь мы попадаем в искомое окно. Находим подменю «Жёсткий диск», разворачиваем и выставляем время отключения при работе от батареи и от сети. Теперь, по идее, если никакая программа не работает с жёстким диском в течении указанного времени, крутящийся шпиндель должен остановиться.

параметры отключения жесткого диска

Иногда диск не засыпает никогда, либо засыпает через произвольный промежуток времени, например, через 15 минут, независимо от настроек электропитания Windows. Всё бы ещё нечего, но операционная система так работает, особенно Windows 10, что периодически происходит обращение к диску и он начинает вращаться, и останавливается снова только через 15 минут. Проблема усугубляется, если второй HDD используется редко, но зато постоянно шумит.

Принято считать, что диск не останавливается в том случае, если какая-то программа, и правда, время от времени обращается к диску, и он, закономерно, не уходит в спящий режим. Рекомендую вспомнить после чего началось такое поведение. Может быть вы обновили драйвера ноутбука, получили обновления Windows или установили новые программы? Временно удалите программы, откатите обновления и драйвера. Проще всего создать точку восстановления системы и временно откатиться на прежнюю точку восстановления, если она есть.

Статья о том случае, когда дело не в программах, а по каким-то причинам Windows 10 не умеет выключать шпиндель винчестера. Т.е., система APM (Automatic Power Management) винчестера не полностью совместима с Windows… Не стоит путать APM с AAM (Advanced Acoustic Management). AAM нужен для регулирования уровня шума, создаваемого перемещением считывающих головок.

Как вручную и автоматически останавливать HDD

К сожалению, перебирая различные настройки Windows и применяя правки реестра, решить проблему не удалось. Но есть и хорошая новость – можно отправлять HDD в режим сна с помощью маленькой утилиты «HDParm». Скачиваем программу в соответствии с разрядностью своей ОС.

Скачать HDParm

HDParm это консольная утилита, т.е. программа работающая в режиме командной строки. У неё нет графического интерфейса, мы будет запускать её вручную из командного файла (батника). Для автоматического применения новых параметров мы добавим командный cmd-файл в автозапуск Windows. Также, понадобится активировать запуск утилиты после выхода из режима сна, т.к. после засыпания Windows, параметры APM стираются.

Мой файл «remove.cmd» имеет такое содержание:
"c:\Program Files (x86)\hdparm\hdparm.exe" -i hda|findstr /C:"TOSHIBA"
if not errorlevel 1 (
"c:\Program Files (x86)\hdparm\hdparm.exe" -S 12 hda
) else "c:\Program Files (x86)\hdparm\hdparm.exe" -S 12 hdb
mountvol D: /D
mountvol F: /D

Теперь разберёмся по порядку для чего нужна каждая строчка. Сперва нужно определить, как жёсткий диск обзывается в системе: hda или hdb. По неизвестным мне причинам, в разное время запуска «hdparm.exe», наименование hda, hdb, hdc и т.д. могут меняться местами. Первая команда:

hdparm.exe -i hda

выводит на экран информацию о первом HDD «hda». Вторая часть первой строчки:

findstr /C:»TOSHIBA»

Ищет в полученной информации имя «TOSHIBA». Если у вас другой жёсткий диск, то нужно посмотреть в чистой командной строке, как он правильно называется. Запустите командную строку и вставьте туда команду:

«c:\Program Files (x86)\hdparm\hdparm.exe» -i hda

Если ничего не найдено, то вместо hda пробуйте hdb или hdc (если установлено три SSD/HDD накопителя). В общем, суть в том, что если «TOSHIBA» не найдено на «hda», то скрипт будет использовать «hdb».

Далее, команда:

«c:\Program Files (x86)\hdparm\hdparm.exe» -S 12 hda

Использует функцию «S» — Set standby (spindown) timeout. Цифра «12» умножается на «5» и получается 60 секунд. Т.е., устанавливается таймаут 60 секунд на отключение вращения шпинделя жёсткого диска. Можно увеличить до «-S 60», тогда диск будет засыпать через 5 минут. В принципе на этом можно было бы закончить, но иногда программы могут обращаться к диску и запускать его без реальной надобности. Давайте уберём буквы дисков, у меня это диски D: и F:. Если дисков нет в «Моём компьютере», то программы не будут знать куда обращаться. Команды:

mountvol D: /D
mountvol F: /D

убирают буквы дисков из системы. Я использую второй батник, когда нужно поработать со вторым винчестером. Содержимое моего файла «enable.cmd»:

"c:\Program Files (x86)\hdparm\hdparm.exe" -i hda|findstr /C:"TOSHIBA"
if not errorlevel 1 (
"c:\Program Files (x86)\hdparm\hdparm.exe" -S 180 hda
) else "c:\Program Files (x86)\hdparm\hdparm.exe" -S 180 hdb
mountvol D: \\?\Volume{338b6ea3-0000-0000-0072-e0a903000000}\
mountvol F: \\?\Volume{338b6ea3-0000-0000-007e-000000000000}\

Команды все те же самые, только таймаут остановки жёсткого диска выбран «180», что соответствует 15 минутам. Для назначения буквенного доступа к дискам необходимо указать желаемую букву диска и номер тома HDD, который нужно узнать перед отключением буквенных соответствий. Чтобы получить VolumeID, введите в командную строку название программы «mountvol» без параметров:

mountvol

Вы увидите, каким буквам дисков назначен какой VolumeID:

номер тома жёсткого диска

Удаление букв дисков не полностью спасает от периодического просыпания HDD, из-за особенностей Windows 10. Полностью исключить этот момент можно лишь отключив устройство в «Диспетчере задач», и это тоже можно автоматизировать из командной строки. Но проблема в том, что иногда для этой операции требуется перезагрузка, иногда не требуется. В общем, требование перезагрузки нивелирует всё удобство от быстрого добавления и удаления режима сна и буквы жёсткого диска.

Скачать архив с батниками

На этом всё, теперь вы можете добавить скрипт в автозагрузку любым удобным способом. Если вы пользуетесь режимом сна компьютера или ноутбука, то вам понадобится включать запуск скрипта после каждого «просыпания».