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

Сега ще кажа какво няма да включва материалът. Няма да търся конкуренти и да сравнявам с тях. Също така не планирам да разказвам за подобни технологии с отворен код, тъй като любопитният читател вече знае за тях. И, разбира се, не възнамерявам да рекламирам нищо.
Покритие на съхранението. Цели и задачи на FAST VP
FAST VP се разширява като Пълно автоматизирано съхранение на данни за виртуален пул. Осложнено? Няма значение, сега ще се разберем. Покритие на съхранението – това е начин на организация на съхранението на данни, при който има няколко нива (tiers), на които тези данни се съхраняват. Всяко от тях притежава свои характеристики. Най-важните са: производителност, обем и цена на съхранение на единица информация. Разбира се, между тях има връзка.
Важно предимство на покритията е, че достъпът до данните се осигурява еднородно, независимо от това на кое ниво на съхранение в момента се намират, а размерът на пула е равен на сумата от размерите на ресурсите, които влизат в него. Тук се крият разликите от кеша: размерът на кеша не се прибавя към общия обем на ресурса (пула в този случай), а данните в кеша дублират някакъв фрагмент от данните на основния носител (или ще дублират, ако данните от кеша все още не са записани). Също така разпределението на данните по нива е скрито от потребителя. Тоест, той не вижда какви точно данни са разположени на всяко ниво, макар и да може да влияе на това индиректно чрез задаване на политики (за тях по-късно).
Сега нека погледнем особеностите на реализацията на покритие на съхранението в Unity. В Unity се отчита 3 нива, или tier-а:
- Изключителна производителност (SSD дискове)
- Производителност (SAS HDD 10k/15k RPM)
- Капацитет (NL-SAS HDD 7200 RPM)
Те са представени в реда на намаляване на производителността и цената. В Extreme performance влизат само твърдотелни устройства (SSD). В двата други tier’а – устройства с магнитни дискове, които се различават по скорост на въртене и, съответно, производителност.
Носителите на информация от един и същи слой и размер се обединяват в RAID-масив, образувайки RAID-група (RAID group, съкратено – RG); за наличните и препоръчителните нива на RAID можете да прочетете в официалната документация. От RAID-групите от един или повече нива се формират хранилищни пулове (Storage pool), от които след това се разпределя свободното пространство. А от пула вече се отделя пространство за файлови системи и LUN’и.

А защо ми е Tiering?
Ако трябва да кажа накратко и абстрактно: за да постигнете по-добри резултати, използвайки минимум ресурси. Ако бъдем по-конкретни, резултатът обикновено включва набор от характеристики на СХД – скорост и време за достъп, цена на съхранение и други. Под минимум ресурси се подразбират най-ниски разходи: пари, енергия и т.н. FAST VP именно реализира механизми за преразпределение на данни по различни нива в СХД Unity/Unity XT. Ако ми вярвате, можете да пропуснете следващия абзац. За останалите ще разкажа малко по-подробно.
Правилното разпределение на данни по нива за съхранение позволява да се спестят разходи за общата стойност на СХД, пожертвайки скоростта на достъп до някои рядко използвани данни, и да се повиши производителността, премествайки често използваните данни на по-бързи носители. Тук някой може да възрази, че и без tiering нормален администратор знае къде да постави различни данни, какви желателни характеристики на СХД са нужни за неговата задача и т.н. Несъмнено, това е вярно, но ръчното разпределение на данни има свои недостатъци:
- изисква време и внимание от администратора;
- не винаги успява да "пренастрои" ресурсите на СХД под променилите се условия;
- изчезва важното предимство: унифициран достъп до ресурсите, намиращи се на различни нива за съхранение.
За да се тревожат storage администраторите по-малко за сигурността на работните места, ще добавя, че грамотното планиране на ресурсите е необходимо и тук. Сега, когато задачите по tiers кратко са описани, нека видим какво можем да очакваме от FAST VP. Сега е моментът да се върнем към определението. Първите две думи – Fully Automated – буквално се превеждат като „пълно автоматизирано“ и означават, че разпределението по нива става автоматично. А Virtual Pool е пул от данни, който включва ресурси от различни нива на съхранение. Ето как изглежда това:

