Як працює SSD-кешування засобами гіпервізора в хмарі VMware

Компанія VMware ще з виходом VMware vSphere 5.1 оголосила про декілька нових починаннях в сфері зберігання даних віртуальних машин, включаючи можливість використання розподіленого кеш SSD-накопичувачах локальних дисків серверів ESXi. Дана технологія мала робочу назву vFlash і перебувала в стадії Tech Preview, перетворившись пізніше на повноцінну функцію vSphere Flash Read Cache (vFRC) платформи VMware vSphere 5.5. І це цілком робочий інструмент, який можна використовувати в завданнях різного рівня.

Технологія vFRC покликана підвищити ефективність взаємодії клієнтських додатків з дисковою підсистемою за рахунок кешування прочитуваних даних, при цьому значно збільшуючи продуктивність додатків, активно виконують операції читання.
Flash Read Cache працює на рівні гіпервізора, істотно покращуючи при цьому продуктивність віртуальних машин, які інтенсивно використовують систему вводу-виводу для операцій на читання. Для кешування можуть бути використані PCIe флеш-карти і SAS/SATA SSD-диски, локально встановлені в хост. Пристрої об'єднуються у флеш-пул, з якого VMDK-дисків віртуальних машин виділяється простір для кешування даних.
Нагадаємо, що VMDK (Virtual Machine Disk) — це формат файлу, розроблений VMware для використання в якості образу диска в своїх віртуальних машинах.
За рівнем продуктивності SSD-кеш знаходиться між оперативною пам'яттю і звичайними дисками.

Огляд архітектури vFRC

Огляд архітектури vFRC

Архітектурна особливість vFRC полягає в наступному:
Коли до VMDK диска з включеним vFRC приходить запит на читання, в першу чергу з'ясовується, чи є необхідні дані на vFlash.
  • Якщо так, то віртуальна машина отримує дані з кеша. Цю подію називають «влученням» (vFRC hit).
  • Якщо відсутні дані в кеші, то ESXi зчитує їх з VMDK-диска і віддає машині, паралельно записуючи дані в кеш. Ця подія називається «промахом» (vFRC miss). Коли приходить запит на запис, дані записуються на VMDK-диск і асинхронно в кеш.
Що необхідно для vFRC?
Для того щоб активувати функціональність vFRC, необхідно дотримання наступних умов:
  • Мати в наявності сконфігурований сайт як мінімум з одним SSD або PCIe SSD.
  • Використовувати vSphere 5.5 (vCenter 5.5 і ESXi 5.5).
Як включається vFRC?
Після фізичного підключення пристрою до сервера з ESXi його потрібно додати в vSphere Flash Infrastructure layer. Виконати це можна на вкладці Virtual Flash Resource Management у налаштуваннях хоста.

Включення vFRC у налаштуваннях хоста

Для включення vFRC у віртуальній машині параметри жорсткого диска використовується пункт Virtual Flash Read Cache, в якому можна вказати обсяг дискового простору для кешування і розмір блоку. Розмір блоку для vFRC слід вибирати в залежності від того, якими блоками програма пише дані на диск. Статистику по блокам для кожного диска можна зібрати за допомогою утиліти vscsiStats на ESXi.

Визначення параметрів vFRC

Особливості конфігурації
При конфігуруванні vSphere Flash Read Cache необхідно враховувати такі особливості:
  • На сервері повинен бути встановлений VMware ESXi 5.5 в редакції Enterprise Plus.
  • Настройка і управління vFRC здійснюється тільки через vSphere Web Client, тому потрібно VMware vCenter Server.
  • Максимальний розмір кеша для одного віртуального диска — 400 Гб.
  • Максимальні розмір кеша на хост — 2 Тб.
  • Максимальний розмір віртуального диска — 16 Тб.
  • Максимальна кількість SSD-накопичувачів, які використовуються під кеш, — 8.
  • оновити Hardware Version віртуальної машини до 10-ї версії.
  • Необхідно вручну налаштовувати кеш для кожного віртуального диска, мінімальне значення — 1 Гб.
