FAST VP за съхранение на Unity: как работи

Днес ще говорим за една интересна технология, внедрена в системите за съхранение Unity/Unity XT – FAST VP. Ако за първи път чувате за Unity, тогава можете да проверите характеристиките на системата, като използвате връзката в края на статията. Работих на FAST VP в проектния екип на Dell EMC повече от година. Днес искам да говоря за тази технология по-подробно и да разкрия някои подробности за нейното прилагане. Разбира се, само тези, които са позволени да бъдат разкрити. Ако се интересувате от проблемите на ефективното съхранение на данни или просто не сте разбрали напълно документацията, тогава тази статия със сигурност ще бъде полезна и интересна.

FAST VP за съхранение на Unity: как работи

Веднага ще ви кажа какво няма да бъде в материала. Няма да има търсене на конкуренти и сравнение с тях. Също така не смятам да говоря за подобни технологии с отворен код, защото любознателният читател вече знае за тях. И, разбира се, няма да рекламирам нищо.

Ниво на съхранение. Цели и задачи на FAST VP

FAST VP означава напълно автоматизирано съхранение на нива за виртуален пул. Малко трудно? Няма проблем, сега ще го разберем. Подреждането е начин за организиране на съхранение на данни, при който има няколко нива (нива), където тези данни се съхраняват. Всеки има свои собствени характеристики. Най-важното: производителност, обем и цена на съхранение на единица информация. Разбира се, между тях има връзка.

Важна характеристика на подреждането е, че достъпът до данните се предоставя равномерно, независимо от нивото на съхранение, на което те се намират в момента, а размерът на пула е равен на сбора от размерите на ресурсите, включени в него. Това е мястото, където се крият разликите от кеша: размерът на кеша не се добавя към общия обем на ресурса (пула в този случай), а данните в кеша дублират някои фрагменти от основните медийни данни (или ще се дублират, ако данните от кеша все още не са записани). Освен това разпределението на данните по нива е скрито от потребителя. Тоест, той не вижда точно какви данни се намират на всяко ниво, въпреки че може да повлияе на това индиректно чрез задаване на политики (повече за тях по-късно).

Сега нека разгледаме характеристиките на изпълнението на нивата на съхранение в Unity. Unity има 3 нива или ниво:

  • Изключителна производителност (SSD)
  • Производителност (SAS HDD 10k/15k RPM)
  • Капацитет (NL-SAS HDD 7200 RPM)

Те са представени в низходящ ред на изпълнение и цена. Екстремната производителност включва само твърди дискове (SSD). Другите две нива включват магнитни дискови устройства, които се различават по скорост на въртене и съответно производителност.

Носителите за съхранение от едно и също ниво и със същия размер се комбинират в RAID масив, образувайки RAID група (RAID група, съкратено като RG); Можете да прочетете за наличните и препоръчителните нива на RAID в официалната документация. Пулове за съхранение се формират от RAID групи от едно или повече нива, от които след това се разпределя свободно пространство. И от пул пространството се разпределя за файлови системи и LUN.

FAST VP за съхранение на Unity: как работи

Защо имам нужда от Tiering?

Накратко и абстрактно: за постигане на по-добри резултати с минимални ресурси. По-конкретно, резултатът обикновено се разбира като набор от характеристики на системата за съхранение - скорост и време за достъп, цена на съхранение и други. Минимумът на ресурсите означава най-малко разходи: пари, енергия и т.н. FAST VP прилага механизми за преразпределение на данни между различни нива в системите за съхранение Unity/Unity XT. Ако ми вярвате, тогава можете да пропуснете следващия параграф. За останалото ще ви разкажа малко повече.

Правилното разпределение на данните между нивата на съхранение ви позволява да спестите от общите разходи за съхранение, като пожертвате скоростта на достъп до рядко използвана информация и подобрите производителността, като преместите често използвани данни на по-бързи носители. Тук някой може да възрази, че дори и без подреждане, нормалният администратор знае къде да постави какви данни, какви са желаните характеристики на система за съхранение за неговата задача и т.н. Това несъмнено е вярно, но ръчното разпространение на данни има своите недостатъци:

  • изисква време и внимание на администратора;
  • Не винаги е възможно да „преначертаете“ ресурсите за съхранение, за да отговарят на променящите се условия;
  • изчезва важно предимство: унифициран достъп до ресурси, разположени на различни нива на съхранение.

За да накарам администраторите за съхранение да се тревожат по-малко за сигурността на работата, ще добавя, че и тук е необходимо компетентно планиране на ресурсите. Сега, след като задачите на подреждането бяха очертани накратко, нека да разгледаме какво можете да очаквате от FAST VP. Сега е моментът да се върнем към дефиницията. Първите две думи – Fully Automated – буквално се превеждат като „напълно автоматизиран“ и означават, че разпределението между нивата става автоматично. Е, Virtual Pool е набор от данни, който включва ресурси от различни нива на съхранение. Ето как изглежда:

