From 4c96585ef16aca64a7f71982c830301159b17f69 Mon Sep 17 00:00:00 2001 From: Administrator Date: Wed, 15 Nov 2023 17:57:32 +0000 Subject: [PATCH] docs: create sysadmin/Linux/analize-and-test/analize-disk --- .../Linux/analize-and-test/analize-disk.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sysadmin/Linux/analize-and-test/analize-disk.md diff --git a/sysadmin/Linux/analize-and-test/analize-disk.md b/sysadmin/Linux/analize-and-test/analize-disk.md new file mode 100644 index 0000000..40cddf0 --- /dev/null +++ b/sysadmin/Linux/analize-and-test/analize-disk.md @@ -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 и подобные для других файловых систем. \ No newline at end of file