Технологиите за повишаване на производителността, базирани на използването на SSD, вече отдавна са изобретени и широко се прилагат в СХД. Първо и най-важно, е използването на SSD като пространство за съхранение, което е 100% ефективно, но скъпо. Поради това се използват технологии за тиринг и кеширане, при което SSD се използват само за най-търсените („горещи“) данни. Тирингът е подходящ за сценарии на дългосрочна (дни-седмици) употреба на „горещи“ данни. А кеширането, обратно, е предназначено за краткосрочна (минути-часове) употреба. И двата варианта са реализирани в СХД. . В тази статия ще разгледаме реализацията на втория алгоритъм – .

Същността на технологията за кеширане на SSD е използването на SSD като междинен кеш между твърдите дискове и оперативната памет на контролера. Производителността на SSD, разбира се, е по-ниска от производителността на собствения кеш на контролера, но обемът е с порядък по-голям. Следователно получаваме компромис между скоростта и обема.
Показания за използване на SSD кеш за четене:
- Преобладаване на операциите на четене над операциите на запис (най-често характерно за бази данни и уеб приложения);
- Наличие на „тясно място“ под формата на производителността на масива от твърди дискове;
- Обемът на търсените данни е по-малък от обема на SSD кеша.
Показанията за използване на SSD кеш за четене + запис са същите, с изключение на характера на операциите – смесен тип (например, файл сървър).
Повечето производители на СХД използват в продуктите си SSD кеш само за операции на четене. Принципиалната разлика от тях е възможността за използване на кеша също и за запис. За активиране на функционалността за кеширане на SSD в СХД QSAN се изисква закупуването на отделна лицензия (предлага се в електронен вид).
SSD кешът в XCubeSAN е физически реализиран под формата на отделни SSD кеш пулове. В системата могат да бъдат налични до четири. Всеки пул, разбира се, използва свой собствен набор от SSD. В свойствата на виртуалния диск определяме дали ще използва кеш пул и кой точно. Включването и изключването на кеша за томове може да се извършва в режим онлайн без спиране на вход/изход. Също така, SSD може да бъде добавян или премахван от пула в 'горещ' режим. При създаването на SSD кеш пул е необходимо да изберете в какъв режим ще работи: само за четене или четене + запис. От това зависи физическата му организация. Понеже може да има няколко кеш пула, функционалността им може да е различна (т.е. в системата могат да съществуват одновременно кеш пулове за четене и за четене + запис).
В случай на използване на кеш пул само за четене, той може да се състои от 1-8 SSD. Дисковете не е задължително да са с еднаква големина и от един производител, тъй като те се обединяват в структурата NRAID+. Всички SSD в пула се използват съвместно. Системата самостоятелно се старае да разпределя постъпващите заявки между всички SSD за постигане на максимална производителност. В случай на повреда на един от SSD, нищо страшно няма да се случи: кешът съдържа само копие на данните, които се съхраняват на масива от твърди дискове. Просто обемът на достъпния SSD кеш ще намалее (или ще стане нулев в случай на използване на първоначалния SSD кеш от един носител).

Ако кешът се използва за операции четене + запис, то количеството SSD в пула трябва да бъде кратно на две, тъй като съдържанието се огледално копира на двойки носители (използва се структурата NRAID 1+). Дублирането на кеша е необходимо, тъй като в него могат да съдържат данни, които все още не са записани на твърдите дискове. В този случай, ако SSD от кеш пула се повреди, това би довело до загуба на информация. В случай на NRAID 1+, отказ на SSD просто ще доведе кеша до състояние на работа 'само за четене' с нулиране на незаписаните данни на масива от твърди дискове. След замяна на неработещия SSD, кешът ще се върне в първоначалния си работен режим. О, между другото, за по-голяма сигурност на кеша, работещ на четене + запис, може да се назначи специален hot spare.

При използване на функцията SSD кеширане в XCubeSAN има редица изисквания относно обема на паметта на контролерите на СХД: колкото по-голяма е системната памет, толкова по-голям ще е обемът на кеш пул, достъпен за използване.

В отличие от повечето производители на СХД, които предлагат само опция за включване/изключване на SSD кеша, QSAN предлага много повече възможности. По-специално, можете да изберете режим на работа на кеша в зависимост от характера на натоварването. Има три предварително зададени шаблона, които са най-близки по своята работа до съответните услуги: база данни, файлова система, уеб услуга. Освен това администраторът може да създаде свой собствен профил, задавайки необходимите стойности за параметрите:
- Размер на блока (Cache Block Size) – 1/2/4 MB
- Брой заявки за четене на блока, за да бъде копиран в кеша (Populate-on-Read Threshold) – 1..4
- Брой заявки за запис на блока, за да бъде копиран в кеша (Populate-on-Write Threshold) – 0..4