FAST VP за съхранение на Unity: как работи

Гледайки напред, ще кажа, че FAST VP премества данни само в рамките на един пул, а не между няколко пула.

Проблеми, разрешени от FAST VP

Нека първо говорим абстрактно. Имаме пул и някакъв механизъм, който може да преразпределя данни в този пул. Спомняйки си, че нашата цел е да постигнем максимална продуктивност, нека се запитаме: по какви начини можем да я постигнем? Може да има няколко от тях и тук FAST VP има какво да предложи на потребителя, тъй като технологията е нещо повече от просто ниво на съхранение. Ето няколко начина, по които FAST VP може да увеличи производителността на пула:

  • Разпределение на данни между различни видове дискове, нива
  • Разпределяне на данни между дискове от същия тип
  • Разпределение на данни при разширяване на пула

Преди да разгледаме как се решават тези задачи, трябва да знаем някои необходими факти за това как работи FAST VP. FAST VP работи с блокове с определен размер - 256 мегабайта. Това е най-малкото непрекъснато "парче" от данни, което може да бъде преместено. В документацията това е, което го наричат: slice. От гледна точка на FAST VP, всички RAID групи се състоят от набор от такива „парчета“. Съответно всички I/O статистики се натрупват за такива блокове данни. Защо беше избран този размер на блока и ще бъде ли намален? Блокът е доста голям, но това е компромис между детайлността на данните (по-малкият размер на блока означава по-точно разпределение) и наличните изчислителни ресурси: предвид съществуващите строги ограничения върху RAM и голям брой блокове, статистическите данни може да заемат твърде много и броят на изчисленията ще се увеличи пропорционално.

Как FAST VP разпределя данни към пула. политици

За да контролирате разполагането на данни в пул с активиран FAST VP, съществуват следните правила:

  • Най-високото налично ниво
  • Автоматично ниво
  • Започнете високо, след това автоматично ниво (по подразбиране)
  • Най-ниското налично ниво

Те засягат както първоначалното разпределение на блокове (първо записани данни), така и последващото преразпределение. Когато данните вече са разположени на дискове, преразпределението ще бъде инициирано по график или ръчно.

Highest Available Tier се опитва да постави нов блок на най-високоефективното ниво. Ако няма достатъчно място върху него, той се поставя на следващото най-продуктивно ниво, но след това данните могат да бъдат преместени на по-продуктивно ниво (ако има място или чрез изместване на други данни). Auto-Tier поставя нови данни на различни нива в зависимост от количеството налично пространство и се преразпределя в зависимост от търсенето и свободното пространство. Start High then Auto-Tier е правилото по подразбиране и също се препоръчва. Когато е поставен първоначално, той работи като най-високото налично ниво и след това данните се преместват в зависимост от статистиката за използването му. Политиката за най-ниското налично ниво се стреми да постави данни в най-малко продуктивното ниво.

Прехвърлянето на данни се извършва с нисък приоритет, за да не се намесва в полезната работа на системата за съхранение, но има настройка „Скорост на преместване на данни“, която променя приоритета. Тук има една особеност: не всички блокове данни имат еднакъв ред на преразпределение. Например блокове, маркирани като метаданни, първо ще бъдат преместени на по-бързо ниво. Метаданните са, така да се каже, „данни за данните“, някаква допълнителна информация, която не е потребителска информация, но съхранява нейното описание. Например информация във файловата система за това в кой блок се намира определен файл. Това означава, че скоростта на достъп до данните зависи от скоростта на достъп до метаданните. Като се има предвид, че метаданните обикновено са много по-малки по размер, ползите от преместването им на дискове с по-висока производителност се очаква да бъдат по-големи.

Критерии, които Fast VP използва в своята работа

Основният критерий за всеки блок, много грубо, е характеристиката на „търсенето“ на данните, което зависи от броя на операциите за четене и запис на фрагмент от данни. Ние наричаме тази характеристика „температура“. Има търсени (горещи) данни, които са „по-горещи“ от непотърсените данни. Изчислява се периодично, по подразбиране на интервали от един час.

Функцията за изчисляване на температурата има следните свойства:

  • При липса на I/O данните „охлаждат“ с течение на времето.
  • При повече или по-малко равно натоварване във времето температурата първо се повишава и след това се стабилизира в определен диапазон.

След това се вземат предвид правилата, описани по-горе, и свободното пространство на всяко ниво. За яснота ще дам снимка от документацията. Тук червеният, жълтият и синият цвят показват съответно блокове с високи, средни и ниски температури.

FAST VP за съхранение на Unity: как работи

Но да се върнем на задачите. И така, можем да започнем да анализираме какво се прави за решаване на проблемите на FAST VP.

A. Разпределение на данни между различни типове дискове, нива

Всъщност това е основната задача на FAST VP. Останалите в известен смисъл са негови производни. В зависимост от избраната политика, данните ще бъдат разпределени между различни нива на съхранение. На първо място се взема предвид политиката за разположение, след това температурата на блока и размера/скоростта на RAID групите.

