Как отследить постоянный доступ к диску на Linux
У меня есть машина, на которой запущено несколько сервисов, но я не верю, что они ответственны за иногда тяжелый доступ к диску на этом сервере (сильное движение головы, которое я слышу, после долгих периодов почти бездействия)
Как я могу узнать, какой процесс что-то делает на жестком диске, когда снова наступает такой период?
Я думал о том, чтобы использовать команду linux "lsof", но у нее огромный вывод и параметры, поэтому я ничего не вижу.
Можете ли вы вести меня, как бы я
- показать только доступ к жесткому диску
- это действительно физически в настоящее время происходит (не буферизированные или только открытые файлы, фактически физическое чтение или запись)
- возможно сортировать или фильтровать по пользователю или процессу
Было бы здорово, если бы вы могли продемонстрировать некоторые полезные опции lsof для такого случая. Спасибо.
Редактировать Спасибо за все ответы. Это намного больше, чем я ожидал, и я проголосовал за все ответы (до сегодняшнего дня)
7 ответов
Попробуйте посмотреть на " iotop". Это даст вам именно то, что вам нужно, отображение ввода-вывода для каждого процесса, как, например, отображение. Поставляется с большинством современных дистрибутивов Linux
Часто, когда у вас есть система, в которой сервисы / приложения не выполняют много операций ввода-вывода, но вы замечаете большую активность жесткого диска, вы обнаруживаете, что система часто меняется местами.
Эта статья имеет хорошее объяснение того, как это работает:
У меня есть машина, на которой работает несколько служб, но я не верю, что они ответственны за иногда тяжелый доступ к диску на этом сервере
Это случается один раз в день? Если да, возможно, это система, которая проверяет репозитории на наличие обновлений или автоматически устанавливает исправления безопасности, если она настроена таким образом.
Вы можете изменить интервал между проверками и настроить автоматические обновления в Synaptic
Я также согласен с предложениями top
Тип коммунальных услуг. Однако, возможно, вы сможете быстрее найти источник проблемы, если посмотрите на свои задания cron. Проверьте содержимое /etc/cron.*
и посмотрите, есть ли какие-либо задания cron, которые запускают процессы, которые вызывают много дискового ввода-вывода. Это может быть что-то так просто, как updatedb
обновление базы данных locate.
Если серверы разрешают вход пользователя в систему, вы также должны проверить пользовательские crontabs. Они обычно находятся в /var/spool/cron/tabs
,
Часы top
какое-то время. Программы, связанные с IO, обычно застревают в D-состоянии. Так что сортируйте ваш главный вывод по процессору и просто смотрите, какой процесс будет идти к вершине с длительными периодами в D-состоянии.
Если вам не нужны подробности о том, какие файлы доступны, я думаю, вы также можете получить эту информацию, используя top
, Я использую htop
(top
обертка), чтобы контролировать использование ввода / вывода, сортируя выходные данные по разным полям ввода / вывода. Это дает следующие столбцы для просмотра: RCHAR, WCHAR, SYSCR, SYSCW, IO_READ_RATE, IO_WRITE_RATE, IO_RATE
, Посмотри на man top
если это если то, что вам требуется.
Упомянутые инструменты отлично подходят для мониторинга в реальном времени - хороший вопрос, возможно, для нового поста: что может быть использовано в историческом случае:
моя коробка показала всплеск ввода-вывода в 1:00
откуда ты знаешь откуда это взялось?:)