Как узнать, какой процесс регулярно записывает на диск?

42

Как я могу найти, какой процесс постоянно записывает на диск?

Мне нравится, когда моя рабочая станция работает практически бесшумно, и я просто собираю новую систему (P8B75-M + Core i5 3450s - 's', потому что у нее более низкий максимальный TDP) с тихими вентиляторами и т. Д. И установил Debian Wheezy 64-bit в теме.

И что-то действует мне на нервы: я слышу какой-то паттерн, например, если жесткий диск пишет или ищет что-то ( тик ... тик ... тик ... трррррр, полоскать и повторять каждую секунду или около того).

В прошлом у меня была похожая проблема в прошлом (много-много лет назад), и оказалось, что это был какой-то журнал CUPS или что-то в этом роде, и я просто перенаправил этот (не важный) журнал на (реальный) RAM-диск.

Но здесь я не уверен.

Я попробовал следующее:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

но там ничего не меняется.

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

Может ли это быть что-то в ядре / системе, которую я только что установил, или у меня неисправный жесткий диск?

hdparm -tT /dev/sda сообщить правильную скорость HD (130 ГБ / с без кэширования, sata 6 ГБ), и я уже установил и скомпилировал из больших источников (Emacs) без проблем, поэтому я не думаю, что система плохая.

(HD это Seagate Barracude 500GB)

Седрик Мартин
источник
Вы уверены, что этот шум производит жесткий диск, а не что-то еще? (Проверьте вентиляторы, в том числе вентилятор блока питания. Когда-то очень странные шумы щелкали, когда очень тонкий кабель находился слишком близко к вентилятору и иногда очень слегка касался лопастей и отскакивал в течение нескольких «щелчков» ...)
Мат
@Mat: я возьму жесткий диск снаружи корпуса (разъемы должны быть достаточно длинными), чтобы быть уверенным, и я сообщу; )
Седрик Мартин
2
Убедитесь, что ваши дисковые файловые системы смонтированы как по времени, так и по формату. Чтение файлов может быть причиной записи в иноды для записи времени доступа.
Camh

Ответы:

43

Вы пытались проверить, какие программы iotopпоказывает, как? Он точно скажет вам, какой процесс в данный момент записывает на диск.

пример вывода:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
mnmnc
источник
1
спасибо за этот совет. Я не знал о iotop . В Debian я выполнил поиск по apt-cache iotop, чтобы узнать, что мне нужно apt-get iotop . Очень классная команда!
Седрик Мартин
3
Я использую, iotop -o -b -d 10который каждые 10 секунд печатает список процессов, которые читают / записывают на диск, и количество используемой пропускной способности ввода-вывода.
ndemou
15

Вы можете включить отладку ввода-вывода через, echo 1 > /proc/sys/vm/block_dumpа затем посмотреть сообщения отладки в / var / log / syslog . Это имеет преимущество в получении некоторого типа файла журнала с прошлыми действиями, тогда как iotopпоказывает только текущее действие.

SCAI
источник
4
Абсолютно безумно оставлять sysloging включенным, когда block_dump активен. Ведение журнала вызывает активность диска, что приводит к ведению журнала, что приводит к активности диска и т. Д. Лучше остановите системный журнал, прежде чем включать его (и используйте dmesg для чтения сообщений)
dan3
Вы абсолютно правы, хотя эффект не так драматичен, как вы его описали. Если вы просто хотите взглянуть на активность диска, нет необходимости останавливать демон syslog.
Scai
Я попробовал это приблизительно 2 года назад, и это остановило мою машину. На днях, когда у меня не будет ничего важного, я попробую это снова :)
dan3
Я попробовал, на самом деле ничего не произошло. Особенно из-за буферизации файловой системы. Запись в системный журнал не сразу запускает запись на диск.
Scai
1
Я бы предположил, что существует общее ограничение скорости для сообщений журнала, которое также обрабатывает этот случай (?)
Volker Siegel
5

Предполагая, что дисковые шумы возникают из-за процесса, вызывающего запись, а не из-за какой-либо проблемы с вращением диска , вы можете использовать подсистему аудита (установить auditdпакет ). Поставь часы на syncзвонки и своих друзей:

auditctl -S sync -S fsync -S fdatasync -a exit,always

Смотреть журналы в /var/log/audit/audit.log. Будьте осторожны, не делайте этого, если сами журналы аудита сбрасываются! Проверьте, /etc/auditd.confчто flushопция установлена ​​в none.

Если файлы часто сбрасываются, вероятным виновником являются системные журналы. Например, если вы регистрируете неудачные входящие попытки подключения и кто-то проверяет вашу машину, это сгенерирует много записей; это может привести к тому, что диск будет издавать звуки пулеметного типа. С помощью базового демона log sysklogd проверьте /etc/syslog.conf: если имени файла журнала не предшествует -, то этот журнал записывается на диск после каждой записи.

Жиль "ТАК - перестань быть злым"
источник
@StephenKitt Да. Нет. Аскер упомянул Debian, поэтому я изменил его на ссылку на пакет Debian.
Жиль "ТАК - перестань быть злым"
3

