docs: create sysadmin/Linux/analize-and-test/analize-disk
parent
5d105ad9f3
commit
4c96585ef1
|
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
title: Анализ дисковой активности в Linux
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-15T17:57:25.992Z
|
||||||
|
tags:
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2023-11-15T17:57:25.992Z
|
||||||
|
---
|
||||||
|
|
||||||
|
Расскажу кратко, с помощью каких консольных инструментов можно всесторонне рассмотреть дисковую активность на сервере под управлением Linux.
|
||||||
|
|
||||||
|
Начнём издалека и посмотрим общую дисковую активность отдельного устройства. Для этого можно воспользоваться утилитой btrace из пакета blktrace (есть в стандартных репах)
|
||||||
|
`btrace -w 60 -a write /dev/mapper/rhel-root`
|
||||||
|
|
||||||
|
В течении 60 секунд утилита будет анализировать дисковую активность процессов и потоков ядра. В завершении покажет сводную статистику.
|
||||||
|
|
||||||
|
Наглядный вывод статистики по дисковым устройствам в режиме реального времени есть у iostat из пакета sysstat (есть в репозиториях). Я предпочитаю вот такое отображение с использованием watch:
|
||||||
|
`watch -n 1 iostat -xk`
|
||||||
|
|
||||||
|
Более детально в режиме реального времени нагрузку на диск отдельных приложений можно посмотреть с помощью iotop (есть в репозиториях). Простой запуск без параметров похож на обычный top, только про диски. Более наглядную информацию можно получить, запустив iotop с ключами:
|
||||||
|
`iotop -obPat`
|
||||||
|
|
||||||
|
Ещё один вариант отображения активности процессов в режиме реального времени - pidstat. Она тоже из пакета sysstat. Запускаем с обновлением раз в секунду:
|
||||||
|
`pidstat -d 1`
|
||||||
|
|
||||||
|
Видим активность всех процессов. Можем конкретизировать, указав один из них по его pid:
|
||||||
|
`pidstat -p PID -d 1`
|
||||||
|
|
||||||
|
|
||||||
|
Двигаемся дальше и смотрим, в какие файлы производится запись с помощью fatrace (в deb дистрибутивах есть в репозиториях). Проверка очень простая и быстрая через анализ обращений к inotify.
|
||||||
|
`fatrace -f W`
|
||||||
|
|
||||||
|
Можно записать всю файловую активность в лог файл и потом спокойно посмотреть:
|
||||||
|
`fatrace -t -s 60 -o ~/fatrace.log`
|
||||||
|
|
||||||
|
|
||||||
|
Более детально разобраться с тем, что пишет процесс на диск можно с помощью strace, указав ему в качестве параметра PID процесса:
|
||||||
|
`strace -e trace=write -p PID`
|
||||||
|
|
||||||
|
|
||||||
|
Напомню, что PID процесса или процессов можно узнать, например, вот так:
|
||||||
|
`pgrep mariadb`
|
||||||
|
|
||||||
|
или так:
|
||||||
|
`ps ax | grep mariadb`
|
||||||
|
|
||||||
|
|
||||||
|
Смотрим список открытых файлов в конкретной директории с помощью lsof:
|
||||||
|
`lsof +D /var/log`
|
||||||
|
|
||||||
|
|
||||||
|
Приведённых стандартных инструментов достаточно, чтобы провести основной анализ. Я перечислю ещё несколько удобных инструментов, но их скорее всего придётся ставить вручную, минуя пакетный менеджер, что не очень удобно.
|
||||||
|
◽️ утилита iosnoop из пакета perf-tools (https://github.com/brendangregg/perf-tools), показывает много полезной информации, в том числе latency, чего не делают перечисленные выше утилиты
|
||||||
|
◽️ утилита biosnoop из пакета BPF Tools (https://github.com/iovisor/bcc), показывает активность процессов, в том числе используемые сектора дисков и latency, в этом же пакете к дискам имеют отношения утилиты: biolatency, biotop, bitesize, ext4slower и подобные для других файловых систем.
|
||||||
Loading…
Reference in New Issue