Проблемы с дисковым вводом-выводом и использованием свободного места являются распространенными причинами снижения производительности вычислительных систем. Низкая скорость работы системы может напрямую повлиять на ее способность извлекать и хранить информацию на диске.
В этой статье мы узнаем, почему возникают проблемы дискового ввода-вывода, какие команды Linux можно использовать для диагностики и устранения неполадок дискового ввода-вывода, а также общие методы их решения.
Проблемы дискового ввода-вывода могут быть результатом сложности хранилища, узких мест приложений, конфигураций RAID, времени отклика и дизайна. Давайте рассмотрим некоторые из этих моментов подробнее.
Программно-определяемый или виртуальный уровень хранилища работает поверх базового физического уровня хранения. Виртуальное хранилище увеличивает сложность и количество потенциальных точек отказа из-за конкуренции за ресурсы, поскольку оно не может считывать и записывать данные так же быстро, как физическое хранилище.
Приложения с интенсивным вводом-выводом часто вызывают узкие места и проблемы с задержкой хранения. В основном они возникают, когда несколько загруженных приложений используют одно и то же хранилище данных. Лучшее решение узких мест приложений – найти способ обрабатывать приложения с низкой пропускной способностью хранилища и использовать большую базу пользователей.
Конфигурация RAID может использоваться для хранения данных в приложении как на аппаратном, так и на программном уровнях. Конфигурация RAID распределяет запросы ввода-вывода и копии данных по нескольким дискам, повышая ввод-вывод и надежность хранилища. Любая проблема в физическом устройстве или программном обеспечении, управляющем RAID-массивом (например, из-за возраста, недостаточной конфигурации или устаревшего программного обеспечения), может привести к замедлению запросов ввода-вывода.
Увеличение времени отклика ввода-вывода хранилища может снизить производительность ввода-вывода. Когда устройству хранения требуется больше времени для ответа на запрос ввода-вывода, это указывает на наличие узкого места на уровне хранения. Дополнительная нагрузка на существующие узкие места ввода-вывода хранилища приводит к постоянной задержке во времени отклика.
Еще одной причиной медленного ввода-вывода в хранилище является плохое состояние физических устройств хранения. По мере старения жестких дисков или повышения температуры вероятность достижения ими максимальной скорости ввода-вывода снижается, а задержка ввода-вывода начинает снижаться. Старые диски следует заменять до того, как они испортятся и в конечном итоге износятся, что приведет к ошибкам ввода-вывода.
Чтобы выявить и устранить проблемы дискового ввода-вывода, важно понимать, как они могут проявляться в вашей системе. Проблемы дискового ввода-вывода могут влиять на производительность системы несколькими способами:
Как только мы заподозрим потенциальную проблему дискового ввода-вывода, мы можем использовать показатели для анализа производительности дискового ввода-вывода. Вот некоторые из этих важных показателей:
После измерения и мониторинга производительности диска с использованием вышеуказанных показателей мы можем использовать команды для выявления проблем дискового ввода-вывода. Три наиболее часто используемые команды для устранения неполадок: df, iostat, и vmstat.
Команда df – это сокращенное название файловой системы диска. Это одна из самых основных команд для устранения проблем дискового ввода-вывода. Если место недоступно, операции записи завершатся ошибкой. Команда df отображает используемое и доступное пространство для всех смонтированных файловых систем в Linux. Используемое и оставшееся пространство по умолчанию отображается блоками размером 1 Тыс.
Синтаксис:
df [OPTIONS] [FILES]
Пример:
Запустив команду df, вы увидите результат, аналогичный показанному ниже:
Как вы можете видеть в приведенном выше выводе, он отображает следующую информацию для всех смонтированных файловых систем:
Команда vmstat также известна как статистика виртуальной памяти. Это утилита мониторинга производительности системы в Linux, которая отображает информацию о процессах, памяти, расписании процессора, диске и блочном вводе-выводе. Он показывает пользователям производительность системы в реальном времени в течение периода выборки. Если вы не укажете никаких параметров, команда vmstat по умолчанию покажет статистику с момента последней перезагрузки системы.
Синтаксис:
vmstat [options][delay [count]]
Задержка и количество являются двумя важными параметрами для команды vmstat. Они используются для непрерывного отображения производительности системы в реальном времени с заданным интервалом в течение определенного количества раз.
Пример:
Выполнение команды vmstat выдаст вам результат, аналогичный показанному ниже:
Это базовый вывод, который отображает общую статистику. Вы также можете указать параметры задержки и количества для непрерывного отображения статистики в реальном времени. Например, при запуске vmstat 5 3 будут отображены следующие 3 статистики в реальном времени, каждая с интервалом в 5 секунд.
Приведенные выше выходные данные разделены на четыре области. Наше основное внимание уделяется разделу ввода-вывода. В нем показаны две колонки:
Мы можем использовать эту информацию для анализа, когда данные интенсивно записываются или считываются. Затем мы можем использовать другую команду, например, iostat, чтобы увидеть, какой жесткий диск принимал нагрузку, и попытаться найти основную причину проблемы с дисковым вводом-выводом.
Как следует из названия, команда iostat используется для мониторинга статистики ввода-вывода в системе. Она генерирует эти отчеты, отслеживая взаимосвязь между продолжительностью активного времени работы устройств и их средней скоростью передачи. Сгенерированные отчеты можно использовать для обновления конфигурации системы для достижения лучшего баланса ввода-вывода между различными доступными физическими дисками.
Синтаксис:
iostat [option] [interval] [count]
Аналогично тому, что мы видели с командой vmstat, параметры interval и count используются для отображения обновлений в реальном времени бесконечно или только для определенных значений.
Пример:
Выполнение команды iostat выдаст вам результат, аналогичный показанному ниже:
Отчеты о выводе по умолчанию отображают статистику процессора и статистику ввода-вывода устройства с момента последней перезагрузки системы. Из двух разделов нас больше интересует раздел “Устройство”. Он генерирует следующую информацию для всех разделов или устройств:
Приведенные выше примеры указывают на проблемы с производительностью диска в системе. Вы можете реализовать несколько программных и аппаратных исправлений, чтобы уменьшить проблемы с дисковым вводом-выводом и использованием пространства.
Проблемы с использованием дискового пространства и вводом-выводом могут значительно снизить производительность системы. Вы должны устранить неполадки и найти первопричину таких проблем, как использование большого пространства или медленные запросы ввода-вывода, прежде чем сможете принять соответствующие меры для их устранения.
В Linux есть различные команды, которые вы можете использовать, чтобы сузить круг причин проблем с дисковым вводом-выводом. Трех наиболее часто используемых команд, обсуждаемых здесь — df, iostat, и vmstat — достаточно, чтобы помочь вам найти первопричину. Хотя мы рассмотрели ряд полезных программных исправлений проблем дискового ввода-вывода, полезно помнить, что иногда обновления оборудования предлагают лучшее постоянное решение.