Анализ дисковой активности в Linux

Анализ дисковой активности в Linux

Расскажу кратко, с помощью каких консольных инструментов можно всесторонне рассмотреть дисковую активность на сервере под управлением Linux.

Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.

Начнём издалека и посмотрим общую дисковую активность отдельного устройства. Для этого можно воспользоваться утилитой btrace из пакета blktrace (есть в стандартных репах)

# btrace -w 60 -a write /dev/sda

В течении 60 секунд утилита будет анализировать дисковую активность процессов и потоков ядра. В завершении покажет сводную статистику.

btrace

Наглядный вывод статистики по дисковым устройствам в режиме реального времени есть у iostat из пакета sysstat (есть в репозиториях). Я предпочитаю вот такое отображение с использованием watch:

# watch -n 1 iostat -xk

iostat

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

# iotop -obPat

iotop

Ещё один вариант отображения активности процессов в режиме реального времени — pidstat. Она тоже из пакета sysstat. Запускаем с обновлением раз в секунду:

# pidstat -d 1

Видим активность всех процессов. Можем конкретизировать, указав один из них по его pid:

# pidstat -p PID -d 1

Двигаемся дальше и смотрим, в какие файлы производится запись с помощью fatrace (в deb дистрибутивах есть в репозиториях). Проверка очень простая и быстрая через анализ обращений к inotify.

# fatrace -f W

fatrace

Можно записать всю файловую активность в лог файл и потом спокойно посмотреть:

# fatrace -t -s 60 -o ~/fatrace.log

Более детально разобраться с тем, что пишет процесс на диск можно с помощью strace, указав ему в качестве параметра PID процесса:

# strace -e trace=write -p PID

strace

Напомню, что PID процесса или процессов можно узнать, например, вот так:

# pgrep mariadb

или так:

# ps ax | grep mariadb

Смотрим список открытых файлов в конкретной директории с помощью lsof:

# lsof +D /var/log

lsof

Приведённых стандартных инструментов достаточно, чтобы провести основной анализ. Я перечислю ещё несколько удобных инструментов, но их скорее всего придётся ставить вручную, минуя пакетный менеджер, что не очень удобно.

Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.
  • утилита iosnoop из пакета perf-tools, показывает много полезной информации, в том числе latency, чего не делают перечисленные выше утилиты
  • утилита biosnoop из пакета BPF Tools, показывает активность процессов, в том числе используемые сектора дисков и latency, в этом же пакете к дискам имеют отношения утилиты: biolatency, biotop, bitesize, ext4slower и подобные для других файловых систем.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Qiziqarli malumotlar
Анализ дисковой активности в Linux