- Нагрузка на диски в Linux
- IOTOP
- IOSTAT
- Кунг-фу стиля Linux: мониторинг дисковой подсистемы
- Утилита iotop
- Утилита iostat
- Утилита duf
- Вывод сведений об открытых файлах с помощью lsof
- Дополнительный инструмент: atop
- Итоги
- 6 приложений для анализа жесткого диска в Linux
- Командная строка
- Baobab
- KDirStat и GdMap
- Filelight
- Philesight
- xdiskusage
- Мониторинг использования диска linux
- Мониторинг дисков Linux сервера
- Скрипт, осуществляющий мониторинг дисков Linux сервера
Нагрузка на диски в Linux
Для измерения текущей нагрузки на диски (что происходит, кто куда копирует и прочее) в Linux можно использовать iotop (и здесь же lsof) и iostat. А для тестирования возможностей дисковой системы fio. Несмотря на то, что первое, о чем можно подумать в плане попугаев — это IOPS или же Мб/сек за чтение или запись, обратите внимание на время ожидания. Примерно как если бы вы стояли в очереди в кассу: вас обслужили бы за 2 минуты, но очередь может быть минут на 30. И со стороны наблюдателя ваш процесс обслуживания будет «висеть». Именно так могут ощущать себя клиенты сервера, если время ожидания будет намного превышать время выполнения конкретной задачи. Поэтому определение длинной очереди и задержек часто бывает более важным, чем знать, что ваш диск «вау, может писать 400 Мбит/с». Нагрузка на диск может оказаться в 4000 Мбит/с в течение длительных периодов времени и все это время клиенты сервера будут недовольны.
Я здесь пишу свой опыт, со своим видением и трактовкой. Пожалуйста, учитывайте это.
IOTOP
Посмотреть, какие процессы в настоящее время создают нагрузку на диск удобно смотреть командой iotop:
Здесь видно, что в данный момент mc что-то пишет (а в это время в другом окне я в самом деле копировал кучу файлов на usb-диск в Midnight Commander (он же mc).
Понять, что коипрует mc в данный момент можно узнать командой:
IOSTAT
Пример вывода iostat на незагруженной в данный момент старенькой системе из двух SATA HDD в soft raid 1 (зеркало) mdadm:
Команда выглядела так:
-x — расширенная статистика
-t — выводить время для каждой порции замеров
-m — результаты в Мбайт
5 — интервал замеров 5 секунд.
Если нужны не история, а динамика процесса, попробуйте так:
watch iostat -x -t -m 1 2
В этом выводе r/s и w/s это отправленные к устройству запросы на выполнение (IOPS, которые хотелось бы, чтобы устройство выполнило).
await — время, включающее ожидание выполнения запроса (как если бы вы встали в очередь в кассу и ждали бы, пока вас обслужат).
svctm — время, реально затраченное на выполнение запроса (время «на самой кассе»).
Для обычных SATA дисков нагрузка IOPS где-то до 100-130 вполне выполнимая. В момент проведения замеров запрошенная нагрузка была 40 IOPS, поэтому запрос практически в очереди и не стоял, его обслужили почти сразу (на «кассе» никого не было). Поэтому await практически равен svctm.
Другое дело, когда нагрузка на диск вырастает:
%iowait — простой процессора (время в процентах) от или процессоров, в то время пока обрабатывались запросы. Т.е. в среднем процессор отдыхал почти 50% времени.
%user — загруженность процессора пользовательскими приложениями. По этому параметру видно, например, что в данный период процессор был почти не занят. Это важно, т.к. может помочь отсечь подозрения в тормозах из-за процессора.
Замер сделан во время переноса большого количества писем из одной папки IMAP в другую. Особо обратите внимание на await и svctm. Налицо длинная очередь (отношение await к svctm). Дисковая система (или чипсет, или медленный контроллер SATA, или. ) не справляется с запрошенной нагрузкой (w/s).. Для пользователей в этот момент все выглядело просто — сервер тупит или даже завис.
Заранее проверить производительность дисков можно с помощью fio. Также можно примерно оценить на одной машине производительность дисков и понимать, какой уровень «в среднем по больнице» вы можете ожидать. Это, конечно же, не правильно, но оценить все же поможет. Глубже анализировать результаты, а, главное, методики тестов мне пока трудно.
# yum install fio
# apt-get install fio
В общем виде запуск выглядит так:
Файл your.cfg (название произвольное) может быть примерно таким (пример рабочего конфига для теста на чтение):
Буферизацию не используем (buffered=0), чтение не последовательное (rw=randread).
Во время выполнения этого теста (а выполняться тест может доооолго, надоест — Ctrl+C, результаты все равно будут) можно запустить iostat и посмотреть, что происходит:
Обратите внимание на отношение await к svctm: await/svctm = 32,11..11, т.е. можно считать 32. Это и есть iodepth из конфига your.cfg. Теперь проще понять смысл iodepth — мы указываем, насколько хотим в тесте имитировать длинную очередь заданий.
Я не стал ждать два дня, Ctrl+C и вот результат:
Получили 109 iops, что в принципе нормально, диск обычный, SATA.
Источник
Кунг-фу стиля Linux: мониторинг дисковой подсистемы
Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top , или — что немного лучше — командой htop . А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top .
Утилита iotop
Утилита iotop очень сильно похожа на top . Она выводит сведения об общем и текущем количестве операций обращения к диску для файловой системы. Кроме того, она сообщает о том, что именно интенсивнее всего нагружает диск. Экран iotop , на первый взгляд, переполнен информацией.
Вот совет по работе с этой утилитой. Если взглянуть на нижнюю часть экрана — там можно найти некоторые команды, вызываемые нажатиями на клавиши клавиатуры. Например, клавиша O скрывает (или отображает) все неактивные процессы. Это позволяет немного улучшить внешний вид сведений, выводимых iotop .
Сведения об использовании дисковой подсистемы активными процессами
Того же эффекта можно добиться, запустив iotop с ключом -o . Обратите внимание на то, что другие клавиатурные команды позволяют, например, выводить сведения о потоках, а не о процессах, менять режим вывода данных, задавать классы и приоритеты ввода-вывода процессов ( ionice ).
Утилита iostat
Если вас больше интересуют данные, относящиеся к самим дискам, а не к процессам или потокам, можете попробовать команду iostat . Она тоже выводит некоторые данные о процессах, но они представлены в обобщённом виде.
Работа с iostat
Эта команда запускается, собирает данные и выводит их, не обновляя в режиме реального времени. Если нужно периодически её перезапускать — можно, при её запуске, указать промежуток времени между получениями новых отчётов, и, что необязательно, общее количество перезапусков. При этом, если нужно, можно воспользоваться ключом командной строки -t для получения сведений о времени.
Правда, это приводит к прокрутке выходных данных программы. Если вы занимаетесь мониторингом дисковой активности, то, возможно, вам лучше подойдёт такой вариант запуска iostat :
Если запустить утилиту с ключом -x — можно получить более подробные сведения о дисках. Флаг -z позволяет отключить вывод сведений об устройствах, на которых нет данных.
Утилита duf
Вы, вероятно, не найдёте в своей системе утилиту duf . Если это так — можете установить её с GitHub. Те же результаты, правда, можно получить, воспользовавшись df и ещё некоторыми командами, но преимущество duf заключается в том, что эта программа представляет данные в удобном для просмотра виде.
При запуске этой утилиты можно воспользоваться опциями командной строки, которые позволяют скрывать устройства, задавать ширину таблиц, выводимых на экране, по-разному сортировать выводимые данные. Ещё можно указать максимальную ширину таблиц, генерируемых программой. Подробности о работе с duf можно узнать, запустив утилиту с ключом —help .
Вывод сведений об открытых файлах с помощью lsof
Если нужно узнать о том, какие именно файлы открыты в системе, сделать это можно с помощью команды lsof . Она выводит подробную информацию, а в работающих системах обычно открыто очень много файлов. Поэтому lsof обычно используют, указывая имя файла, или комбинируя этот приём с grep . Это позволяет узнать сведения только о том, что нужно.
При использовании lsof нужно помнить о том, что шаблоны тут, по умолчанию, не работают. Поэтому следующая команда выведет лишь сведения о директории /home/alw . А вот, например, сведения о процессах, которые открыли какие-нибудь файлы в этой директории, такая команда не выведет.
Для того чтобы это изменить, можно запустить lsof с ключом -d или -D . Ключ, представленный буквой в нижнем регистре, приводит к поиску директорий и файлов на верхнем уровне. Ключ -D выполняет рекурсивный поиск. Эта команда поддерживает и много других опций, которые можно применять, например, для поиска файлов, открытых пользователем с заданным ID, или для поиска по заданному имени команды.
Дополнительный инструмент: atop
Одной из замен команды top является atop . Хотя эта команда и не нацелена исключительно на мониторинг дисковых операций, она даёт сведения о том, как процессы пользуются дисками, и, кроме того, предоставляет некоторые сводные сведения. Обычно после запуска atop в верхней части формируемого ей вывода имеется строка DSK , в которой присутствуют сведения о диске. Эти данные, по мере приближения уровня использования диска к 100%, выделяются красным цветом. Данные, выводимые в нижней части, похожи на те, что даёт команда top .
Для сортировки процессов по уровню использования дисков можно воспользоваться клавишей D . Это — полезный инструмент.
Итоги
Для того чтобы получить сведения о дисках в Linux можно применить десятки различных инструментов. Собственно говоря, нечто подобное справедливо и для решения многих других задач. Если вам интересны подробности о том, что именно выводит htop (похожие данные формируют, кроме того, top и atop ) — взгляните на этот материал.
Как вы мониторите дисковую подсистему в Linux?
Источник
6 приложений для анализа жесткого диска в Linux
Командная строка
Если вы истинный линуксоид, самый легкий и быстрый способ – использовать команду «df» в командной строке. Просто напечатать:
в терминале, и он покажет вам загрузку жесткого диска в процентах
Как видно из представленного выше скриншота, способ может служить лишь в качестве быстрого просмотра доступного места на диске и определенно не является самым удобным для проведения анализа жесткого диска.
Baobab
Большинство линукс-дистрибутивов с Gnome(в частности Убунту), используют Baobab в качестве дефолтного приложения для просмотра диска.Это замечательное приложение, способное до последней папки разделить и проанализировать структуру хранения данных на жестком диске. Просто укажите папки необходимые для сканирования, и в результате получите круговую диаграмму, отражающую количество занимаемого места каждым файлом.
KDirStat и GdMap
Если вы использовали WinDirStat в Windows, то согласитесь, что это очень удобное приложение, позволяющее анализировать и оптимизировать ваше дисковое пространство. Однако мало людей знают, что WinDirStat это на самом деле клон KDirStat. KDirStat обладает той же функциональностью что и WinDirStat (или может быть наоборот), за исключением того, что он предназначен для использования в Linux. Несмотря на то, что KDirStat разрабатывался для KDE, он также совместим с любым оконным менеджером X11.
KDirStat отображает ваши папки/файлы в виде прямоугольников. Чем больше размер файла, тем больше прямоугольник. Это позволяет вам быстро просмотреть файловую систему, и легко определить какая папка/файл занимают много места на жестком диске.
Gd Map это эквивалент KDirStat для Gnome, кроме того что он не отображает древовидную структуру папок, и не позволяет очищать жесткий диск.
Filelight
Подобно Baobab, Filelight, создает интерактивную карту концентрических, сегментированных колец, помогающих визуализировать использование диска на вашем компьютере.Вы легко можете приблизить нужные папки, путем клика на соответствующем сегменте колец.
Philesight
Philesight это реализация Filelight в качестве веб-приложения, может быть запущена на удаленном сервере, не имеющим графического интерфейса. Philesight использует командную строку для генерации PNG-файлов в браузере и включает CGI-скрипты для навигации по файловой системе. Одна из ее особенностей, красочная радуга концентрических колец, что делает ее весьма приятной на вид.
xdiskusage
xdiskusage маленькая программка, отображающая файловую систему иерархически, слева направо, прямоугольными фигурами, с размерами, соответствующими размеру файлов. Если вы сканируете домашнюю папку, слева будет находится прямоугольник, отображающий полностью папку home, а справа все файлы, находящиеся внутри нее.
Вы легко можете приближать/удалять, нужные папки, по двойному щелчку на соответствующем прямоугольнике.
Источник
Мониторинг использования диска linux
Отслеживание производительности жестких дисков Linux сервера обычно производится при помощи систем, основанных на готовых решениях таких как Zabbix, но для собственной инфраструктуры можно написать свои скрипты, которые будут производить мониторинг дисков, затем обрабатывать эти данные и при необходимости визуализировать. Во второй части статьи приведен скрипт на основе которого можно построить собственную систему мониторинга.
Мониторинг дисков Linux сервера
Чаще всего применяются консольные утилиты vmstat, top, iotop, iostat и т.п. вывод некоторых из них — в частности, vmstat удобно парсится и и используется в bash скриптах.
vmstat
В выводе для отслеживания состояния дисков значение имеет блок io (характеризует операции ввода-вывода — их количество и затратность для системы )
bi — blocks in — сколько блоков записали в дисковую систему
bo — blocks out — сколько считали
top
Нажатие D покажет список процессов создающих самую большую нагрузку на диск
iotop
Интерес представляют параметры о количестве процессов записи на диск и чтения с диска
Total DISK READ
Total DISK WRITE
Total — показывает пропускную способность между ядром ОС и системой ввода-вывода
Actual DISK READ
Actual DISK WRITE
Actual — показывает как система ввода-вывода обращается к железу
ionice:
—idle — процесс может использовать диск только если он простаивает и другими процессами не используется
—be — best effort (классы 0-7) — средний приоритет
—rt — real time — наивысший приоритет (классы 0-7, 7-й будет означать максимальный приоритет)
В некоторых случаях приоритет потребления диска для процессов требуется понизить, делается это как раз при помощи ionice
iostat входит в пакет sysstat — если в системе его нет, пакет можно установить при помощи apt-get
Большое количество полезной информации выведет вызов команды с ключом -x
Утилита SAR обладает широким функционалом и применяется, среди прочего, и для мониторинга дисков
sar является частью пакета sysstat. Чтобы запустить 2 теста параметров с интервалом в 5 секунд нужно выполнить sar 5 2
Используя ключ -b можно получить информацию о подсистеме ввода-вывода и использовании буферов
Linux 4.4.0-97-generic (admin-Satellite-C660) 28.10.2017 _i686_ (4 CPU)
14:54:02 tps rtps wtps bread/s bwrtn/s
14:54:07 3,80 0,00 3,80 0,00 307,20
14:54:12 0,40 0,00 0,40 0,00 12,80
Average: 2,10 0,00 2,10 0,00 160,00
В выводе будут следующие параметры с актуальными значениями:
- %busy (процент занятости),
- avque (средня длина очереди),
- r+w/s (число операций чтения и записи в секунду),
- blks/s (число переданных блоков в секунду),
- avwait (среднее время ожидания)
- avserv (среднее время обслуживания).
Большие значения %busy и avque будут говорить о существовании проблем с дисковой подсистемой.
С опцией -d будет выводиться информация по системным устройствам, -p (pretty) сделает вывод более читабельным
Linux 4.4.0-97-generic (admin-Satellite-C660) 28.10.2017 _i686_ (4 CPU)
14:55:26 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
14:55:31 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:55:31 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
14:55:36 sda 2,80 0,00 238,40 85,14 0,01 2,29 2,29 0,64
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 1,40 0,00 119,20 85,14 0,00 2,29 2,29 0,32
Скрипт, осуществляющий мониторинг дисков Linux сервера
Рассмотрим простейший скрипт, который будет контролировать количество операций ввода-вывода и в случае превышения установленного значения отправлять письма на адрес администратора сервера.
Скрипт будет контролировать только два параметра, это простейшая реализация. Однако добавив некоторый функционал и дополнительные параметры скрипт можно использовать для построения собственной системы мониторинга.
Будем парсить вывод vmstat, понадобятся значения bi и bo, которые показывают сколько операций ввода-вывода выполняется дисковой подсистемой.
procs ————memory———- —swap— ——io—- -system— ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 1 832180 189268 67288 649176 1 18 34 38 158 778 8 2 88 2 0
Оставим в выводе только интересующие нас колонки
bi bo
34 38
При помощи tail вырежем последнюю строку со значениями
43 45
Далее приведены строки скрипта, который будет использоваться для мониторинга
Значение первого параметра будем записывать в файл bytes_in.txt
vmstat | awk ‘
‘ | tail -1 | cut -f 1 -d ‘ ‘ > bytes_in.txt
Значение второго таким же образом в bytes_out.txt
vmstat | awk ‘
‘ | tail -1 | cut -f 2 -d ‘ ‘ > bytes_out.txt
Возьмем в качестве предельного значение 90, которое не является критичным даже для десктоп инсталяции и в настоящей системе может быть заменено на любое другое. Читаем значение из файла и сравниваем его с числом 90, если значение больше 90 — отправляем письмо на адрес электронной почты администратора
if [ `cat /home/admin/bytes_in.txt` -gt 90 ]; then echo ‘Value of bytes_in is greater then 90. Take a look’ | mail -s ‘ WARNING’ admin@example.com; fi
if [ `cat /home/admin/bytes_out.txt` -gt 90 ]; then echo ‘Value of bytes_out is greater then 90. Take a look’ | mail -s ‘WARNING’ admin@example.com; fi
Получили скрипт в 4 строки, который будет контролировать самые важные параметры работы дисковой подсистемы сервера.
Последние 2 можно выполнять с небольшой задержкой, которая реализуется через sleep
Получившиеся пять строк нужно добавить в CRON, если задание будет выполняться раз в минуту — администратор всегда будет в курсе возникающих проблем с вводом-выводом. Таким же образом можно контролировать значение других параметров. Можно включать в письмо актуальное значение на которое среагировал мониторинг. Нужно ли это следует решать каждый раз индивидуально.
Источник