Каковы лучшие практики для запуска SQL Server на виртуальной машине?


21

Каковы лучшие практики для запуска SQL Server на виртуальной машине? Мои операции по онлайн-транзакциям очень низкие, но существует большой объем обработки данных с целью предоставления отчетных данных нескольким веб-сайтам.


2
Где хранятся диски? на локальном жестком диске 5400 об / мин? В сети SAN с оптоволоконными подключениями и дисками шпинделя 15 КБ? Все виртуальные машины в наши дни посвящены вводу-выводу, процессор практически не имеет значения.
Jcolebrand

Нет, не местный. Но я не знаю деталей SAN.
JerryOL

2
Я не могу добавлять комментарии, поскольку у меня пока нет достаточной репутации, но [согласно Microsoft] [1] в 2008 R2 существует небольшая разница в производительности между фиксированными и динамическими виртуальными дисками. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Терри Бочатон,

@ Терри, в будущем не стесняйтесь помечать такой ответ, и мы конвертируем его для вас.
Jcolebrand

Ответы:


18

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

  • Всегда используйте фиксированный размер, а не динамические виртуальные диски, и убедитесь, что базовых дисков / массивов достаточно. Динамические виртуальные диски менее производительны, чем фиксированные.
  • Если данные в виртуальных машинах не являются критически важными, включите возможность решений виртуальных машин кэшировать записи (фактически лгать гостевой ОС о том, когда что-то физически записывается на диск) для дополнительной производительности. Это полезно для машины для разработки и тестирования, где данные легко заменяются, или реплики, доступные только для чтения, локальные по отношению к мастеру, которые могут быть воссозданы в случае каких-либо проблем, но рекомендуется, чтобы такие параметры оставались недоступными для производственных и резервных систем, так как они увеличивают вероятность потери данных (или, что еще хуже, повреждения), если машина неожиданно выключается.
  • Убедитесь, что каждой виртуальной машине выделено достаточно ОЗУ, чтобы обычный рабочий набор каждой базы данных помещался в память с достаточным количеством свободного места, чтобы избежать ненужного ввода-вывода. Кроме того, убедитесь, что гипервизор не будет выгружать ОЗУ виртуальных машин в любое время (например, большинство продуктов VMWare могут сделать это, что позволяет вам запускать больший набор виртуальных машин, чем в противном случае, на том же оборудовании, но снижение производительности может быть массивным - есть возможность настроить или отключить это поведение).
  • Если хост использует массивы RAID5, рассмотрите возможность перехода на RAID10. Это уменьшит доступное пространство, но устранит проблемы с производительностью записи, которые могут быть очевидны при использовании RAID5 (или 6).
  • Для виртуальных машин, которые, вероятно, видят большую активность ввода-вывода, рассмотрите возможность предоставления им своего собственного диска или массива, или пусть они совместно используют свои диски / массив (-ы) с данными, которые видят низкую активность.

Конечно, если вся ваша БД (и все остальное, на котором работает ВМ) помещается в ОЗУ, выделенную для ВМ, и она видит очень мало операций записи, производительность ввода-вывода может быть гораздо меньшей проблемой.

Изменить: еще несколько пунктов:

  • При использовании виртуальных дисков убедитесь, что для производительности используется лучший тип контроллера. Некоторые решения для виртуализации предлагают несколько типов виртуальных контроллеров для лучшей гостевой совместимости, и некоторые из них могут оказаться менее эффективными, чем другие, из-за ограничений протокола в моделируемой ими конструкции и ограничений в драйверах гостевой ОС.
  • Если ваше решение для виртуализации предлагает специальные драйверы для контроллера виртуального диска, убедитесь, что ваша гостевая ОС использует их - это может ускорить массовый ввод-вывод за счет уменьшения количества копий из памяти в память и гостевого контекста хоста <-> гипервизор <-> переключатели участвуют в некоторых операциях.
  • Приведенные выше два пункта применимы, если вы используете сетевое хранилище, такое как простые общие ресурсы SMB или iSCSI: убедитесь, что вы используете самый эффективный из предлагаемых виртуальных сетевых контроллеров и что ваша гостевая ОС использует для него рекомендованный драйвер, в противном случае - задержка и полоса пропускания может быть более ограниченной, чем это требуется уровнем виртуализации.

1
Ну да и нет. Том SAN, подключенный к виртуальной машине через инициатор iSCSI, будет чертовски быстрым!
Гай

1
@ Гай: хорошая мысль. Я добавил примечание, касающееся виртуальных сетевых адаптеров и драйверов, которые в этих случаях могут стать источником дополнительных узких мест.
Дэвид Спиллетт

9

1
~ Есть ли какие-то части этого, которые вы могли бы выделить из статей?
Jcolebrand

2
Нет. Поскольку виртуализация может быть сложной темой, я бы посоветовал прочитать все это. Это не так уж и много. Если ОП ищет быстрый ответ, он, вероятно, не будет правильным ответом.
Эрик Хамфри - LotsAhelp

Я был после лучших практик в целом. Переместив SQLServer 2000 Standard на новую виртуальную машину, я пытаюсь разрешить проблемы с веб-сайтами, вызывающими хранимые процедуры, которые теперь перестают работать, если они не кэшируются в памяти; даже если физическая память и память, выделенная виртуальной машине, одинаковы, 4 ГБ
JerryOL

1
@JerryOL: убедитесь, что ОЗУ, выделенное для ВМ, не разрешено выгружать (в противном случае выделение 4 ГБ для ВМ не то же самое, что выделение 4 ГБ на физической машине), и если используемое вами решение для виртуализации предлагает другие типы виртуальных контроллеров гарантирует, что выбран лучший и правильный драйвер используется гостевой ОС.
Дэвид Спиллетт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.