Предварително ще спомена, че FAST VP прехвърля данни само в рамките на един пул, а не между няколко пула.
Задачите, решавани от FAST VP
Първо, нека говорим абстрактно. Имаме пул и някакъв механизъм, който може да переразпределя данни в рамките на този пул. Имайки предвид, че задачата ни е постигане на максимална производителност, ще се запитаме: какви методи можем да използваме за това? Може да има няколко варианта, а FAST VP предлага на потребителите нещо повече от просто storage tiering. Ето как FAST VP може да увеличи производителността на пула:
- Разпределение на данни по различни типове дискове, нива
- Разпределение на данни сред дисковете от един тип
- Разпределение на данни при разширяване на пула
Преди да разгледаме как тези задачи се решават, трябва да знаем някои основни факти за работата на FAST VP. FAST VP работи с блокове с определен размер – 256 мегабайта. Това е минималната непрекъсната „част“ от данни, която може да бъде прехвърлена. В документацията, тя се нарича точно така: slice. От гледна точка на FAST VP, всички RAID групи се състоят от набор от такива „части“. Съответно, всяка статистика за входящи и изходящи операции се натрупва за такива блокове данни. Защо е избран точно този размер на блока и ще бъде ли намален? Блокът е достатъчно голям, но това е компромис между грануларността на данните (по-малък размер на блока – по-точно разпределение) и наличните изчислителни ресурси: при съществуващите строги ограничения на оперативната памет и голямото количество блокове, данните в статистиката могат да заемат твърде много, а на броят на изчисленията ще нарасне пропорционално.
Как FAST VP разпределя данни в пула. Политики
За да управлявате разполагането на данни в пул с активиран FAST VP, съществуват следните политики:
- Най-висок достъпен слой
- Автоматично разпределяне
- Започнете с високо ниво и след това автоматично разпределяне (по подразбиране)
- Най-нисък достъпен слой
Те влияят както на първоначалното разположение на блока (когато данните се записват за първи път), така и на последващото преразпределение. Когато данните вече са разположени на дисковете, преразпределението ще бъде инициирано по график или ръчно.
Най-високият достъпен слой опитва да разположи нов блок на най-производителния слой. При липса на място на него – на следващия по производителност, но след това данните могат да бъдат прехвърлени на по-производителен слой (ако има свободно място или чрез изместване на други данни). Автоматичното разпределяне разполага нови данни на различни слоеве в зависимост от размера на наличното пространство, а преразпределянето става в зависимост от търсенето и свободното място. Започнете с високо ниво и след това автоматично разпределяне – политика по подразбиране и също така препоръчвана. При първоначалното разположение работи като Най-висок достъпен слой, а след това се извършва преместване на данните в зависимост от статистиката за използване. Политиката Най-нисък достъпен слой се стреми да разположи данните на най-малко производителния слой.
Преместването на данни се извършва с нисък приоритет, за да не пречи на полезната работа на СХД, но има настройка „Скорост на преместване на данни“, която променя приоритета. Има особеност: не всички блокове данни имат еднаква последователност на преразпределение. Например, блоковете, маркирани като метаданни, ще бъдат преместени на по-бърз слой на първо място. Метаданните са, ако може да се каже така, „данни за данните“, допълнителна информация, която не е потребителски данни, но съхранява тяхното описание. Например, информация в файловата система за това в кой блок се намира конкретен файл. Следователно, скоростта на достъп до данни зависи от скоростта на достъп до метаданните. Като се има предвид, че метаданните обикновено са много по-малки по размер, се очаква печалбата от тяхното преместване на по-производителни дискове да бъде по-голяма.
Критериите, които Fast VP използва в работата
Основният критерий за всеки блок, много грубо казано, е характеристиката "търсеност" на данните, която зависи от броя на операциите за четене и запис на фрагмента от данни. Тази характеристика при нас се нарича "Температура". Има търсени (hot) данни, които са "по-горещи" от нетърсените. Тя се изчислява периодично, по подразбиране с интервал от един час.
Функцията за изчисление на температурата има следните свойства:
- При отсъствие на вход-изход, данните с времето "изстиват".
- При по-или по-малко еднакво натоварване във времето, температурата първо нараства и след това се стабилизира в определен диапазон.
След това се вземат предвид политиките, описани по-горе, и свободното пространство на всеки tier. За нагледност ще представя и картинка от документацията. Тук с червено, жълто и синьо са обозначени блоковете с висока, средна и ниска температура съответно.

