Як діагностувати проблеми з віртуальними машинами: Аналіз продуктивності дискової підсистеми
Віртуальні машини (ВМ) стали невід'ємною частиною сучасної IT-інфраструктури. Однак, як і будь-яке інше складне обладнання, ВМ схильні до проблем. Однією з найпоширеніших причин зниження продуктивності ВМ є недостатня продуктивність дискової підсистеми. У цій статті ми детально розглянемо методи діагностики проблем, пов'язаних з дисками віртуальних машин, і надамо практичні приклади для їх виявлення та усунення.
Ми зосередимось на аналізі продуктивності дискової підсистеми, оскільки ця область часто є вузьким місцем і потребує уважного розгляду. Розберемо інструменти та методи моніторингу, аналізу метрик і налаштування дискової системи для досягнення оптимальної продуктивності.
| Зміст |
|---|
| Моніторинг введення/виведення (I/O) |
| Аналіз затримок (Latency) |
| Оптимізація конфігурації диска |
| Виявлення вузьких місць зберігання даних |
Моніторинг введення/виведення (I/O)

Ефективний моніторинг введення/виведення (I/O) є ключовим кроком у діагностиці проблем з дисковою підсистемою ВМ. Моніторинг дозволяє відстежувати основні показники продуктивності, такі як IOPS (кількість операцій введення/виведення в секунду), пропускна здатність (throughput) і затримка (latency). Аналіз цих метрик дозволяє виявити проблемні області та визначити, чи є дискова підсистема вузьким місцем.
Існує кілька інструментів, які можна використовувати для моніторингу I/O на віртуальних машинах, включаючи вбудовані інструменти операційних систем, а також спеціалізовані рішення для моніторингу віртуальної інфраструктури.
Використання iostat для моніторингу I/O в Linux
Утиліта iostat – це потужний інструмент командного рядка, доступний у більшості дистрибутивів Linux. Він надає детальну інформацію про продуктивність дисків, включаючи IOPS, пропускну здатність, використання CPU і час очікування. iostat дозволяє відстежувати активність дисків у режимі реального часу і збирати статистику для подальшого аналізу.
Приклад 1: Базовий моніторинг I/O за допомогою iostat
iostat -x 1
Ця команда запускає iostat з опцією -x, яка виводить розширену статистику. Число 1 вказує на інтервал оновлення даних в секундах. У виводі команди ви побачите безліч стовпців, включаючи r/s (кількість операцій читання в секунду), w/s (кількість операцій запису в секунду), rkB/s (кілобайти, прочитані в секунду), wkB/s (кілобайти, записані в секунду), await (середній час очікування операцій I/O) і %util (відсоток часу, протягом якого диск був зайнятий). Зверніть увагу на значення await і %util, які можуть вказувати на проблеми з продуктивністю диска.
Приклад 2: Моніторинг конкретного диска за допомогою iostat
iostat -x sda 1
Ця команда дозволяє відстежувати статистику тільки для диска sda. Замініть sda на ім'я диска, який вас цікавить. Це корисно, коли у вас кілька дисків в системі і ви хочете зосередитися на конкретному пристрої.
Приклад 3: Запис даних iostat у файл для подальшого аналізу
iostat -x 1 > iostat.log
Ця команда перенаправляє вивід iostat у файл iostat.log. Це дозволяє збирати статистику протягом тривалого періоду часу і аналізувати дані пізніше за допомогою текстового редактора або спеціалізованих інструментів аналізу логів.
Використання Performance Monitor (perfmon) в Windows
Performance Monitor (perfmon) – це вбудований інструмент моніторингу в Windows, який надає широкий спектр метрик продуктивності, включаючи метрики дискової підсистеми. perfmon дозволяє відстежувати I/O в режимі реального часу і створювати звіти для аналізу історичних даних.
Приклад 1: Моніторинг IOPS за допомогою Performance Monitor
- Відкрийте Performance Monitor, набравши "perfmon" в рядку пошуку Windows.
- У лівій панелі виберіть "Performance Monitor".
- Натисніть на значок "+" (Add Counters) на панелі інструментів.
- У діалоговому вікні "Add Counters" виберіть "PhysicalDisk" або "LogicalDisk" (в залежності від того, які диски ви хочете відстежувати).
- Виберіть лічильник "% Disk Time" (відсоток часу, протягом якого диск був зайнятий) і "Disk Transfers/sec" (кількість операцій I/O в секунду).
- Натисніть "Add", потім "OK".
Тепер ви побачите графіки, що відображають значення вибраних лічильників у режимі реального часу. Високе значення "% Disk Time" (близьке до 100%) може вказувати на перевантаження диска.
Приклад 2: Моніторинг затримки диска за допомогою Performance Monitor
- Повторіть кроки, описані вище.
- У діалоговому вікні "Add Counters" виберіть "PhysicalDisk" або "LogicalDisk".
- Виберіть лічильник "Avg. Disk sec/Transfer" (середній час, витрачений на одну операцію I/O).
- Натисніть "Add", потім "OK".
Цей лічильник показує середній час, витрачений на одну операцію I/O в секундах. Високе значення може вказувати на проблеми з затримкою диска.
Приклад 3: Створення звіту про продуктивність диска за допомогою Performance Monitor
- Відкрийте Performance Monitor.
- У лівій панелі розгорніть "Data Collector Sets" і виберіть "User Defined".
- Клацніть правою кнопкою миші в правій панелі і виберіть "New" -> "Data Collector Set".
- Введіть ім'я для набору даних (наприклад, "DiskPerformance").
- Виберіть "Create manually (Advanced)" і натисніть "Next".
- Виберіть "Create data logs" і поставте галочку навпроти "Performance counter". Натисніть "Next".
- Натисніть "Add" і виберіть лічильники, які ви хочете відстежувати (наприклад, "% Disk Time", "Disk Transfers/sec", "Avg. Disk sec/Transfer"). Натисніть "OK".
- Вкажіть інтервал збору даних (наприклад, 1 секунда). Натисніть "Next".
- Вкажіть місце для збереження логів і натисніть "Finish".
Тепер Perfmon буде збирати дані про продуктивність диска у вказаний файл. Ви можете проаналізувати ці дані пізніше, відкривши файл в Performance Monitor.
Аналіз затримок (Latency)

