Как остановить шпиндель hdd

Обновлено: 06.07.2024

Жесткий диск, он же винчестер, не такое уж и простое устройство, каким может показаться на первый взгляд. За всю историю своего существования, начиная с 1956 года, накопители претерпели огромное количество изменений. Теперь это не просто пластина и считывающие головки, а целая система со своей логикой и программным обеспечением, а следовательно, со своими фичами и секретами. В этой статье мы попробуем разобраться, что собой представляет современный жесткий диск, а также попытаемся расширить его стандартные возможности для своих хакерских целей.

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

Электроника HDD

Конструкция винчестера в какой-то степени наверняка известна каждому. По сути, это несколько пластин, которые вращаются со скоростью 15 000 об/мин, устройство позиционирования и блок управляющей электроники. Добавим к этому систему самоконтроля S.M.A.R.T. и другие интеллектуальные атрибуты. Короче, без пол-литра не разберешься, тем более технология отдельных элементов составляет коммерческую тайну.

Высокой точности позиционирования, плотности записи и прочим тонкостям современных HDD можно посвятить не один десяток статей, но мы, не углубляясь в механику диска и физику процессов, рассмотрим наиболее интересную для нас часть — электронику.

Рис. 1. Плата жесткого диска

Рис. 1. Плата жесткого диска

В старых моделях жестких дисков часть функций управляющей электроники брал на себя MFM- или RLL-контроллер компьютера. Но со временем из-за высокой скорости передачи данных потребовалось сократить тракт передачи данных, и разработчики отказались от этой идеи.

Пациент

Итак, перед нами плата типичного жесткого диска Western Digital WD5000AAKX объемом в 500 Гб (рис. 1). Что мы имеем:

  1. Микросхема DRAM. Интереса как такового не представляет, мануал легко можно найти в Сети. Память этих чипов колеблется от 8 до 64 Мб и соответствуют размеру кеша жесткого диска.
  2. Контроллер двигателя шпинделя. Отвечает за управление механикой, регулирует мощность и имеет некоторые аналоговые/цифровые каналы. На чип Smooth L7251 3.1 мануалы отсутствуют, но можно попробовать поискать похожие микросхемы.
  3. Флеш-память. На некоторых винчестерах микросхема отсутствует, но флеш-память бывает встроена в чип контроллера диска. Обычно имеет размер в пределах от 64 до 256 Кб. Используется для хранения программы, от которой загружается контроллер жесткого диска.
  4. И самая любопытная для нас вещь — контроллер жесткого диска. Их производят компании Marvell, ST, LSI и другие. Некоторые компании, производящие винчестеры, делают свои собственные контроллеры, как, например, Samsung и Western Digital.

Контроллер жесткого диска предназначен для управления операциями преобразования и обмена данными от головок чтения/записи к интерфейсу накопителя. К сожалению, компания Marvell не хочет выкладывать документацию на свою продукцию в открытый доступ. Ну что ж, попробуем разобраться сами.

Копнем глубже

Наш зарубежный коллега Джероен «Sprite_tm» Домбург нашел интересный выход из данной ситуации — для исследования контроллера он использовал интерфейс JTAG (от англ. Joint Test Action Group). Этот интерфейс предназначен для тестирования и отладки печатных плат. То есть с помощью JTAG мы можем спокойно подключиться к интересующему нас устройству, поддерживающему стандарт IEEE 1149. В микросхему интегрируется порт тестирования (TAP — Test Access Port), состоящий из четырех или пяти выводов: TDI, TDO, TMS, TCK и, возможно, TRST. Расположение этих выводов для контроллера Marvell нашел некий dex, любезно поделившийся результатами на форуме HDDGURU.

Джероен выяснил, что у контроллеров Western Digital есть ARM-ядро, доступное через JTAG-порт. А также последовательный порт, который обычно не используется, но может быть полезен для наших целей.

Для исследования контроллера жесткого диска использовалась плата FT2232H, которую можно заказать в интернете за 30 евро. Она поддерживает JTAG, связь через последовательный порт, а также SPI. Для работы с ней использовалась программа OpenOCD.

В результате оказалось, что у микросхемы есть целых три ядра. Два Feroceon, которые являются довольно сильными ARM9-подобными ядрами, и Cortex-M3, которое немного слабее. У всех ядер разное предназначение:

  • Feroceon 1 обрабатывает физические чтение/запись на жесткий диск;
  • Feroceon 2 -обрабатывает SATA-интерфейс, кеш и преобразует LBA в CHS;
  • Cortex-M3 — предназначение неизвестно. Можно просто остановить его, но жесткий диск будет продолжать работать.