Это могут быть ваши диски, автоматически вращающиеся вниз, в наши дни это делают многие накопители потребительского уровня. К сожалению, даже в слегка загруженной системе это приводит к тому, что диски постоянно вращаются, а затем снова вращаются, особенно если вы используете hddtemp или аналогичный инструмент для контроля температуры дисков (большинство дисков тупо не позволяют запрашивать значение температуры SMART без раскручивания диска - безобразно!).

Это не только раздражает, но и может быстрее изнашивать накопители, так как многие накопители имеют ограниченное количество циклов парковки. например, см. https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 для описания проблемы.

Я отключаю i-spindown на всех моих дисках с помощью следующего кода оболочки. Вы можете поместить его в скрипт /etc/rc.boot или в /etc/rc.local или аналогичный.

для диска в / dev / sd? ; делать
  / sbin / hdparm -q -S 0 "$ disk"
сделанный
саз
источник
2
то, что вы не можете запрашивать показания SMART, не раскручивая накопитель, лишает меня дара речи: - / Теперь, очевидно, проблема «замедления» может стать довольно сложной. Относительно отключения замедления: не приведет ли это к быстрому износу HD? Я имею в виду: это никогда не "отдыхает", пока система включена?
Седрик Мартин
IIRC вы можете запросить некоторые значения SMART, не вызывая раскрутки диска, но температура не входит в число тестируемых жестких дисков (включая модели от WD, Seagate, Samsung, Hitachi). Что, конечно, безумие, потому что беспокойство по поводу температуры является одной из причин холостого хода. re: wear: AIUI 1. постоянная скорость меньше износа, чем изменение скорости. 2. приводы должны парковать головки в безопасном месте, и привод рассчитан только на то, чтобы делать это много раз (IIRC до нескольких сотен тысяч - легко превышается, если привод работает на холостом ходу и раскручивается каждые несколько секунд)
cas
Это долгие споры о том, лучше ли оставлять приводы включенными или раскручивать их. Лично я считаю, что лучше оставить их включенными - я выключаю компьютер ночью и когда выхожу на улицу, кроме этого я никогда не выключаю свои диски. Некоторые люди предпочитают выключать их, скажем, ночью, если они оставляют компьютер включенным или если компьютер простаивает в течение длительного времени, и в таких случаях преимущество в том, что их можно отключить на несколько часов, а не оставлять их включенными, является спорным. , Что никогда не бывает хорошо, так это когда жесткий диск постоянно вращается вниз и снова за короткий промежуток времени.
Майкл Джонсон
Обратите также внимание на то, что отключение накопителя после простоя в течение нескольких часов немного глупо, поскольку, если он простаивал в течение нескольких часов, он может быть снова использован в течение часа. В этом случае, было бы лучше, если бы он быстро отключил диск, если он простаивает (например, в течение 10 минут), но также возможно, что диск простаивает в течение нескольких минут, когда кто-то использует компьютер и, вероятно, ему потребуется диск снова скоро.
Майкл Джонсон
Я думал, что это решит мою проблему, поскольку я слышу, как диск издает периодический щелкающий звук (3-4 раза в секунду), как будто он пишет, даже если он не подключен! Но я все еще слышу шум после запуска этой команды. Тревожно, это диск, который я использую для резервного копирования моего внутреннего SSD ...
Майкл
1

Я только что обнаружил, что смарт заставляет внешний USB-диск снова и снова раскручиваться на моем Raspberry Pi. Хотя SMART, как правило, хорошо, я решил снова отключить его, и с тех пор кажется, что нежелательная активность диска прекратилась

JRO
источник
Вы можете настроить умный демон, чтобы он не сканировал USB-диски, большинство хороших дистрибутивов Linux делают это по умолчанию.
lzap
1

Вы можете немного помешать этому. Следует сузить это для большинства.

find / -mount -newer /proc -print

Предоставьте файлы, измененные после загрузки на физическом устройстве системы / files. Знание файлов, вероятно, поможет идентифицировать автора.

user190618
источник
1

Если вам нужно сузить его до точного диска, используйте следующее:

запустите lsblkи найдите номер устройства. В случае ниже это9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

запустить lsof | grep '9,126'с :заменой ,по сравнению с указанным выше номером диска. В моем случае это проявляется как:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

с PID 389162уничтожить этот процесс, используя:

kill -9 389162
Жак МАЛАПРАД
источник
-1

Проблема в том, что система должна сбрасывать данные из дисковых буферов на диск каждые 5 секунд или около того по умолчанию. Таким образом, если диск вращается вниз, у него не будет другого выбора, кроме как снова развернуть его, когда потребуется очистка. Таким образом, проблему на самом деле не избежать, если не отключить спины или функции управления питанием диска hdparm -B 255 /dev/hdax. Это, вероятно, лучший вариант, так как перезапуск так часто может причинить больше вреда, чем просто оставаться постоянно.

Пол Рейнольдс
источник
1
Он будет сбрасывать данные только при наличии данных для сброса. Если диск действительно не используется, тогда не будет никаких буферизованных данных для очистки.
Майкл Джонсон