Делаем жёсткие диски тихими
HDD имеют тенденцию создавать шум. В 2000-ых годах это было терпимо, ведь жёсткие диски были основным хранилищем данных. ОС и большинство программ располагались на таком диске, и он постоянно находился в “активном режиме”. В результате невозможно было ожидать тишины рядом с системным блоком.
На сегодня твердотельные накопители заняли место основного хранилища. Жёсткие диски в современных настольных ПК иногда вообще не используются. Даже современные корпусы потихоньку теряют возможность установки более одного жёсткого диска формата 3.5”. Прерогативой жёстких дисков стало долгосрочное хранилище, т.е. резервное хранение данных или просто архивирование.
И да, для целей архивирования целесообразно использовать отдельное устройство или даже NAS. В таком устройстве как раз и разместить все жёсткие диски, чтобы не думать о проблемах шума рядом с рабочим местом.
Мне такой вариант не подходит. Старые привычки живы, и я всё ещё храню пару добрых Barracuda в системном блоке. Так мне удобнее получать доступ к архивным данным, нежели путём подключения внешнего устройства. Достаточно кликнуть по диску в Dolphin, и он монтируется в /media/ – это удобно. С технической точки зрения не теряется скорость передачи данных с HDD, т.к. нет промежуточных “бутылочных горлышек” вроде USB.
Очевидный минус – продолжение шума и вибраций от HDD, прямо как в 2000-ых.
Решения для Windows
Для разных ОС подходят разные решения.
В Windows, например, можно настроить время для переведения диска в режим сна. Как только программы перестают работать с данными на диске, он сможет стать бесшумным. К сожалению, это не гарантирует 100% тишины. Некоторые приложения и операции всё равно “дёргают” диски достаточно часто. Я ненавистно смотрю именно на тебя, Gradle…
Ещё можно отключить диск в панели “Управление дисками”. Включение и отключение диска таким образом – не очень удобно, нужно открывать отдельный интерфейс. Но, необходимо признать, такой подход уменьшает количество активаций диска (раскручивания пластин). Такое поведение обусловлено тем, что большинство несистемных приложений не видят отключённые жёсткие диски и поэтому не взаимодействуют.
Настройка в Linux
В Linux есть набор “тонких” инструментов для решения этой задачи.
Для начала нужно узнать, как идентифицировать нужные диски по ID.
$ tree /dev/disk/by-id/
/dev/disk/by-id/
├── ata-ST2000DM008-AAAAA -> ../../sda
├── ata-ST2000DM008-AAAAA-part1 -> ../../sda1
├── ata-ST2000DM008-BBBBB -> ../../sdb
└── ata-ST2000DM008-BBBBB-part1 -> ../../sdb1
1 directory, 4 files
Видим 2 ATA диска с ID AAAAA и BBBBB. Это и есть 2 наших жёстких диска. Часть -part1 просто означает первый раздел на диске и нас не интересует сейчас.
После этого разберёмся с утилитой hdparm. Установим её, если её нет в системе:
$ sudo apt install hdparm
Теперь можем попробовать поместить HDD в режим ожидания (Standby). Для подобного теста нужно, чтобы диск был в активном режиме. Достаточно вывести любой файл с помощью cat, чтобы раскрутить диск. После используем команду hdparm с флагом -Y.
$ sudo hdparm -y \
/dev/disk/by-id/ata-ST2000DM008-AAAAA \
/dev/disk/by-id/ata-ST2000DM008-BBBBB
Диски должны моментально перейти в режим ожидания. Их не должно быть слышно.
Очень важно учесть! Именно lowercase -y переводит в режим Standby. Uppercase флаг -Y переведёт диски в режим сна (Sleep). Если диск в режиме Sleep, то для исполнения некоторых операций он сначала полностью активируется и только затем ответит на запросы. И это не то, что мы ожидаем…
Ещё один полезный флаг – -S. С его помощью можно настроить интервал для автоматического перехода диска в режим ожидания. Интервал начинает отсчитываться после последней IO операции. По сути, -S – базовая автоматизация для -y. Для -S время указывается в необычных единицах. man hdparm и поиск флага -S указывает нам:
Values from 1 to 240 specify multiples of 5 seconds
Для нового теста опять выведем какой-нибудь файл с помощью cat. Затем применим -S с интервалом в 1 минуту (12 единиц * 5 секунд).
$ sudo hdparm -S 12 \
/dev/disk/by-id/ata-ST2000DM008-AAAAA \
/dev/disk/by-id/ata-ST2000DM008-BBBBB
Если Вы не будете использовать диск, то через 1 минуту он перейдёт в режим ожидания.
Это позволяет вручную и полуавтоматически “утихомирить” диски. Одно из очевидных решений – сделать задачку в crontab. Всего-то выполнить sudo crontab -l добавить строчку с @reboot и команды hdparm… Но, благо, hdparm имеет свой конфигурационный файл hdparm.conf. В нём мы и можем зафиксировать нужные параметры для каждого из дисков.
$ sudoedit /etc/hdparm.conf
/dev/disk/by-id/ata-ST2000DM008-AAAAA {
spindown_time = 12
}
/dev/disk/by-id/ata-ST2000DM008-BBBBB {
spindown_time = 12
}
При старте системы будет автоматически установлен интервал перехода в режим ожидания для дисков. Никаких ручных действий больше не понадобится. В моём случае подобная конфигурация позволяет не слышать ни одного включения дисков за целый рабочий день. Стоит отметить – они, конечно, включаются и сразу “раскручиваются” при запуске ПК, но через минуту уже “успокаиваются”.