A teljesítménynövelő technológiák, amelyek SSD-k használatán alapulnak és már régóta alkalmazzák őket a tárolórendszerekben, már régóta léteznek. Először is, az SSD-k tárolóhelyként való alkalmazása 100%-osan hatékony, de drága. Ezért alkalmazzák a tiering és a cache technológiákat, ahol az SSD-ket csak a legkeresettebb („forró”) adatokhoz használják. A tiering jó megoldás a „forró” adatok hosszú távú (napok-hetek) használatára. A cache viszont rövid távú (percek-órák) felhasználásra alkalmas. Mindkét megoldás megvalósításra került a tárolórendszerekben. . Ebben a cikkben a második algoritmus megvalósítását fogjuk vizsgálni – .

Az SSD caching lényege, hogy SSD-t használnak közbenső cache-ként a merevlemezek és a vezérlő memóriája között. Az SSD teljesítménye természetesen alacsonyabb, mint a vezérlő saját cache-ának teljesítménye, de a kapacitása viszont sokkal nagyobb. Így egyfajta kompromisszumi megoldás születik a sebesség és a kapacitás között.
Az SSD cache olvasási használatának indikációi:
- A lényeges olvasási műveletek túlsúlya az írási műveletekkel szemben (leggyakrabban adatbázisok és webalkalmazások esetében);
- A merevlemezes tömb teljesítményével kapcsolatos szűk keresztmetszet jelenléte;
- A keresett adatok mennyisége kisebb, mint az SSD cache kapacitása.
Az SSD cache olvasás+írás használatának indikációi ugyanezek, a műveletek típusa kivételével – vegyes típus (például fájlszerver).
A tárolórendszerek többsége az SSD cache-t csak olvasási műveletekhez használja. A lényeges különbség köztük az, hogy a cache-t írásra is lehet használni. Az SSD caching funkció aktiválásához a QSAN tárolórendszerben külön engedély megvásárlása szükséges (elektronikus formában kerül forgalomba).
Az SSD gyorsítótár az XCubeSAN rendszerben fizikailag külön SSD gyorsítótár medencék formájában valósul meg. A rendszerben legfeljebb négy ilyen medence lehet. Minden medence természetesen a saját SSD készletét használja. A virtuális lemez tulajdonságaiban meghatározzuk, hogy az használni fogja-e a gyorsítótár medencét, és ha igen, melyiket. A kötetek gyorsítótár használatának engedélyezése és letiltása online módban végezhető el, anélkül, hogy le kellene állítani a bemeneti/kimeneti műveleteket. Ezenkívül „forró” cserével SSD-ket is adhatunk a medencéhez, vagy eltávolíthatjuk őket onnan. Az SSD gyorsítótár medence létrehozásakor ki kell választani, hogy melyik módban működik: csak olvasás vagy olvasás + írás. Ez meghatározza a fizikális elrendezését. Mivel több gyorsítótár medence is létezhet, ezért a funkcióik eltérőek lehetnek (tehát a rendszerben egyidejűleg lehetnek olvasásra és olvasásra + írásra szánt gyorsítótár medencék).
Ha a gyorsítótár medence csak olvasásra szolgál, az 1-8 SSD-ből állhat. A meghajtóknak nem kell azonos kapacitásúaknak és ugyanannak a gyártónak lenniük, mivel az NRAID+ struktúrába szerveződnek. Az összes SSD-t közösen használják a medencében. A rendszer automatikusan próbálja párhuzamosítani a beérkező kéréseket az összes SSD között a maximális teljesítmény elérése érdekében. Ha az egyik SSD hibásodik meg, az nem okoz komoly problémát: a gyorsítótár csupán a merevlemezeken tárolt adatok másolatát tartalmazza. Csak a hozzáférhető SSD gyorsítótár kapacitása csökken (vagy nullára csökken, ha az eredeti SSD gyorsítótárból egyetlen tárolóegység van használatban).

