Поиск по сайту:
Чего не понимают, тем не владеют (И. Гёте).

Проблемы дискового ввода-вывода (I/O): понимание и устранение их для повышения производительности системы

07.05.2024
Проблемы дискового ввода-вывода (I/O): понимание и устранение их для повышения производительности системы

Проблемы с дисковым вводом-выводом и использованием свободного места являются распространенными причинами снижения производительности вычислительных систем. Низкая скорость работы системы может напрямую повлиять на ее способность извлекать и хранить информацию на диске.

В этой статье мы узнаем, почему возникают проблемы дискового ввода-вывода, какие команды Linux можно использовать для диагностики и устранения неполадок дискового ввода-вывода, а также общие методы их решения.

 

Что вызывает проблемы с дисковым вводом-выводом?

Проблемы дискового ввода-вывода могут быть результатом сложности хранилища, узких мест приложений, конфигураций RAID, времени отклика и дизайна. Давайте рассмотрим некоторые из этих моментов подробнее.

Виртуальное хранилище

Программно-определяемый или виртуальный уровень хранилища работает поверх базового физического уровня хранения. Виртуальное хранилище увеличивает сложность и количество потенциальных точек отказа из-за конкуренции за ресурсы, поскольку оно не может считывать и записывать данные так же быстро, как физическое хранилище.

Узкие места приложений

Приложения с интенсивным вводом-выводом часто вызывают узкие места и проблемы с задержкой хранения. В основном они возникают, когда несколько загруженных приложений используют одно и то же хранилище данных. Лучшее решение узких мест приложений – найти способ обрабатывать приложения с низкой пропускной способностью хранилища и использовать большую базу пользователей.

Конфигурация RAID

Конфигурация RAID может использоваться для хранения данных в приложении как на аппаратном, так и на программном уровнях. Конфигурация RAID распределяет запросы ввода-вывода и копии данных по нескольким дискам, повышая ввод-вывод и надежность хранилища. Любая проблема в физическом устройстве или программном обеспечении, управляющем RAID-массивом (например, из-за возраста, недостаточной конфигурации или устаревшего программного обеспечения), может привести к замедлению запросов ввода-вывода.

Время отклика ввода-вывода

Увеличение времени отклика ввода-вывода хранилища может снизить производительность ввода-вывода. Когда устройству хранения требуется больше времени для ответа на запрос ввода-вывода, это указывает на наличие узкого места на уровне хранения. Дополнительная нагрузка на существующие узкие места ввода-вывода хранилища приводит к постоянной задержке во времени отклика.

Плохая конструкция хранилища

Еще одной причиной медленного ввода-вывода в хранилище является плохое состояние физических устройств хранения. По мере старения жестких дисков или повышения температуры вероятность достижения ими максимальной скорости ввода-вывода снижается, а задержка ввода-вывода начинает снижаться. Старые диски следует заменять до того, как они испортятся и в конечном итоге износятся, что приведет к ошибкам ввода-вывода.

Читать  Как устранить неполадки с высоким временем ожидания ввода-вывода в Linux

 

Влияние проблем дискового ввода-вывода

Чтобы выявить и устранить проблемы дискового ввода-вывода, важно понимать, как они могут проявляться в вашей системе. Проблемы дискового ввода-вывода могут влиять на производительность системы несколькими способами:

  • Чрезмерный ввод-вывод может вызвать высокую загрузку системы, потенциально превышающую максимальную допустимую нагрузку, равную 1.
  • Оповещения могут срабатывать, например, когда служба недоступна или если система не может запустить службу.
  • Загрузка размещенных веб-сайтов может занять неожиданно много времени или они могут перестать отвечать на запросы.
  • Виртуальные машины могут работать медленно или не отвечать в течение длительного времени.
  • Диски могут работать плохо из-за увеличенной задержки при резервном копировании.
  • Доставка электронной почты может замедлиться, поскольку почтовому серверу необходимо считывать и записывать данные с жестких дисков и на них.

 

Мониторинг производительности диска

Как только мы заподозрим потенциальную проблему дискового ввода-вывода, мы можем использовать показатели для анализа производительности дискового ввода-вывода. Вот некоторые из этих важных показателей:

  • Количество запросов на чтение в секунду
  • Количество запросов на запись в секунду
  • Общее количество записанных байт и количество байт, записываемых в секунду
  • Общее количество прочитанных байт и количество прочитанных байт в секунду
  • Запросы, ожидающие в очереди

 

Выявление проблем дискового ввода-вывода

После измерения и мониторинга производительности диска с использованием вышеуказанных показателей мы можем использовать команды для выявления проблем дискового ввода-вывода. Три наиболее часто используемые команды для устранения неполадок: df, iostat, и vmstat.

С помощью команды df

Команда df – это сокращенное название файловой системы диска. Это одна из самых основных команд для устранения проблем дискового ввода-вывода. Если место недоступно, операции записи завершатся ошибкой. Команда df отображает используемое и доступное пространство для всех смонтированных файловых систем в Linux. Используемое и оставшееся пространство по умолчанию отображается блоками размером 1 Тыс.

 

Синтаксис:

df [OPTIONS] [FILES]

 

Пример:

Запустив команду df, вы увидите результат, аналогичный показанному ниже:

Рис. 1: Вывод команды df

Рис. 1: Вывод команды df

 

Как вы можете видеть в приведенном выше выводе, он отображает следующую информацию для всех смонтированных файловых систем:

  • Filesystem: имя файловой системы или устройства
  • 1K-blocks: Общий размер файловой системы или устройства в блоках по 1 КБ
  • Used: Общее пространство, используемое существующими файлами в файловой системе
  • Available: Общее пространство, оставшееся для использования в файловой системе
  • %: Процентное соотношение блоков, используемых файловой системой
  • Mounted on: точке монтирования или каталоге, в котором смонтирована файловая система