vFRC на практиці в ІТ-Граді
І трохи з особистого досвіду. Як ми тестували SSD-кеш в хмарі VMware і з якими підводними каменями зіткнулися на практиці?

Перш ніж пропонувати клієнтам яке-небудь рішення, необхідно переконатися в його повноцінної функціональності і працездатності, а значить — протестувати і зрозуміти, що отриманий результат повною мірою відповідає заявленим можливостям і задовольняє вимогам замовника. А якщо з'явилася новинка, яку ще ніхто не тестував і не впроваджував, обкатувати її слід з особливо пильною увагою. Адже ні для кого не секрет, що у всьому новому, можуть ховатися недоробки, баги та інші неприємні дрібниці.

Як тільки компанія VMware заявила про нову можливість використання розподіленого кеша на SSD-накопичувачах локальних дисків серверів ESXi, ми вирішили протестувати цю функціональність. Оскільки дана технологія до виходу vSphere 5.5 була в стадії Tech Preview, захотілося протестувати вже доопрацьоване рішення. Перед нами стояло завдання перевірити працездатність vFRC на спорудженому стенді.

Для тестування диски SSD підключили до RAID-контролера Dell PERC H710P. Створили RAID-0 групи з числа SSD-дисків, в кожній групі по одному диску.

Для тестування диски SSD підключили до RAID-контролера Dell PERC H710P

Оскільки RAID-контролер Dell PERC H710P не вміє надавати інформацію про фізичному типі підключених до нього носіїв, довелося відзначати вручну, що диски, підключені до ESXI, є SSD-дисками. Для цього запустили команду esxcl:

Запуск команди esxcli

Після запуску команди в параметрах пристрою значення прапора «Is SSD» змінилося на «True»:

Зміна значення прапора “Is SSD“ в параметрах пристрою

Після чого додали пристрою в vSphere Flash Infrastructure layer. Поточна процедура виконувалася у налаштуваннях хоста за допомогою опції Virtual Flash Resource Management:

Налаштування vFRC в параметрах хоста

Заздалегідь для тестування SSD-кеша нами був підготовлений стенд з віртуальними машинами на базі ОС Windows Server 2008 R2 x64 і двома виділеними під кожну віртуалку VMDK-дисками об'ємом 100 Гб кожен:
  • VMDK1 визначили під ОС,
  • VMDK2 — під дані.
Далі в параметрах жорсткого диска VMDK2 віртуальних машин включили vFRC, виділивши 100 Гб під кеш, визначивши при цьому розмір блоку в 4 Кб.

Визначення параметрів vFRC

Основні кроки конфігурації виконані. Далі стояло завдання перевірки працездатності включеної функціональності. Однак при запуску віртуальних машин одна просто відмовилася стартувати, замість привітання з'явився «синій екран» з наступним змістом:

«Синій екран» при спробі запуску однієї з віртуальних машин

На інших віртуальних машинах явних проблем не спостерігалося.
Далі вирішили скористатися інструментами, заточеними під моніторинг кеша SSD, і порівняти результати тестування. Для початку в одній з віртуальних машин запустили утиліту FIO, яка генерує необхідний обсяг даних на диск VMDK2. Як говорилося раніше, саме він був виділений під корисні дані. Утиліта FIO може працювати в різних режимах, нас цікавила процедура випадкового зчитування». Саме тому запустили її в режимі rand-read.
Примітка: Більш детальну інформацію про утиліті FIO можна знайти на сайті http://freecode.com/projects/fio.
Утиліта FIO передбачає використання job-файлу (або, простіше кажучи, файл-конфігурації), в якому прописуються параметри тестування. Утиліта виконує операції читання над випадково згенерували даними диска VMDK2. У файлі конфігурації для читання фіксується розмір блоку зчитування (в нашому випадку рівний 4 Кб). Після чого запустили операцію довільного читання. Час тесту склало 6 годин 46 хвилин.

Запуск утиліти FIO

