Я хочу подключить к своему компьютеру еще один жесткий диск, который я хочу спать 99% времени. Я буду использовать его только для нескольких вещей, но мне нужно, чтобы он всегда был установлен.
Для этого я хотел бы знать:
Интервал сна называется «APM» (автоматическое управление питанием) и spindown_time. Это контролируется hdparm
как это:
hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD
Это заставит ваш жесткий диск останавливаться на ~ 3 минуты бездействия.
Поскольку вы работаете в Linux, вы можете использовать новый fatrace
утилита, которая регистрирует каждый доступ к файлу и сообщает вам, какой процесс за это отвечает:
Больше информации здесь:
http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/
Он использует linux fanotify API (подробнее) доступно начиная с ядра Linux 2.6.37.
fatrace
не входит в пакет всех дистрибутивов по состоянию на июль 2014 года (недавно он входил в состав тестирования debian, поэтому должен поставляться в составе «jessie»), но его легко установить из исходного кода.
http://en.wikipedia.org/wiki/Fuser_%28Unix%29 - fuser - это команда UNIX, которая показывает, какие процессы используют указанный файл, файловую систему или сокет.
http://sourceforge.net/projects/hdparm/ - получить / установить параметры диска ATA / SATA под Linux (ищите параметр -S)
http://sg.danny.cz/sg/sg3_utils.html - Пакет sg3_utils содержит утилиты, которые отправляют команды SCSI устройствам. А также устройства на транспорте, традиционно связанные с SCSI (ищите sg_start)
btrace
или blktrace
(обертка btrace
) отслеживает ввод-вывод блока ядра и может вам в этом помочь.
lsof +D /path/to/mount
должен показать вам каждый процесс, у которого есть открытый файл по указанному пути.
У меня похожая проблема. У меня SSD, /dev/sdb
, с ОС (Linux Mint 18.1 на базе Ubuntu Xenial) и жестким диском, /dev/sda
, с данными, которые я использую время от времени. Оба диска зашифрованы. Разделы жесткого диска не монтируются. И так или иначе, через несколько минут HDD просыпается, потом засыпает, потом снова просыпается. Беспорядок.
Вот повторяющийся вопрос с полезный ответ, что предполагает auditd
найти процесс плохого поведения.
apt-get install auditd
auditctl -w /dev/sda -p rwa
Затем я заставляю жесткий диск спать с hdparm -Y /dev/sda
. Затем подождите, пока я снова не услышу раскручивание жесткого диска. Тогда беги ausearch -f /dev/sda
. В моем случае он показывает такие записи.
time->Sat Feb 25 12:38:17 2017
type=PROCTITLE msg=audit(1488022697.651:1744): proctitle=2F7573722F6C69622F756469736B73322F756469736B7364002D2D6E6F2D6465627567
type=PATH msg=audit(1488022697.651:1744): item=0 name="/dev/sda" inode=376 dev=00:06 mode=060660 ouid=0 ogid=6 rdev=08:00 nametype=NORMAL
type=CWD msg=audit(1488022697.651:1744): cwd="/"
type=SYSCALL msg=audit(1488022697.651:1744): arch=c000003e syscall=2 success=yes exit=12 a0=f3fb90 a1=800 a2=7f4745221f64 a3=30 items=1 ppid=1 pid=18520 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool" exe="/usr/lib/udisks2/udisksd" key=(null)
Соответствующая часть exe = "/ usr / lib / udisks2 / udisksd". Хотя у меня тоже было smartmontools
чья smartd
также был виновником. Я удалил smartmontools
и остановился udisk2
служба с service udisks2 stop
. После этого HDD спит, как и ожидалось.
Обратите внимание, что udisks2
автоматически запустится, когда я, например, открою Диски приложение, поэтому я должен остановить его снова. Еще одним недостатком является то, что параметры SMART не отслеживаются для обоих дисков, что нехорошо, но в качестве временного решения подходит.
Также неясно, что это отчет об ошибке говорит udisks2
не выполняет опрос дисков, который теперь выполняется ядром. Но доказательства, кажется, говорят об обратном.