Как с физическими машинами IO - король. От виртуализации будет заметное попадание ввода-вывода (насколько оно зависит от выбранной вами технологии), поэтому убедитесь, что вы не делаете ничего, что может усугубить это и еще больше повлиять на производительность ввода-вывода.
- Всегда используйте фиксированный размер, а не динамические виртуальные диски, и убедитесь, что базовых дисков / массивов достаточно. Динамические виртуальные диски менее производительны, чем фиксированные.
- Если данные в виртуальных машинах не являются критически важными, включите возможность решений виртуальных машин кэшировать записи (фактически лгать гостевой ОС о том, когда что-то физически записывается на диск) для дополнительной производительности. Это полезно для машины для разработки и тестирования, где данные легко заменяются, или реплики, доступные только для чтения, локальные по отношению к мастеру, которые могут быть воссозданы в случае каких-либо проблем, но рекомендуется, чтобы такие параметры оставались недоступными для производственных и резервных систем, так как они увеличивают вероятность потери данных (или, что еще хуже, повреждения), если машина неожиданно выключается.
- Убедитесь, что каждой виртуальной машине выделено достаточно ОЗУ, чтобы обычный рабочий набор каждой базы данных помещался в память с достаточным количеством свободного места, чтобы избежать ненужного ввода-вывода. Кроме того, убедитесь, что гипервизор не будет выгружать ОЗУ виртуальных машин в любое время (например, большинство продуктов VMWare могут сделать это, что позволяет вам запускать больший набор виртуальных машин, чем в противном случае, на том же оборудовании, но снижение производительности может быть массивным - есть возможность настроить или отключить это поведение).
- Если хост использует массивы RAID5, рассмотрите возможность перехода на RAID10. Это уменьшит доступное пространство, но устранит проблемы с производительностью записи, которые могут быть очевидны при использовании RAID5 (или 6).
- Для виртуальных машин, которые, вероятно, видят большую активность ввода-вывода, рассмотрите возможность предоставления им своего собственного диска или массива, или пусть они совместно используют свои диски / массив (-ы) с данными, которые видят низкую активность.
Конечно, если вся ваша БД (и все остальное, на котором работает ВМ) помещается в ОЗУ, выделенную для ВМ, и она видит очень мало операций записи, производительность ввода-вывода может быть гораздо меньшей проблемой.
Изменить: еще несколько пунктов:
- При использовании виртуальных дисков убедитесь, что для производительности используется лучший тип контроллера. Некоторые решения для виртуализации предлагают несколько типов виртуальных контроллеров для лучшей гостевой совместимости, и некоторые из них могут оказаться менее эффективными, чем другие, из-за ограничений протокола в моделируемой ими конструкции и ограничений в драйверах гостевой ОС.
- Если ваше решение для виртуализации предлагает специальные драйверы для контроллера виртуального диска, убедитесь, что ваша гостевая ОС использует их - это может ускорить массовый ввод-вывод за счет уменьшения количества копий из памяти в память и гостевого контекста хоста <-> гипервизор <-> переключатели участвуют в некоторых операциях.
- Приведенные выше два пункта применимы, если вы используете сетевое хранилище, такое как простые общие ресурсы SMB или iSCSI: убедитесь, что вы используете самый эффективный из предлагаемых виртуальных сетевых контроллеров и что ваша гостевая ОС использует для него рекомендованный драйвер, в противном случае - задержка и полоса пропускания может быть более ограниченной, чем это требуется уровнем виртуализации.