Ha a gyorsítótárat olvasás + írás műveletekhez használják, akkor a medencében lévő SSD-k számának párosnak kell lennie, mivel a tartalom párhuzamosítva van a tárolók párjai között (NRAID 1+ struktúrát használ). A gyorsítótár duplikálása szükséges, mivel olyan adatokat tartalmazhat, amelyek még nem kerültek rögzítésre a merevlemezeken. Ebben az esetben, ha egy SSD meghibásodik a gyorsítótár medencéből, az információvesztéshez vezetne. A NRAID 1+ esetén az SSD meghibásodása egyszerűen azt eredményezi, hogy a gyorsítótár „csak olvasás”-ra módosul, és a nem rögzített adatokat visszaírja a merevlemezekre. A hibás SSD cseréje után a gyorsítótár visszatér az eredeti üzemmódjába. Egyébként a nagyobb biztonság érdekében a gyorsítótár, amely olvasás + írás üzemmódban működik, dedikált hot spare-t is kaphat.

Az XCubeSAN SSD gyorsítótár funkciójának használata során számos követelmény áll fenn az adattároló vezérlők memóriájával kapcsolatban: minél több rendszermemória áll rendelkezésre, annál nagyobb gyorsítótár kapacitás érhető el.

Ellentétben a legtöbb adattároló gyártóval, akik csak be- és kikapcsolási lehetőséget kínálnak az SSD gyorsításhoz, a QSAN szélesebb lehetőségeket biztosít. Különösen, lehetőség van a gyorsítótár működési módjának kiválasztására a terhelés jellege alapján. Három előre beállított sablon áll rendelkezésre, amelyek a leginkább megfelelnek a megfelelő szolgáltatásoknak: adatbázis, fájlrendszer, webszolgáltatás. Ezen kívül a rendszergazda létrehozhatja saját profilját, beállítva a kívánt paraméterek értékeit:
- Blokkméret (Cache Block Size) – 1/2/4 MB
- Olvasási kérések száma, hogy a blokk másolásra kerüljön a gyorsítótárba (Populate-on-Read Threshold) – 1..4
- Írási kérések száma, hogy a blokk másolásra kerüljön a gyorsítótárba (Populate-on-Write Threshold) – 0..4

A profilok „élőben” módosíthatók, de természetesen a gyorsítótár tartalmának törlésével és új „melegítésével” járnak.
Az SSD gyorsítótár működési elvének vizsgálatakor kiemelhetők az alábbi alapvető műveletek:

Adatok olvasása, amikor azok nincsenek a gyorsítótárban
- A kérés a gazdagépről a vezérlőhöz érkezik;
- Mivel az igényelt adatok nincsenek az SSD gyorsítótárban, azok a merevlemezekről kerülnek kiolvasásra;
- Az olvasott adatokat a gazdagéphez küldik. Közben ellenőrzés folyik arról, hogy ezek a blokkok „forrók”-e;
- Ha igen, akkor ezek másolásra kerülnek az SSD gyorsítótárba a további felhasználás érdekében.

Adatok olvasása, amikor azok a gyorsítótárban vannak
- A kérés a gazdagépről a vezérlőhöz érkezik;
- Mivel a kért adatok az SSD gyorsítótárban vannak, onnan kerülnek kiolvasásra;
- Az olvasott adatokat a gazdagéphez küldik.

Adatok írása, ha a gyorsítótár olvasásra van konfigurálva
- Egy írási kérés a gazdagépről a vezérlőhöz érkezik;
- Az adatok a merevlemezekre kerülnek írásra;
- A gazdagép visszajelzést kap a sikeres írásról;
- Közben ellenőrzés történik, hogy a blokk „forró”-e (a Populate-on-Write Threshold paraméter összehasonlításával). Ha igen, akkor az SSD gyorsítótárba kerül a későbbi felhasználás céljából.

