Спіть на жорсткому диску і прокидайтеся лише при необхідності


10

Я хочу підключити ще один жорсткий диск до комп'ютера, на якому я хочу спати 99% часу. Я буду використовувати його лише для кількох речей, але мені потрібно, щоб він монтувався постійно.

Для цього я хотів би знати:

  1. Як зареєструвати, які процеси отримують доступ до пристрою? Мені потрібна реєстрація, щоб я міг сказати, що викликає пробудження жорсткого диска, якщо він трапиться, тож я можу діяти на ньому.
  2. Чи потрібні спеціальні налаштування ядра, щоб пристрій міг спати довше?
  3. Як встановити інтервали сну на жорсткому диску?

Відповіді:


13

Інтервал сну називається "APM" (Автоматичне управління живленням) і spindown_time. Це контролюється hdparmтак:

hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD

Це змусить ваш жорсткий диск повернутися до ~ 3 хв бездіяльності.


4

Під час роботи з Linux ви можете використовувати нову fatraceутиліту, яка записує кожен доступ до файлу та повідомляє, який процес відповідає:

https://launchpad.net/fatrace

Більше інформації тут:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

Він використовує API fanotify linux ( детальніше ), доступний з ядра Linux 2.6.37.

fatrace Не упакований усіма дистрибутивами станом на липень 2014 року (він нещодавно увійшов до тестування debian, тому він повинен надходити у "jessie"), але його легко встановити з джерела.


1
Я не знаю, що ви маєте на увазі під "більшістю" розподілів. Як завжди, Debian - це останній дистрибутив, щоб отримати щось. У мене він був доступний у Fedora досить довгий час ...
Майкл Хемптон,

3

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)


Дякуємо за вашу інформативну відповідь! Схоже, що fuser підказує мені, які процеси використовують файл, сокет файлової системи та інстанцію видачі команди. Хоча це дуже корисно, якщо процес робить щось швидке, як-от перелік вмісту кореневого каталогу пристрою, я можу пропустити його, навіть якщо у мене працює фюзер. Якби щось чекало і записувало всю діяльність, поки я не скажу йому припинитися, це було б ще корисніше в цій ситуації. Чи знаєте ви когось?
Вилучено

Я думаю, що hdparam - це те, що я буду використовувати для налаштування часу очікування перед сном? І sg3_utils - це просто потужний інструмент, але я не буду його використовувати в цьому випадку? (Як я думаю, мені не доведеться вказувати вручну, коли жорсткий диск повинен спати після його налаштування за допомогою hdparam?)
Видалено

3

btraceабо blktrace(обгортка btrace) блоку введення-виводу ядра треку і може допомогти вам у цьому.


2

lsof +D /path/to/mount повинен показати вам кожен процес, який має будь-який відкритий файл у вказаному шляху.


0

У мене є подібне питання. У мене є SSD, /dev/sdbз ОС (Linux Mint 18.1 на базі Ubuntu Xenial) і HDD /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автоматично почнеться, коли я, наприклад, відкрию програму Disks , тому мені доведеться її знову зупинити. Ще одним недоліком є ​​те, що параметри SMART не контролюються для обох дисків, що не є добре, але як обхідне рішення воно підходить.

Крім того, одне, що незрозуміло, - це те, що в цьому звіті про помилку йдеться про те, що udisks2він не виконує опитування дисків, що зараз робиться ядром. Але докази, схоже, свідчать про протилежне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.