Назад | Перейти на главную страницу

Низкая производительность ввода-вывода на SQL-серверах в виртуальных машинах

У меня есть небольшая реализация VM ESX 3.0 - в основном тестовые веб-серверы, однако есть сервер с 1 db, который дает ужасную производительность io.

Поможет ли добавление дополнительных виртуальных дисков в RAID-массив?

Это типично - люди, работающие с виртуальными машинами, часто игнорируют нагрузку ввода-вывода, которую имеют базы данных. Базы данных часто являются плохим кандидатом для общего хранилища, потому что им нужно МНОГО операций ввода-вывода. Принятая установка будет идти в направлении запуска виртуальной машины из общего хранилища, но фактическая база данных использует диски, полученные с выделенного LUN с отдельной скоростью.

Не столько VmWare - отстойный ввод-вывод, сколько то, что база данных часто имеет особые потребности. В качестве примера (Hyper-V, но применяются те же принципы): * Я запускаю довольно большой сервер Hyper-V с 32 ГБ оперативной памяти. * ОС + виртуальные образы запускают 4 диска RAID 10, Velociraptor. производительность в порядке ... ИСКЛЮЧАЯ: * SQL Server, работающий там, имеет еще 6 (!) дисков в массиве RAID 10, чтобы данные соответствовали требованиям к выделенной нагрузке ввода-вывода, а также диски для журналирования.

Просто нет реального способа правильно использовать один и тот же RAID. Базы данных обычно ЛЮБЯТ производительность ввода-вывода - и общая настройка не может гарантировать этого.

Итак, мой совет остается в силе: приобретите отдельные диски для актуальных данных.

Я понятия не имею, какие накладные расходы на ввод-вывод имеет ESX 3.0, поскольку это устаревший продукт.

Тестирование с использованием VMware vSphere (4.x) показывает, что накладные расходы на приложения с интенсивным вводом-выводом практически отсутствуют - если вы правильно масштабируете настройку.

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

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

  1. Улучшить кеширование. Добавьте много-много оперативной памяти. Это дешево по сравнению с тем, что было несколько лет назад.
  2. Разделяйте данные БД и файлы журнала на разных массивах (шпинделях - как на дисках)
  3. Изолируйте вашу БД vm насколько это возможно. Я слышал об экстремальных условиях, когда они запускают сервер ESX с одной виртуальной машиной БД. Однако это дорогостоящий вариант.

Я также советую вам выяснить, что вызывает узкое место ввода-вывода, прежде чем изменять конфигурацию.

Мой опыт показывает, что независимо от ОС, в которой работает база данных под VMware (или другой виртуализацией), равняется sloooooooooooow I / O. Новые версии VMware немного улучшают ситуацию, но все же это не то же самое, что установка ОС без ОС.