Цікавило питання: чи потрапили зчитуються дані в кеш і якщо так, то який відсоток попадання?
Для пошуку відповіді скористалися графіком продуктивності віртуального диска машини допомогою vSphere WEB client.

Графік продуктивності в vSphere WEB client

Цікаво було подивитися на такі лічильники: середня кількість операцій виводу в секунду, затримка читання і лічильник, що дає статистику по використанню кеша. Останній дещо розчарував, показавши дуже маленький відсоток попадання даних в кеш. При середній кількості операцій виводу в секунду (18 689,328 Кб) значення кешируемых даних склало 4439,389 Кб, а це лише 23% попадання. Відповідно до такого статистичному розкладу кеш просто можна вважати недіючим.

Оскільки штатний засіб не показало очікуваних результатів, звернулися до іншого інструменту: команді esxcli. Вона так само працює зі статистикою за певним VMDK-диску з включеною опцією vFRC. Запустили команду з наступними параметрами:
~ # esxcli storage vflsh cache stats get

Запуск команди esxcli

На цьому малюнку ви можете спостерігати значення cache hit rate, представлене у відсотках. Воно показує так зване «попадання» vFRC hit, тобто відсоток даних з кеша, які використовуються віртуальною машиною. Розглянуту команду довелося запускати кілька разів, оскільки результати при черговому запуску виявлялися зовсім різними. За одним значенням кеш не працював зовсім, як і в першому випадку, за інших працював, з відсотком попадання даних в кеш, рівним 96%.

Не стали зупинятися на отриманому, скористалися ще однією утилітою: esxtop (c відправкою інтерактивної команди «u» (u:disk device)) для відображення статистики по використанню кеша. Згідно з виведеної на екран інформації, отримали наступний результат: при «читанні» дані виділялися безпосередньо з кеша. Враховуючи, що середня кількість операцій виводу в секунду становило 18 689,328 Кб, а обсяг даних, прочитуваних з SSD-кеша, 18 184,03 Кб, відсоток попадання даних в кеш склав приблизно 97%.

Використання утиліти esxtop

Результати тестів не до кінця виправдали наші очікування, і ми, як великий сервіс-провайдер, партнер VMware, звернулися за допомогою до колег на стороні вендора.

Компанія VMware має досить багатий досвід взаємодії зі своїми клієнтами та партнерами. У разі виявлення помилок, вузьких місць і інших моментів по частині функціональності продукту розробники прикладають всі сили, щоб внести необхідні виправлення.

У результаті восени 2014 року було випущено оновлення VMware ESXi 5.5 Update 2, яке усуває цю проблему з «синього екрану» віртуальної машини з операційною системою Windows Server 2008 R2 x64.

Вийшло оновлення, безумовно, нас зацікавило. Вирішили протестувати, встановивши його на розглянутої раніше тестової майданчику з включеним vFRC. Який результат? Всі віртуальні машини запустилися як одна. Ставимо «+» в цьому тесті і рухаємося в бік показників лічильників. Як і на самому початку тестування, запустили утиліту FIO в режимі rand-read з використовуваним раніше файлом конфігурації, після чого запустили операцію довільного читання. Лічильники в більшості своїй показували робочу статистику і лише періодично вказували невірні значення. Тобто VMware ESXi 5.5 Update 2 не усунув описувану проблему з відображення статистики vFRC. Незважаючи на даний баг, технологія vSphere Flash Read Cache, як показала подальша практика застосування цієї функціональності, істотно підвищує продуктивність віртуальних машин за рахунок зменшення показника latency.

Після чергових тестів ми перейшли до впровадження технології SSD-кешування на хостах в промислову середу. Сьогодні на наших майданчиках успішно реалізовано кілька проектів з використанням vSphere Flash Read Cache для наших особливо вимогливих до продуктивності клієнтів. Останні, в свою чергу, задоволені результатами прискорення роботи своїх систем і додатків.
Про інших механізми кешування можна прочитати в статті: «SSD-кешування в хмарі VMware» першому блозі про корпоративному IaaS.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.