Я видел на многочисленных службах виртуализации (Azure) и продуктах (vmware, kvm, hyperv) сбои ввода-вывода и зависания системы при большой рабочей нагрузке ввода-вывода.
Мои вопросы:
Разумно ли использовать виртуализированное решение при выполнении тяжелых рабочих нагрузок ввода-вывода?
Да, действительно, очень разумно, на самом деле для большинства организаций теперь виртуальная среда является по умолчанию, а выполнение действий на физических компьютерах - исключение. У нас более 100 тыс. Виртуальных машин всех форм, и многие из них без каких-либо проблем с IOPS> 40 тыс.
Каковы лучшие практики в отношении подобных вещей?
Главное здесь не в том, виртуализирован он или нет, а в правильном понимании ваших потребностей ввода-вывода и сопоставлении ресурсов виртуального хранилища. Это так просто, если вы знаете, что вам нужно / хотите, и у вас есть бюджет, соответствующий этому с вашими системами хранения, тогда уровень виртуализации действительно играет незначительную роль или не играет никакой роли - если, конечно, вы ДЕЙСТВИТЕЛЬНО не продвигаете вещи (я говорю о десятках / сотни миллионов операций ввода-вывода в секунду).
Что вызывает эти проблемы, есть ли хорошо известные узкие места в системе или это просто вопрос чрезмерной конкуренции?
Непонимание или попытки сделать слишком много при слишком небольшом объеме ресурсов хранения - вот что обычно вызывает проблемы у людей.
Разумно ли использовать виртуализированное решение при выполнении тяжелых рабочих нагрузок ввода-вывода?
Регулярно ли сервер базы данных извлекает произвольное количество операций ввода-вывода со скоростью 1 ГБ / с? Возьми здесь.
Или виртуальный файловый сервер, доставляющий до 600 МБ / с в кластер HPC. Этот убегает от 8 великорапторов в рейде 10, посвященном.
Каковы лучшие практики в отношении подобных вещей?
Обеспечьте много операций ввода-вывода. Я думаю, что эта виртуальная машина SQL имеет около 8 или 10 выделенных SSD.
Что вызывает эти проблемы, есть ли хорошо известные узкие места в системе,
Люди, не занимающиеся базовой математикой. Если подсистема ввода-вывода не способна обрабатывать нагрузку, она также не сможет этого сделать при виртуализации. Требуется МНОГО операций ввода-вывода - тогда предоставьте выделенную подсистему хранения соответствующего размера.
Помимо базовой математики и концепции, что вам по-прежнему нужны те же операции ввода-вывода, что и невиртуализированные, существует также QOS / приоритизация. Большинство платформ виртуализации предлагают по крайней мере базовую поддержку для этого, это очень поможет предотвратить некорректное поведение виртуальной машины разработчика, задерживающей вашу производственную базу данных.