Затримка (latency) – це час, який потрібен для виконання операції вводу/виводу. Висока затримка є однією з основних ознак проблем з дисковою підсистемою і може суттєво впливати на продуктивність ВМ. Аналіз затримок дозволяє виявити причини повільної роботи дисків і вжити заходів щодо їх усунення.
Затримка може бути викликана різними факторами, включаючи перевантаження диска, повільні диски, проблеми з контролером дисків, проблеми з мережею (у разі використання мережевого сховища) і проблеми з віртуалізацією.
Виявлення джерел затримки
Перший крок в аналізі затримок – це виявлення джерела проблеми. Необхідно визначити, чи є проблема локальною для ВМ або пов'язана з інфраструктурою зберігання даних.
Приклад 1: Перевірка затримки за допомогою ping
ping -c 4 <IP-адреса_сховища>
Якщо ВМ використовує мережеве сховище (наприклад, NFS або iSCSI), перевірте затримку мережі за допомогою команди ping. Висока затримка мережі може вказувати на проблеми з мережею, які впливають на продуктивність дискової підсистеми. Замініть <IP-адреса_сховища> на IP-адресу вашого мережевого сховища.
Приклад 2: Використання traceroute для визначення маршруту до сховища
traceroute <IP-адреса_сховища>
Команда traceroute дозволяє визначити маршрут, яким проходить трафік від ВМ до сховища. Аналізуючи маршрут, ви можете виявити проблемні вузли мережі, які можуть викликати затримки. Замініть <IP-адреса_сховища> на IP-адресу вашого мережевого сховища.
Приклад 3: Перевірка затримки диска за допомогою hdparm (Linux)
hdparm -tT /dev/sda
Утиліта hdparm може використовуватися для тестування продуктивності дисків. Опція -tT виконує тест читання з диска і показує швидкість читання та час кешування. Замініть /dev/sda на ім'я тестованого диска. Хоча hdparm не вимірює затримку напряму, він може дати загальне уявлення про продуктивність диска.
Аналіз метрик затримки
Після виявлення джерела затримки необхідно проаналізувати метрики затримки, щоб визначити причину проблеми. Зверніть увагу на наступні метрики:
- Середня затримка операцій читання/запису: Ця метрика показує середній час, витрачений на виконання операцій читання і запису. Високе значення може вказувати на перевантаження диска або повільні диски.
- Максимальна затримка операцій читання/запису: Ця метрика показує максимальний час, витрачений на виконання операцій читання і запису. Великі піки затримки можуть вказувати на короткочасні проблеми з продуктивністю.
- Відсоток операцій, що перевищують певний поріг затримки: Ця метрика показує, який відсоток операцій займає більше певного часу (наприклад, 10 мс). Високий відсоток може вказувати на серйозні проблеми з продуктивністю.
Приклад: Аналіз логів моніторингу I/O
Проаналізуйте логи моніторингу I/O (наприклад, логи, зібрані за допомогою iostat або Performance Monitor) для виявлення періодів високої затримки. Зв'яжіть ці періоди з іншими подіями в системі (наприклад, запуском ресурсомістких додатків, виконанням задач резервного копіювання) для визначення причин проблем.
Потрібна максимальна продуктивність для ваших віртуальних машин?
Усуваєте проблеми з ВМ? Можливо, справа в залізі. Перейдіть на NVMe для неперевершеної швидкості і надійності. — від €28.99/міс.
Сервери NVMe →Шукаєте сервер, який просто працює?
Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.
Оптимізація конфігурації диска
Правильна конфігурація диска має вирішальне значення для забезпечення оптимальної продуктивності ВМ. Неправильно налаштована дискова підсистема може стати вузьким місцем, навіть якщо використовуються швидкі диски і потужне обладнання.
Оптимізація конфігурації диска включає в себе вибір правильного типу дисків (SSD сервери vs HDD), налаштування RAID, використання LVM (Logical Volume Manager) і правильне виділення місця на диску.Вибір типу диска: SSD vs HDD
SSD (Solid State Drive) і HDD (Hard Disk Drive) мають різні характеристики продуктивності. SSD забезпечують значно вищу швидкість читання і запису, а також меншу затримку в порівнянні з HDD. Однак SSD зазвичай дорожче, ніж HDD, особливо для великих обсягів.
Для ВМ, які потребують високої продуктивності дискової підсистеми (наприклад, бази даних, додатки з інтенсивним використанням I/O), рекомендується використовувати SSD. Для ВМ, використовуваних для зберігання даних, до яких не потрібен швидкий доступ (наприклад, архіви, резервні копії), можна використовувати HDD.
Приклад: Міграція ВМ з HDD на SSD
Якщо ви виявили, що ВМ працює повільно через низьку продуктивність диска, розгляньте можливість міграції ВМ з HDD на SSD. Більшість платформ віртуалізації (наприклад, VMware vSphere, Microsoft Hyper-V) надають інструменти для міграції ВМ між різними типами сховищ.
Налаштування RAID
RAID (Redundant Array of Independent Disks) – це технологія, яка дозволяє об'єднати кілька фізичних дисків в логічний том. RAID забезпечує відмовостійкість і може підвищити продуктивність дискової підсистеми.
Різні рівні RAID (наприклад, RAID 0, RAID 1, RAID 5, RAID 10) мають різні характеристики продуктивності і відмовостійкості. Вибір рівня RAID залежить від конкретних вимог до продуктивності і відмовостійкості ВМ.
Приклад: Вибір рівня RAID для бази даних
Для бази даних, що вимагає високої продуктивності і відмовостійкості, рекомендується використовувати RAID 10. RAID 10 забезпечує високу швидкість читання і запису, а також захист від втрати даних в разі виходу з ладу одного або декількох дисків.
Приклад: Налаштування RAID за допомогою mdadm (Linux)
Утиліта mdadm (Multiple Devices Administration) використовується для управління RAID масивами в Linux.
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
Ця команда створює RAID 1 масив (дзеркалювання) з двох дисків (/dev/sda1 та /dev/sdb1) та створює пристрій /dev/md0. Увага: Ця команда призведе до втрати даних на дисках /dev/sda1 та /dev/sdb1. Переконайтеся, що ви зробили резервну копію даних перед виконанням цієї команди.
Використання LVM (Logical Volume Manager)
LVM дозволяє гнучко керувати дисковим простором. За допомогою LVM можна створювати логічні томи, які можуть бути динамічно змінені (збільшені або зменшені) без необхідності перезавантаження системи. LVM також надає можливість створення снапшотів логічних томів, що корисно для резервного копіювання та тестування.
Приклад: Збільшення логічного тому за допомогою LVM
Припустимо, у вас є група томів vg0 та логічний том lv_data, який потрібно збільшити.
lvextend -L +10G /dev/vg0/lv_data
Ця команда збільшує логічний том /dev/vg0/lv_data на 10 ГБ. Після цього необхідно змінити розмір файлової системи, щоб використовувати новий простір.
resize2fs /dev/vg0/lv_data
Ця команда змінює розмір файлової системи ext4 на логічному томі /dev/vg0/lv_data, щоб вона займала весь доступний простір.
Виявлення вузьких місць зберігання даних
Навіть при оптимальній конфігурації дисків, вузькі місця в інших компонентах інфраструктури зберігання даних можуть негативно впливати на продуктивність ВМ. Важливо ідентифікувати та усунути ці вузькі місця, щоб забезпечити максимальну продуктивність дискової підсистеми.
Вузькі місця можуть виникати на різних рівнях, включаючи ЦП, пам'ять, мережу та контролер зберігання.
Аналіз завантаження ЦП
Високе завантаження ЦП може призводити до затримок в обробці операцій I/O, що, в свою чергу, знижує продуктивність дискової підсистеми. Необхідно перевірити завантаження ЦП на ВМ та на хост-сервері, щоб визначити, чи є ЦП вузьким місцем.
Приклад: Моніторинг завантаження ЦП за допомогою top (Linux)
top
Команда top відображає список процесів, відсортованих за використанням ЦП. Зверніть увагу на стовпець %CPU, який показує відсоток використання ЦП кожним процесом. Якщо ви бачите процеси, які постійно використовують більшу частину ЦП, це може вказувати на проблему.
Приклад: Моніторинг завантаження ЦП за допомогою Task Manager (Windows)
- Відкрийте Task Manager, натиснувши Ctrl+Shift+Esc.
- Перейдіть на вкладку "Performance".
- Подивіться на графік "CPU Usage".
Якщо графік показує, що ЦП постійно завантажений на 90% або більше, це може вказувати на проблему.
Аналіз використання пам'яті
Нестача пам'яті може призводити до активного використання файлу підкачки (swap file), що суттєво знижує продуктивність дискової підсистеми. Необхідно перевірити використання пам'яті на ВМ, щоб визначити, чи є пам'ять вузьким місцем.
Приклад: Моніторинг використання пам'яті за допомогою free (Linux)
free -m
Команда free -m відображає інформацію про використання пам'яті в мегабайтах. Зверніть увагу на стовпець swap, який показує використання файлу підкачки. Якщо значення used в стовпці swap постійно збільшується, це може вказувати на нестачу пам'яті.
Приклад: Моніторинг використання пам'яті за допомогою Resource Monitor (Windows)
- Відкрийте Resource Monitor, набравши "resmon" в рядку пошуку Windows.
- Перейдіть на вкладку "Memory".
- Подивіться на графік "Hard Faults/sec".
Високе значення "Hard Faults/sec" вказує на активне використання файлу підкачки, що може бути викликано нестачею пам'яті.
Аналіз мережевої пропускної спроможності
У випадку використання мережевого сховища, недостатня мережева пропускна здатність може стати вузьким місцем. Необхідно перевірити мережеву пропускну здатність між ВМ та сховищем, щоб визначити, чи є мережа вузьким місцем.
Приклад: Перевірка мережевої пропускної спроможності за допомогою iperf3
iperf3 – це інструмент для вимірювання мережевої пропускної спроможності.
На сервері (наприклад, на сервері зберігання):
iperf3 -s
На клієнті (ВМ):
iperf3 -c <IP-адрес_сервера>
Замініть <IP-адрес_сервера> на IP-адресу сервера, на якому запущено iperf3 в режимі сервера. iperf3 покаже поточну пропускну здатність мережі.
Приклад: Моніторинг мережевого трафіку за допомогою tcpdump (Linux)
tcpdump -i eth0 -n host <IP-адрес_хранилища>
Ця команда захоплює мережевий трафік на інтерфейсі eth0 між ВМ та сховищем з IP-адресою <IP-адрес_хранилища>. Аналіз цього трафіку може допомогти виявити проблеми з мережею. Замініть eth0 на ім'я вашого мережевого інтерфейсу.
Експертна порада: Регулярно проводьте навантажувальне тестування ВМ, щоб виявити потенційні вузькі місця до того, як вони почнуть впливати на продуктивність. Використовуйте інструменти для створення реалістичного навантаження на дискову підсистему та відстежуйте ключові метрики продуктивності.
Шукаєте надійну основу для ваших віртуальних машин?
Після вирішення проблем, забезпечте стабільність. Наші виділені сервери — ідеальна платформа для ваших ВМ.
Виділені сервери →