За политиките за най-високо/най-ниско налично ниво всичко е доста просто. При другите две е така. Данните се разпределят на различни нива, като се вземат предвид размера и производителността на RAID групите: така че съотношението на общата „температура“ на блоковете към „условната максимална производителност“ на всяка RAID група е приблизително еднакво. Така натоварването се разпределя повече или по-малко равномерно. Повече търсени данни се преместват към бърза медия, а рядко използваните данни се преместват към по-бавна медия. В идеалния случай разпределението трябва да изглежда така:

FAST VP за съхранение на Unity: как работи

B. Разпределение на данни между дискове от същия тип

Не забравяйте, че в началото написах, че носителят за съхранение от едно или повече нивата са комбинирани в един басейн? В случай на едно ниво, FAST VP също има работа. За да постигнете максимална производителност на всяко ниво, препоръчително е данните да се разпределят равномерно между дисковете. Това (на теория) ще ви позволи да получите максимално количество IOPS. Данните в рамките на RAID група могат да се считат за разпределени равномерно между дисковете, но това не винаги е така между RAID групите. В случай на дисбаланс, FAST VP ще премества данни между RAID групите пропорционално на техния обем и „условна производителност“ (в числово изражение). За по-голяма яснота ще покажа схема за ребалансиране между три RAID групи:

FAST VP за съхранение на Unity: как работи

B. Разпределение на данни при разширяване на пула

Тази задача е специален случай на предишната и се изпълнява, когато към пула се добави RAID група. За да се гарантира, че новодобавената RAID група няма да остане неактивна, част от данните ще бъдат прехвърлени към нея, което означава, че натоварването ще бъде преразпределено между всички RAID групи.

Изравняване на износването на SSD

Използвайки изравняване на износването, FAST VP може да удължи живота на SSD, въпреки че тази функция не е пряко свързана със Storage Tiering. Тъй като данните за температурата вече са налични, броят на операциите за запис също се взема предвид и знаем как да преместваме блокове с данни, би било логично FAST VP да реши този проблем.

Ако броят на записите в една RAID група значително надвишава броя на записите в друга, FAST VP ще преразпредели данните в съответствие с броя на операциите за запис. От една страна, това облекчава натоварването и спестява ресурса на някои дискове, от друга страна, добавя „работа“ за по-малко натоварени, повишавайки общата производителност.

По този начин FAST VP поема традиционните предизвикателства на Storage Tiering и прави малко повече от това. Всичко това ви позволява да съхранявате данни доста ефективно в системата за съхранение на Unity.

Няколко съвета

  1. Не пренебрегвайте четенето на документацията. Има най-добри практики и те работят доста добре. Ако ги следвате, тогава, като правило, не възникват сериозни проблеми. Останалите съвети основно ги повтарят или допълват.
  2. Ако сте конфигурирали и активирали FAST VP, по-добре е да го оставите активиран. Нека разпространява данните в определеното му време и малко по малко от веднъж годишно и оказва сериозно влияние върху изпълнението на други задачи. В такива случаи преразпределението на данни може да отнеме много време.
  3. Бъдете внимателни при избора на прозорец за преместване. Въпреки че това е очевидно, опитайте се да изберете време с най-малко натоварване на Unity и разпределете достатъчен период от време.
  4. Планирайте разширяване на вашата система за съхранение, направете го навреме. Това е обща препоръка, която е важна и за FAST VP. Ако количеството свободно пространство е много малко, тогава движението на данни ще се забави или ще стане невъзможно. Особено ако сте пренебрегнали точка 2.
  5. Когато разширявате пул с активиран FAST VP, не трябва да започвате с най-бавните дискове. Тоест или добавяме всички планирани RAID групи наведнъж, или първо добавяме най-бързите дискове. В този случай преразпределянето на данни към нови „бързи“ дискове ще увеличи общата скорост на пула. В противен случай стартирането с „бавни“ дискове може да доведе до много неприятна ситуация. Първо, данните ще бъдат прехвърлени към нови, относително бавни дискове, а след това, когато се добавят по-бързи, в обратната посока. Тук има нюанси, свързани с различни политики на FAST VP, но като цяло е възможна подобна ситуация.

Ако разглеждате този продукт, можете да изпробвате Unity безплатно, като изтеглите виртуалното устройство Unity VSA.

FAST VP за съхранение на Unity: как работи

В края на материала споделям няколко полезни връзки:

Заключение

Бих искал да пиша за много, но разбирам, че не всички подробности ще бъдат интересни за читателя. Например, можете да говорите по-подробно за критериите, по които FAST VP взема решения за прехвърляне на данни, за процесите на анализиране на I/O статистика. Също така, темата за взаимодействие с Динамични басейни, и това заслужава отделна статия. Можете дори да фантазирате за развитието на тази технология. Надявам се да не е било скучно и да не ви отегчавам. Ще се видим отново!

Източник: www.habr.com

Добавяне на нов коментар