Різні типи дисків на одній віртуальній машині: досвід 1cloud



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

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

Навіщо це потрібно

Різні типи дисків можуть вимагатися для вирішення різних завдань. Використання дисків різних типів може бути виправданим при створенні багаторівневих систем зберігання даних — дані, які часто використовуються додатками, можна розміщувати на більш швидких дисках.

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

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

Як це працює в 1cloud

Опустимо розповідь про процес закупівлі та встановлення додаткових дискових полиць в наші дискові масиви, а відразу перейдемо до опису роботи нової функції.

Дисковий простір видається з масивів NetApp FAS6240 / FAS8040. На рівні vCloud Director організовані окремі Storage policy під кожен тип. Починаючи c vCloud Director версії 5.6 стало доступно (але тільки через API) зміна storage policy для конкретних дисків.

Для реалізації даної функціональності нам довелося трохи пропатчити .net SDK від VMware, оскільки в ньому була виявлена помилка (при додаванні додаткового диска SDK намагається створити ще одну шину з нульовим ідентифікатор).

Нижче представлений код, що ілюструє коректні налаштування для додавання віртуального диска. Також в обов'язковому порядку потрібно реалізувати метод для розрахунку ідентифікаторів bus та unit (якщо вам цікава наша реалізація методу отримання ідентифікаторів — пишіть в коментарях або особистим повідомленням):

VirtualDisk vDisk = new VirtualDisk(10240, BusType.SCSI, BusSubType.LSI_LOGIC_SAS);
vDisk.GetItemResource().Address = null;
vDisk.GetItemResource().AddressOnParent.Value = unit.ToString(); //unit number, треба вираховувати
vDisk.GetItemResource().Parent.Value = bus.ToString(); //це прив'язка нового диска до існуючої шині 

UX для клієнтів

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

Аналогічним чином ми намагаємося полегшувати і процес замовлення послуг — наприклад, купівлю нового сервера або створення приватної мережі можна провести всього в пару кліків. У випадку нової функції на замовлення додаткових дисків ми пішли тим же шляхом — замовити новий накопичувач можна зі сторінки сервера, у закладці «Налаштування», підпункт «Диски»:



Плани

Спочатку ми планували додати можливість дозамовлення SSD і SAS додаткових дисків, але в підсумку і реалізували можливість покупки SATA. У наших найближчих планах також реалізація хмарного сховища даних, балансувальника навантаження і можливість замовлення фізичних серверів.

У попередніх серіях:



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

0 коментарів

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