Читать  Почему Alpine Linux - лучший облегченный серверный дистрибутив

 

С помощью команды vmstat

Команда vmstat также известна как статистика виртуальной памяти. Это утилита мониторинга производительности системы в Linux, которая отображает информацию о процессах, памяти, расписании процессора, диске и блочном вводе-выводе. Он показывает пользователям производительность системы в реальном времени в течение периода выборки. Если вы не укажете никаких параметров, команда vmstat по умолчанию покажет статистику с момента последней перезагрузки системы.

Синтаксис:

vmstat [options][delay [count]]

 

Задержка и количество являются двумя важными параметрами для команды vmstat. Они используются для непрерывного отображения производительности системы в реальном времени с заданным интервалом в течение определенного количества раз.

  • Delay – это временной интервал или задержка между двумя выходными обновлениями.
  • Count определяет количество отображаемых выходных обновлений. Если это количество не задано, vmstat команда выполняется бесконечно.

 

Пример:

Выполнение команды vmstat выдаст вам результат, аналогичный показанному ниже:

Рис. 2: Вывод команды vmstat

Рис. 2: Вывод команды vmstat

 

Это базовый вывод, который отображает общую статистику. Вы также можете указать параметры задержки и количества для непрерывного отображения статистики в реальном времени. Например, при запуске vmstat 5 3 будут отображены следующие 3 статистики в реальном времени, каждая с интервалом в 5 секунд.

Рис. 3: Вывод команды vmstat в реальном времени

Рис. 3: Вывод команды vmstat в реальном времени

 

Приведенные выше выходные данные разделены на четыре области. Наше основное внимание уделяется разделу ввода-вывода. В нем показаны две колонки:

  • bi: Количество блоков данных, полученных от устройства
  • bo: Количество блоков данных, отправленных на устройство

 

Мы можем использовать эту информацию для анализа, когда данные интенсивно записываются или считываются. Затем мы можем использовать другую команду, например, iostat, чтобы увидеть, какой жесткий диск принимал нагрузку, и попытаться найти основную причину проблемы с дисковым вводом-выводом.

С помощью команды iostat

Как следует из названия, команда iostat используется для мониторинга статистики ввода-вывода в системе. Она генерирует эти отчеты, отслеживая взаимосвязь между продолжительностью активного времени работы устройств и их средней скоростью передачи. Сгенерированные отчеты можно использовать для обновления конфигурации системы для достижения лучшего баланса ввода-вывода между различными доступными физическими дисками.

Синтаксис:

iostat [option] [interval] [count]

 

Аналогично тому, что мы видели с командой vmstat, параметры interval и count используются для отображения обновлений в реальном времени бесконечно или только для определенных значений.

Читать  Команда SAR в Linux контролирует производительность системы

 

Пример:

Выполнение команды iostat выдаст вам результат, аналогичный показанному ниже:

Рис. 4: Вывод команды iostat

Рис. 4: Вывод команды iostat

 

Отчеты о выводе по умолчанию отображают статистику процессора и статистику ввода-вывода устройства с момента последней перезагрузки системы. Из двух разделов нас больше интересует раздел “Устройство”. Он генерирует следующую информацию для всех разделов или устройств:

  • Device: Название раздела/устройства
  • tps: “Передача данных в секунду”; более высокий tps означает более загруженный процессор
  • Blk_read/s (kB_read/s) и Blk_wrtn/s (kB_wrtn/s): Скорость передачи операций чтения или записи, выраженная в виде количества блоков, считываемых / записываемых в секунду
  • Blk_read (kB_read) и Blk_wrtn (kB_wrtn): Общее количество блоков, прочитанных и записанных на это устройство с момента последней перезагрузки

 

Исправление проблем с дисковым вводом-выводом

Приведенные выше примеры указывают на проблемы с производительностью диска в системе. Вы можете реализовать несколько программных и аппаратных исправлений, чтобы уменьшить проблемы с дисковым вводом-выводом и использованием пространства.

Исправления программного обеспечения

  • Используйте отдельные виртуальные и физические жесткие диски.
  • Установите операционную систему хоста на диск, отличный от виртуальных машин.
  • Оптимизируйте жесткие диски, внедрив разделение дисков в гостевой и хост-ОС.
  • Обновите тип RAID в соответствии с рабочей нагрузкой приложения, чтобы повысить производительность приложения.
  • Включите прямой доступ к памяти.

 

Аппаратные исправления

  • Обновите жесткие диски до твердотельного накопителя (SSD) или более быстро вращающегося диска.
  • Разделите нагрузку приложений между жесткими дисками, чтобы лучше справляться с нагрузкой ввода-вывода.
  • Обновите кэш в памяти большего размера, чтобы приложения реже выполняли прямое чтение и запись из файловых систем.

 

Заключение

Проблемы с использованием дискового пространства и вводом-выводом могут значительно снизить производительность системы. Вы должны устранить неполадки и найти первопричину таких проблем, как использование большого пространства или медленные запросы ввода-вывода, прежде чем сможете принять соответствующие меры для их устранения.

В Linux есть различные команды, которые вы можете использовать, чтобы сузить круг причин проблем с дисковым вводом-выводом. Трех наиболее часто используемых команд, обсуждаемых здесь — df, iostat, и vmstat — достаточно, чтобы помочь вам найти первопричину. Хотя мы рассмотрели ряд полезных программных исправлений проблем дискового ввода-вывода, полезно помнить, что иногда обновления оборудования предлагают лучшее постоянное решение.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
ChatGPT - это чат-бот на основе искусственного интеллекта, разработанный компанией…

Спасибо!

Теперь редакторы в курсе.