Які найкращі практики для запуску SQL Server у віртуальній машині?


21

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


2
Де зберігаються диски? на локальному жорсткому диску 5400 RPM? На SAN з підключенням Fiber і шпиндельними дисками 15k? Усі віртуальні машини в ці дні про IO, процесор майже нічого не враховує.
jcolebrand

Ні, не місцеві. Але я не знаю подробиць SAN.
ДжерріОЛ

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

@ Спробуйте, у майбутньому сміливо позначте таку відповідь, і ми перетворимо її на вас.
jcolebrand

Відповіді:


18

Як і у фізичних машин, IO - це цар. З'явиться помітний хіт IO від віртуалізації (скільки потрапляння залежить від технології, яку ви вибрали), тому переконайтеся, що ви не зробите нічого, що може посилити це і завдати шкоди продуктивності IO.

  • Завжди використовуйте фіксований розмір, а не динамічні віртуальні диски, і переконайтесь, що базові накопичувачі / масиви є достатніми. Динамічні відеодиски менш ефективні, ніж фіксовані розміри.
  • Якщо дані у віртуальних машинах не є критично важливими, увімкніть вміння рішень VM для кешування записів (фактично брехня гостьової ОС про те, коли речі фізично записуються на диск) для отримання додаткової продуктивності. Це корисно для машини для розробки та тестування, де дані легко замінюються, або репліки, доступні лише для читання, локальні для майстра, які можна відтворити, якщо у них виникнуть проблеми, але рекомендується, щоб такі параметри були відключені для виробничих та резервних систем, як вони збільшують ймовірність втрати даних (або ще гірше, пошкодження), якщо машина несподівано вимкнеться.
  • Переконайтесь, що кожен VM має достатню кількість оперативної пам’яті, присвяченої йому, щоб нормальний робочий набір кожної бази даних вписувався в пам’ять з достатньою кількістю простору, щоб уникнути зайвого IO. Крім того, переконайтеся, що гіпервізор ніколи не публікує оперативну пам’ять VM (наприклад, більшість продуктів VMWare може це зробити, що дозволяє запускати більший набір VM, ніж ви могли б на тому ж апаратному забезпеченні, але зниження продуктивності може бути масовим - є можливість налаштувати або вимкнути цю поведінку).
  • Якщо хост використовує масиви RAID5, розгляньте можливість переходу до RAID10. Це зменшить доступний простір, але усуне проблеми із швидкістю запису, які можуть бути очевидними при RAID5 (або 6).
  • Для віртуальних машин, які, ймовірно, бачать багато активності вводу-виводу, подумайте про надання їм власного накопичувача або масиву або лише надайте їм спільний доступ (-и) / масив (-и) до даних, які бачать низьку активність.

Звичайно, якщо весь ваш БД (і все інше працює у віртуальній машині) вписується в оперативну пам’ять, виділену для VM, і він бачить дуже мало активності запису, продуктивність IO може бути набагато меншою проблемою.

Редагувати: ще кілька пунктів:

  • Якщо ви використовуєте віртуальні диски, переконайтеся, що найкращий тип контролера використовується для продуктивності. Деякі рішення для віртуалізації пропонують кілька типів віртуальних контролерів для кращої сумісності з гостями, і ви можете виявити деякі менш ефективні, ніж інші через обмеження протоколу в дизайні, який вони емулюють та обмеження в драйверах гостьової ОС.
  • Якщо ваше рішення для віртуалізації пропонує конкретні драйвери для контролера віртуального накопичувача, переконайтеся, що ваша гостьова ОС використовує їх - вони можуть пришвидшити масовий IO за рахунок зменшення кількості копій пам’яті до пам’яті та контексту гостя <-> гіпервізора <-> комутатори, що беруть участь у деяких операціях.
  • Два пункти вище застосовуються, якщо ви також використовуєте мережевий накопичувач, наприклад, прості SMB-спілки або iSCSI: переконайтеся, що ви використовуєте найефективніший контролер віртуальної мережі, що пропонується, і що ваша гостьова ОС використовує рекомендований драйвер для цього, інакше обидві затримки а пропускна здатність може бути більш обмеженою, ніж потребує шар віртуалізації.

1
Ну так і ні. Об'єм SAN, встановлений у VM через ініціатор iSCSI, буде досить чортово швидким!
Гай

1
@Gaius: хороший момент. Я додав примітку щодо vNIC та драйверів, які, ймовірно, будуть джерелом додаткових вузьких місць у цих випадках.
Девід Спіллетт

9

1
~ Чи є якісь частини того, що ви можете виділити зі статей?
jcolebrand

2
Ні. Оскільки віртуалізація може бути складною темою, я б радив все це прочитати. Це насправді не так вже й багато. Якщо ОП шукає швидку відповідь, це, мабуть, не буде правильною відповіддю.
Ерік Хамфрі - лоташельп

Я був після найкращих практик взагалі. Щойно перемістивши SQLServer 2000 Standard до нової VM, я намагаюся вирішити проблеми з веб-сайтами, що викликають збережені процедури, які тепер вичерпуються, якщо вони не зберігаються в пам'яті; незважаючи на те, що фізична та VM призначена пам'ять однакові, 4 Гб.
ДжерріОЛ

1
@JerryOL: Переконайтесь, що оперативної пам'яті, виділеної на VM, не дозволяється піддавати підкачки (інакше виділення 4Gb на VM не є тим же, що у вас 4 Гб на фізичній машині), і якщо використовуване рішення для віртуалізації пропонує різні типи віртуальних контролерів гарантує, що обраний найкращий і гостьова ОС використовує правильний драйвер.
Девід Спіллетт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.