Бывает неприятная ситуация: диск постоянно нагружен чтением, latency растет, сервисы подтормаживают, а по iotop, pidstat и lsof - тишина. Никакой очевидный процесс диск не ест, но I/O живет своей жизнью. В таких случаях на помощь приходит
blktrace.blktrace работает на уровне блочного устройства, а не процессов. Он показывает реальные операции чтения и записи, которые уходят в диск: кто, куда и с какими смещениями обращается. Это особенно полезно, когда:чтение идет из page cache/readahead,
нагрузка создается kernel-потоками,
виноват не процесс, а ФС, LVM, RAID, snapshot или backup-агент.
▪️ Устанавливается просто:
apt install blktrace
▪️ Запускаем трассировку, например, для диска sda:
blktrace -d /dev/sda -o /tmp/trace
Даем системе поработать 10–30 секунд и останавливаем. Далее анализируем:
blkparse /tmp/trace.* | less
В выводе видно:
тип операции (Read/Write),
сектор и размер,
PID и имя процесса (если применимо),
временные метки.
Если нужен быстрый срез, кто больше всего читает:
blkparse /tmp/trace.* | grep " R " | awk '{print $6}' | sort | uniq -c | sort -nr | head
▪️ Для наглядности можно использовать btt (Block Tracing Tool):
btt -i /tmp/trace.*
Он строит статистику задержек и нагрузки по времени, удобно, когда ищете периодическую активность.
⚠️ Важно: blktrace - тяжелый инструмент. Не держите его включенным долго, особенно на проде. Но как инструмент расследования - это один из самых точных.
#linux #storage
🧑💻 NetworkAdmin