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