Так как мы ставили перед собой цель использовать жесткий диск для своих коварных целей, то самое время подумать о модернизации его прошивки. Самый простой и, вероятно, сложный в обнаружении способ — изменять данные на лету. Чтобы сделать это, нужно найти подходящее ядро — ядро, которое имеет доступ к данным, путешествующим между диском и SATA-кабелем.

Для доступа к ядру можно использовать режим DMA (Direct Memory Access). Это такой режим, когда обмен данных происходит непосредственно с головки считывания в память, без активного участия процессора. То же самое относится и к SATA-порту: процессору нужно только указать, где данные, и логика DMA позаботится о чтении информации непосредственно из памяти.

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

Способ довольно сложный — неудобно каждый раз подключаться через JTAG и ковыряться в кеше во время работы жесткого диска. Вместо этого для сохранения доступа без подключения дополнительной платы можно перепрошить микросхему флеш-памяти, выпаяв и подключив к программатору.

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

В результате своего исследования Джероен создал инструмент fwtool, который может сбрасывать различные блоки во флеше и переводить код в текстовый файл. Затем можно изменить, удалить или добавить блок и вновь собрать все в одном файле прошивки, который потом спокойно загрузить во флеш.

Меняем прошивку

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

У компании Western Digital есть специальные программные утилиты для работы с жестким диском — это инструменты, работающие под DOS, которые могут загрузить новую прошивку контроллера, микросхемы флеш-памяти или сервисного раздела. Инструменты используют так называемые Vendor Specific Commands (VSC), впрочем, об этом чуть позже.

Также есть набор инструментов под названием idle3-tools, которые можно взять на вооружение для модификации прошивки жесткого диска. Он также использует VSC, применяя Linux SCSI PassThrough IOCTLs. Джероен взял этот код, изменил его и интегрировал в fwtool. После этой модификации fwtool научился читать и писать на микросхему флеш-памяти.

Теперь если хакер каким-то образом сможет воспользоваться fwtool на удаленной машине, то получит возможность сбросить флеш-память диска, изменить ее и «зашить» обратно. Правда, в конце концов владелец узнает о взломе и, вероятно, переустановит систему, но злоумышленник может внедрить что-нибудь, что проявит себя и после переустановки. Например, подождать, пока машина зачитывает из файла /etc/shadow/ , где хранятся все пароли в системах UNIX/Linux, и изменить содержимое. После чего можно будет просто войти под своим паролем.

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

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

Терминальный режим жесткого диска

При работе в терминальном режиме пользователь может взаимодействовать с жестким диском посредством диагностических команд. Этот метод применяется для диагностики и ремонта накопителей Seagate и Toshiba, в Western Digital такая возможность отсутствует из-за сложности подключения. Терминальный режим фактически предоставляет полный root — управление механикой и логикой устройства. С его помощью можно также обновить или перезагрузить прошивку винчестера. Список команд для большинства накопителей можно посмотреть в интернете. А на плате жесткого диска имеется специальный разъем для подключения через последовательный порт.

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

Для доступа в терминальный режим понадобится устройство-адаптер, необходимое для преобразования уровней сигналов RS-232 в уровни TTL (такие адаптеры имеются в продаже, но можно собрать и самому — все необходимые схемы находятся в свободном доступе, а в качестве основы можно взять некоторые модели Arduino). Мы же возьмем готовый чип FTDI, который преобразует USB в последовательный интерфейс для микроконтроллера Atmega. Нужно соединить GND и RESET, а для подключения использовать контакты RX и TX.

Рис. 3. Arduino Nano в качестве адаптера

Рис. 3. Arduino Nano в качестве адаптера

Для работы с COM-портом используем любую понравившуюся программу — например, PuTTY или Hiperterminal. Выбираем тип подключения, вводим номер COM-порта и другие настройки:

Рис. 4. Окно настроек PuTTY

Рис. 4. Окно настроек PuTTY

Для проверки работоспособности схемы нужно замкнуть RX и TX между собой. В результате все набираемые символы отобразятся в двойном количестве. Это происходит из-за того, что введенные данные будут передаваться по линии TX, а затем они же вернутся по линии RX. Делается это так: отключив SATA-кабель, соединяем выход TX диска с входом RX адаптера, и наоборот — RX адаптера с TX диска. Подключаем питание. После нажатия клавиш <Ctrl + Z> , получаем приглашение Т> (или F> для неисправных HDD) и вводим команды. Для получения списка команд вводим /C , а затем Q.