Но да се върнем на задачите. И така, може да започнем разглеждането на това, което се прави за решаване на задачите FAST VP.
А. Разпределение на данните по различни типове дискове и нива
Собствено казано, това е основната задача на FAST VP. Останалите, в известен смисъл, са производни от нея. В зависимост от избраната политика, данните ще бъдат разпределени по различни нива на съхранение. На първо място се взема предвид политиката за разполагане, след което температурата на блоковете и размерът/скоростта на RAID-групите.
За политиките Highest/Lowest Available Tier всичко е достатъчно просто. За другите две положението е такова. По различни нива данните се разпределят с оглед на размера и производителността на RAID-групите: така, че съотношението на сумарната "температура" на блоковете към "условната максимална производителност" на всяка RAID-група да бъде приблизително еднакво. По този начин, натоварването се разпределя по-или по-малко равномерно. По-търсените данни се премества на бързи носители, рядко използваните - на по-бавни. В идеалния случай разпределението трябва да е приблизително такова:

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

В. Разпределение на данни при разширение на пула
Тази задача е специален случай на предишната и се изпълнява, когато в пул се добавя RAID група. За да не изостава новата RAID група, част от данните ще бъде преместена към нея, което ще доведе до преразпределение на натоварването на всички RAID групи.
Изравняване на износването на SSD
С помощта на изравняване на износването, FAST VP може да удължи живота на SSD, въпреки че тази функция не е пряко свързана с Storage Tiering. Тъй като информацията за температурата вече съществува, количеството операции за запис също се взема предвид, можем да преместим блоковете с данни, така че логично FAST VP би искал да реши и тази задача.
В случай, че количеството записи в една RAID група значително надвишава количеството записи в друга, FAST VP ще преразпределя данните съобразно с количеството операции на запис. От една страна, това облекчава натоварването и запазва ресурсите на определени дискове, а от друга страна увеличава „работата“ за по-малко натоварените, повишавайки общата производителност.
Така FAST VP поема традиционните задачи на Storage Tiering и прави още малко над това. Всичко това позволява доста ефективно съхранение на данни в системите за съхранение на данни от семейството Unity.
Няколко съвета
- Не пренебрегвайте четенето на документацията. Има добри практики и те работят доста добре. Ако им се следва, сериозни проблеми обикновено не възникват. Останалите съвети основно повтарят или допълват тези.
- Ако сте настроили и включили FAST VP, по-добре го оставете включен. Нека разпределя данните в отреденото за него време и постепенно, отколкото веднъж в годината и да оказва сериозно влияние на производителността на другите задачи. В такива случаи преразпределението на данните може да отнеме много време.
- Внимателно поднесете избора на прозорец за релокация. Въпреки че това е очевидно, опитайте се да изберете момент с най-малко натоварване на Unity и отделете достатъчно време.
- Планирайте разширението на СХД, правете го навреме. Това е обща препоръка, която е важна и за FAST VP. Ако обемът на свободното пространство е много малък, прехвърлянето на данни ще се забави или ще стане невъзможно. Особено, ако сте пренебрегнали точка 2.
- При разширяване на пула с включен FAST VP, не трябва да започвате с най-бавните дискове. Тоест, или добавяте всички планирани RAID групи веднага, или първо добавяте най-бързите дискове. В такъв случай преразпределението на данни на новите "бързи" дискове ще увеличи общата скорост на пула. В противен случай, ако започнете с "бавните" дискове, може да се получи много неприятна ситуация. Първо ще се извърши пренос на данни към новите, относително бавни дискове, а след това, при добавяне на по-бързи, в обратна посока. Тук има нюанси, свързани с различни политики на FAST VP, но в общия случай такава ситуация е възможна.
Ако се интересувате от този продукт, можете да опитате Unity в действие и безплатно, изтегляйки Unity VSA виртуален инструмент.

В заключение на материала споделям няколко полезни линка:
- Страница
- – кратко описание на функцията
- , формат pdf
Заключение
Искам да напиша много неща, но разбирам, че не всички подробности ще са интересни за читателя. Например, може по-подробно да разкажа за критериите, по които FAST VP взима решение за пренос на данни, за процесите на анализ на статистика по входно-изходни операции. Също така съвсем не е засегната темата за взаимодействието с , а това налага отделна статия. Може дори да пофантазираме за развитието на тази технология. Надявам се, че не беше скучно и не ви уморих. До нови срещи!
Източник: habr.com