Профилите могат да се променят „на лето“, но, разбира се, с нулиране на съдържанието на кеша и неговото ново „прогряване“.
Разглеждайки принципа на работа на SSD кеша, можем да изберем основните операции при работа с него:

Четене на данни, когато те не са налични в кеша
- Запитването от хоста постъпва в контролера;
- Тъй като запрашваните данни не са налични в SSD кеша, те се четат от твърдите дискове;
- Четените данни се изпращат на хоста. В същото време се проверява дали тези блокове са „горещи“;
- Ако да, те се копират в SSD кеша за по-нататъшна употреба.

Четене на данни, когато те са налични в кеша
- Запитването от хоста постъпва в контролера;
- Тъй като запрашваните данни са налични в SSD кеша, те се четат от там;
- Четените данни се изпращат на хоста.

Запис на данни при използване на кеша за четене
- Запитването за запис от хоста постъпва в контролера;
- Данните се записват на твърдите дискове;
- Хостът получава отговор за успешен запис;
- В същото време се проверява дали блокът е „горещ“ (сравнява се параметърът Populate-on-Write Threshold). Ако да, той се копира в SSD кеша за последваща употреба.

Запис на данни при използване на кеша за четене+запис
- Запитването за запис от хоста постъпва в контролера;
- Данните се записват в SSD кеша;
- Хостът получава отговор за успешен запис;
- Данните от SSD кеша се записват във фон режим на твърдите дискове;
Проверка в действие
Тестов стенд
2 сървъра (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) са свързани с два порта чрез Fibre Channel 16G директно към SAN XCubeSAN XS5224D (16GB RAM/контролер).
Използвани са 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, комбинирани в RAID5 (15+1), за масива с данни и 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s за кеш
Създадени са 2 тома: по един за всеки сървър.
Тест 1. SSD кеш само за четене с 1-8 SSD
SSD Cache
- I/O Тип: Персонализация
- Размер на кеш блока: 4MB
- Праг за запълване при четене: 1
- Праг за запълване при запис: 0
I/O Патерн
- Инструмент: IOmeter V1.1.0
- Работници: 1
- Изчакващи (дълбочина на опашката): 128
- Спецификации за достъп: 4KB, 100% Четене, 100% Случайно


В теорията, колкото повече SSD в кеш пула, толкова по-висока е производителността. На практика това беше потвърдено. Единственото, значително увеличаване на броя SSD при малък брой тома не води до взривен ефект.
Тест 2. SSD кеш в режим четене + запис с 2-8 SSD
SSD Cache
- I/O Тип: Персонализация
- Размер на кеш блока: 4MB
- Праг за запълване при четене: 1
- Праг за запълване при запис: 1
I/O Патерн
- Инструмент: IOmeter V1.1.0
- Работници: 1
- Изчакващи (дълбочина на опашката): 128
- Спецификации за достъп: 4KB, 100% Запис, 100% Случайно


Същият резултат: взривен растеж на производителността и мащабиране при увеличаване на броя SSD.
В двата теста обемът на работните данни беше по-малък от общия обем на кеша. Следователно с времето всички блокове бяха копирани в кеша. И работата вече, по същество, се водеше със SSD, практически без да засяга твърдите дискове. Целта на тези тестове беше наглядно да демонстрира ефективността на нагряването на кеша и мащабирането на неговата производителност в зависимост от броя SSD.
Сега нека се върнем на земята и проверим по-жизнена ситуация, когато обемът на данните е по-голям от размера на кеша. За да премине тестът в разумно време (срокът на "прогряване" на кеша силно нараства с увеличаване на размера на тома), ограничаваме се до размер на тома от 120GB.
Тест 3. Емуляция на работа с база данни
SSD Cache
- I/O Тип: База данни
- Размер на кеш блока: 1MB
- Праг за запълване при четене: 2
- Праг за запълване при запис: 1
I/O Патерн
- Инструмент: IOmeter V1.1.0
- Работници: 1
- Изчакващи (дълбочина на опашката): 128
- Спецификации за достъп: 8KB, 67% Четене, 100% Случайно

Присъда
Като очевиден извод, разбира се, се налага не лоша ефективност на използването на SSD кеша за повишаване на производителността на всяка СХД. Приложимо към Твърдението важи в пълна сила: функцията за SSD кеширане е реализирана прекрасно. Това важи за поддръжката на режимите на четене и четене + запис, гъвкавата настройка за работа при всякакви сценарии на употреба, както и за крайната производителност на системата като цяло. Следователно, на много разумна цена (цената на лицензията е сравнима с цената на 1-2 SSD) може значително да се повиши общата производителност.
Източник: habr.com