Из-за большого количества команд инженеры Seagate разделили их структуру на уровни. Такие команды, как чтение, запись, поиск, лог ошибок, доступны сразу на нескольких различных уровнях. Чтобы переключить жесткий диск для работы на другом уровне, надо воспользоваться командой /x .

Рис. 5. Обнуление S.M.A.R.T.

Рис. 5. Обнуление S.M.A.R.T.

Кроме этих девяти уровней, есть еще два дополнительных набора команд: сетевые и общие. Основной целью сетевых команд является отображение изменения текущего состояния системы. Общие команды используются для доступа к регистрам, буферной памяти и данным.

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

Запись информации в сервисные разделы HDD

В любом жестком диске присутствуют сервисные разделы. Они предназначены для хранения служебных программ винчестера, таких как S.M.A.R.T., модули раннего обнаружения ошибок, модули самодиагностики и так далее. К счастью, все эти данные не занимают выделенное место полностью, а значит, при правильном подходе мы можем использовать это бонусное пространство. Сервисные разделы не следует путать с DCO или HPA, которые могут быть легко обнаружены и доступны через стандартные ATA-команды.

В отличие от остальных методов скрытия информации запись в сервисный раздел не оставляет за собой никаких следов и незаметна для специальных программ поиска, которыми пользуются правоохранительные органы. Одним словом, это место идеально подойдет для хранения текстовых файлов с адресами, паролями, явками и прочего.

Для доступа к информации из сервисных разделов не подойдут стандартные ATA-команды, вместо этого для записи и чтения используются специальные команды VSC (Vendor Specific Commands). Как правило, производители держат в секрете эти команды, но порой выпускают утилиты для работы с сервисными разделами — например, программа wdidle3.exe от компании Western Digital и ее опенсорсный аналог idle3-tools. Еще один пример для WD — программа HDDHackr, меняющая записи в системных разделах HD.

WARNING

Данные в сервисных разделах очень важны для правильной работы винчестера. Повреждение записанной информации ведет к потере работоспособности диска. Восстановить ее будет не так уж и просто — для перезаписи данных в сервисных разделах понадобятся специализированные программы (например, Ace Laboratory PC3000).

Объем сервисного раздела зависит от модели винчестера. Например, в диске WD2500KS-00MJB0 семейства Hawk объемом 250 Гб (прошивка 02AEC) в сервисный раздел записывается две копии файлов, около 6 Мб каждая. Размер зоны на каждой поверхности составляет около 23 Mб (64 трека по 720 секторов на каждом). Поскольку этот диск имеет шесть поверхностей (головки от 0 до 5), модули сервисных разделов располагаются на месте, сопоставленном с головками 0 и 1, а место, закрепленное за головками со 2 по 5, зарезервировано, но не используется. Таким образом, зарезервированный раздел занимает около 141 Мб, из которых 12 Мб находится в использовании.

Для сравнения: модель WD10EACS-00ZJB0, емкостью в терабайт и с восемью поверхностями, имеет зарезервированное пространство 450 Мб, из которых занято 52 Мб. Ариэль Беркман (Ariel Berkman) из компании Recover Information Technologies LTD написал статью о работе с сервисными отделами HDD, а также выложил PoC-код для записи 94 Мб информации в сервисный отдел диска Western Digital 250GB Hawk. Делается это следующим образом:

  • Узнаем свой SATA IO адрес, используя lspci -v .
  • Для компиляции используем команду gcc -Wall -O -g -o SA-cover-poc SA-cover-poc.c .
  • Создаем рандомный файл (94 Мб в размере) и вычисляем его MD5-хеш.
  • Записываем файл в сервисный раздел.
  • Очищаем винчестер с помощью команды dd-ing /dev/zero , которую следует распространить на весь жесткий диск (или на отдельную часть, предварительно заблокировав доступ к остальному). Достаточно один раз прогнать этот код, чтобы уничтожить данные безвозвратно.
  • Читаем содержимое сервисного раздела, вычисляем его хеш и убеждаемся в целостности данных.

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

Программы для восстановления HDD

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

  1. TestDisk — самая простая и эффективная программа для восстановления HDD. Предназначена для поиска и реконструкции потерянных разделов, загрузочного сектора, удаленных файлов; исправляет таблицу разделов. Работает с большим количеством файловых систем. Работает в консольном режиме, чем достигается высокая скорость.
  2. Acronis Disk Director — целый программный пакет, в который включено немалое количество инструментов для работы с HDD. Содержит в себе утилиту Acronis Recovery Expert, которая служит для реконструкции файлов и разделов. В отличие от предыдущей программы имеет графический интерфейс, но работает с меньшим количеством файловых систем.
  3. Paragon Partition Manager — бесплатная программа от отечественных разработчиков, умеет почти все то же самое, что и Acronis, но ужасно медленная.

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