Adatok írása, ha a gyorsítótár olvasás+írás üzemmódban működik
- Egy írási kérés a gazdagépről a vezérlőhöz érkezik;
- Az adatok az SSD gyorsítótárba íródnak;
- A gazdagép visszajelzést kap a sikeres írásról;
- Az SSD gyorsítótárból származó adatok háttérben rögzítve vannak a merevlemezeken;
Eset ellenőrzése
Tesztkörnyezet
2 szerver (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) közvetlenül két porton keresztül van csatlakoztatva a XCubeSAN XS5224D (16GB RAM / vezérlő) tárolórendszerhez 16G Fibre Channel-en.
16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, RAID5 (15+1)-ben összevont, az adathalmazon, valamint 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s gyorsítótárként használták.
2 kötetet hoztak létre: egyet-egyet minden szerver számára.
1. teszt. SSD gyorsítótár csak olvasásra 1-8 SSD-vel
SSD Cache
- I/O típus: Testreszabás
- Gyorsítótár blokkméret: 4MB
- Olvasásra töltés küszöb: 1
- Írásra töltés küszöb: 0
I/O minta
- Eszköz: IOmeter V1.1.0
- Munkások: 1
- Függőleges (Soron mélység): 128
- Hozzáférési specifikációk: 4KB, 100% olvasás, 100% véletlen


Elméletileg, minél több SSD van a gyorsítótár medencében, annál jobb a teljesítmény. A gyakorlat ezt megerősítette. Az egyetlen jelentős növekedés a SSD-k számában, alacsony kötetek mellett nem vezet robbanásos hatáshoz.
2. teszt. SSD gyorsítótár olvasás + írás módban 2-8 SSD-vel
SSD Cache
- I/O típus: Testreszabás
- Gyorsítótár blokkméret: 4MB
- Olvasásra töltés küszöb: 1
- Írásra töltés küszöb: 1
I/O minta
- Eszköz: IOmeter V1.1.0
- Munkások: 1
- Függőleges (Soron mélység): 128
- Hozzáférési specifikációk: 4KB, 100% írás, 100% véletlen


Ugyanez az eredmény: robbanásszerű teljesítménynövekedés és skálázás a SSD-k számának növelésével.
Mindkét teszt során a munkadathalmaz mennyisége kisebb volt, mint a gyorsítótár összesített kapacitása. Ezért idővel minden blokk a gyorsítótárba másolt. A munka lényegében már SSD-n folyt, szinte érintetlenül hagyva a merevlemezeket. Ezeknek a teszteknek a célja, hogy szemléltessék a gyorsítótár felmelegítésének és teljesítményének skálázási hatékonyságát a SSD-k számának függvényében.
Most térjünk vissza a realitásokhoz, és ellenőrizzük a valós élethelyzetet, amikor az adatok volumene meghaladja a gyorsítótár méretét. Annak érdekében, hogy a teszt ésszerű időn belül zajlódjon le (a gyorsítótár "melegítés" ideje jelentősen megnő a kötet méretének növelésével), a kötet méretét 120GB-ra korlátozzuk.
3. teszt. Adatbázis működésének szimulálása
SSD Cache
- I/O típus: Adatbázis
- Gyorsítótár blokkméret: 1MB
- Olvasásra töltés küszöb: 2
- Írásra töltés küszöb: 1
I/O minta
- Eszköz: IOmeter V1.1.0
- Munkások: 1
- Függőleges (Soron mélység): 128
- Hozzáférési specifikációk: 8KB, 67% olvasás, 100% véletlen

Verdikt
Nyilvánvaló következtetés, hogy a SSD gyorsítótár használatának hatékony mértéke jelentős a tárolórendszerek teljesítményének növelésében. Ez az állítás teljes mértékben igaz: az SSD gyorsítótár funkció kiválóan van megvalósítva. Ez vonatkozik az olvasási és olvasás + írási módok támogatására, a munkafolyamatok rugalmas beállítására különböző felhasználási forgatókönyvekhez, valamint a rendszer összesített teljesítményére is. Ezért egy nagyon ésszerű áron (a licenc ára egyenértékű 1-2 SSD költségével) jelentősen növelhető az általános teljesítmény.
Forrás: habr.com