Заключение

Однако настало время закругляться. В этой статье я попытался показать неизведанные уголки и возможности жесткого диска. Не углубляясь в код, мы рассмотрели способ слива информации с накопителя. Если даже слегка приподнять этот занавес, открывается огромное поле для полета фантазии. Можно, например, перепрошить контроллер, чтобы скрыть от посторонних глаз особо важный раздел. Или портить данные при попытке клонировать жесткий диск, обезопасив себя таким образом от криминалистических утилит. Одним словом, вариантов много, так что каким образом использовать жесткий диск — выбор за тобой.

Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…

Начав прислушиваться, вы периодически улавливаете звук электродвигателя, такой, как у разгоняющегося электромобиля. Может быть оставить все как есть и не трогать, наверное это предусмотрено производителем? Эту прекрасную мысль, полезную во многих других ситуациях, полностью отобьет запуск любой игры или фильма. Периодическое зависание изображения на 2-3 секунды станет вашей головной болью и кошмаром на несколько ближайших дней.

В очередной такой «зависон» вы обратите внимание, что ему будет предшествовать щелчок, а в момент зависания услышите тот самый звук электродвигателя. И, немного разбираясь в компьютерном железе, вы зайдете в google с вопросом: «Жесткий диск не дает жить, что делать».

Все дело в APM (Advanced Power Management)

Если серьезно, проблема далеко не нова, но даже недавно я видел на хабре комментарии, где люди просили помощь по данному вопросу. Здесь речь идет о дисках WD и реализации функции APM в них, но думаю у других производителей будет та же причина. При беглом поиске google нам любезно предлагает утилиту wdidle3. Проблема лишь в том, что это DOS программа требующая создания загрузочной флешки. И, например, для моего диска она не помогла.

Решение, которое я предлагаю особенно полезно, если у вас в качестве основного накопителя установлен SSD, а HDD используется в качестве доп. накопителя. В обычном режиме он будет использовать свое стандартное поведение и отключаться через 8 секунд бездействия, не беспокоя вас своим шумом и не потребляя заряд батареи. При желании сыграть в игру или поработать с жесткого диска, вы нажимаете одну кнопку и он не паркуется заложенное в энергоплане Windows время (20 минут по дефолту). Утилита wdidle не даст вам такого выбора.

Используем HDDScan

Собственно к делу. Программа которую мы будем использовать называется HDDScan. Причем версии старше 3.2 у меня работали не совсем корректно, поэтому рекомендую остановиться на ней.

Скачиваем эту портабельную программу и распаковываем в удобное для нас место. Запускаем, и если дисков больше одного, слева выбираем наш HDD. Далее нажимаем «большую синюю кнопку» по центру и выбираем пункт «Build Command Line».

image

В открывшемся окне проделываем следующую процедуру: напротив раздела «Advanced Power Managment» выбираем Disable, нажимаем Save, и сохраняем bat-файл. Назовем его, к примеру, «Disable_HDD_APM.bat». Аналогично выбираем Enable и сохраняем еще один батник.

image

В результате у нас появляются два bat-файла примерно одинакового содержания:

На этом можно было бы и закончить, эти файлы позволяют отключать функцию APM передавая контроль над временем парковки Windows, и соответственно, включить для возврата исходного поведения. Но, во первых это не очень красиво и удобно, во вторых будет вызываться запрос UAC при запуске bat-файла. Для преодоления этих неудобств предлагаю воспользоваться Планировщиком Windows.

Обходим UAC

Запускаем (если что, вводим в пуске «планировщик» чтобы его найти), и создаем задачу.

image

Для начала отключение APM. Даем осмысленное имя, и главное не забываем выставить выполнение с наивысшими правами. Переходим на вкладку Действия, нажимаем Создать. Здесь указываем путь к нашей программе HDDScan, а в «добавить аргументы», все что идет в батнике после пути к программе. К примеру:


image

И довершающий шаг, на вкладке Условия убираем галочку напротив «Запускать только при питании от электросети». Теперь OK.

image

Фух, создаем вторую задачу, и заполняем аналогично для включения APM (только используем аргумент из второго батника). В результате у нас в планировщике должно стать на две задачи больше, запоминаем их имена. Bat-файлы нам больше не понадобятся, можно будет от них избавиться. Последний этап наших изысканий это создание ярлыков на задачи планировщика.

Делаем красиво

Тут все просто, в укромном месте ПКМ -> Создать -> Ярлык. На предложение пути, вводим следующее:


image

Создаем ярлык сначала для одной, потом для второй задачи. Получаем два ярлычка, которые кладем в надежное место, и, например, кидаем на панель задач. Для красоты можно применить к ним соответствующие иконки.

Хотелось бы, чтобы несистемный диск (WD5000AAKX) на десктопном компьютере отключался после отсутствия обращений к нему через 5 минут.
Раньше это делал с помощью gnome-power-manager, потом через mate-power-manager, потом xfce4-power-manager. В общем, выбирал легкий путь. В настоящее время в меню управления питанием в Cinnamon такая настройка отсутствует (хотя в этом же дистрибутиве, установленнм на thinkpad такая настройка есть).
Что я делал:

не помогло
ЧЯДНТ?
1. Как автоматически останавливать диск через 5 минут после последнего обращения?
2. Просто интересно, почему в настройках cinnamon на десктопе отсутствуют настройки остановки hdd, а в том же дистрибе на thinkpad x220 они есть? Что такого было установлено на thinkpad, чего нет на desktop?


Что я делал: >hdparm -B 128 -S 60 /dev/sdb
не помогло. >hdparm -B 128 /dev/sda

Ты хоть в курсе, как диск называется?

Да, это опечатка. В терминале делал /dev/sdb

добавлю еще:
в ответ на первую из команд выдается вот что:

Шпиндель не жалко?

Что я делал: >hdparm -B 128 -S 60 /dev/sdb
не помогло. >hdparm -B 128 /dev/sda

Тут где-то на форуме были темы как посмотреть что дергает диск. У себя за этим занятием ловил то-ли udev (хотя врядли) то-ли udisks. Вобщем что-то обращается диску и просто не успевает пройти 5 минут после последнего обращения. Вот и не засыпает. И, да лучше поставить минут 20, а то будут глюки, когда каждую 5 минуту засыпает, а каждую шестую просыпается. и кирдык маторчику..

мне важнее понять: пока что понятные менеджеры питания видел в gnome и xfce. А как же все остальные, у кого всякие там awesome, lxde и прочее? Как там надежно управлять дисками?

У меня ничего не дергает диск. Это диск с данными, он нужен далеко не каждый раз. Вот в данный момент, когда пишу это, gnome-power-manager(я вернулся на mate) выключил его с характерным звуком выключения hdd. ТАкой же звук у меня был и в винде, когда происходило включение или остановка hdd по необходимости.

Поставить и настроить smartd с оповещением на E-mail? Мне, честно говоря, непонятно, зачем останавливать НЖМД, обычно этим страдают любители SSD, у которых ресурс для перезаписи существенно ограничен по сравнению с НЖМД. Жёсткому диску лучше работать круглосуточно, чем выключать его каждые пять минут. Ресурс количества старт-стопов тоже имеет свой порог в SMART, так на заметку.


Как автоматически останавливать диск через 5 минут после последнего обращения?

Никогда так не делай.

Мне, честно говоря, непонятно, зачем останавливать НЖМД
Жёсткому диску лучше работать круглосуточно

2 причины вопроса: первая - этот диск нужен вообще не каждые сутки. Бывает нужен, а бывает и нет. То, что я хочу - заложено в любой power-manager, например, в gnome-power-manager. второе - понять на будущее, если хотите - то просто ради эксперимента.

Как там надежно управлять дисками?

Всякие laptop-mode-tools которые юзают hdparm

Что я делал: >hdparm -B 128 -S 60 /dev/sdb
не помогло. >hdparm -B 128 /dev/sda

Давай я тебе вслух почитаю man hdparm

-B Get/set Advanced Power Management feature, if the drive supports it. A low value means aggressive power management and a high value means better performance. Possible settings range from values 1 through 127 (which permit spin-down), and values 128 through 254 (which do not permit spin-down). The highest degree of power management is attained with a setting of 1, and the highest I/O performance with a setting of 254. A value of 255 tells hdparm to disable Advanced Power Management altogether on the drive (not all drives support disabling it, but most do).

Строго говоря как будит вести себя диск при определенных значения hdparm -B зависит от производителя диска. Гдето в сети точно лежит pdf'ка на твой диск, где это описано.

выключил его с характерным звуком выключения hdd

.. разумеется вместо /dev/sdb - твой диск. Попробуй запустить в кроне - вернее чем на слух.

Столкнулся в 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 это консольная утилита, т.е. программа работающая в режиме командной строки. У неё нет графического интерфейса, мы будет запускать её вручную из командного файла (батника). Для автоматического применения новых параметров мы добавим командный 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». Вторая часть первой строчки:

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

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

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\
mountvol F: \\?\Volume\

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

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

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

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

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

Читайте также: