Tehnologije povećanja performansi temeljene na korištenju SSD-a, koje se široko primjenjuju u SAN-ovima, odavno su izumljene. Prije svega, to je korištenje SSD-a kao prostora za pohranu, što je 100% učinkovito, ali skupo. Stoga se primjenjuju tehnologije tieringa i keširanja, gdje se SSD koristi samo za najtraženije ('vruće') podatke. Tiering je dobar za scenarije dugotrajne (dani-tjedni) upotrebe 'vrućih' podataka, dok je keširanje suprotno, za kratkotrajnu (minute-sati) upotrebu. Oba ova rješenja su implementirana u SAN-ovima. . U ovom članku ćemo razmotriti implementaciju drugog algoritma - .

Suština tehnologije SSD keširanja je upotreba SSD-a kao međuspremnika između tvrdih diskova i radne memorije kontrolera. Performanse SSD-a su, naravno, niže od performansi samog keša kontrolera, ali je njegova kapacitet znatno veći. Stoga dobijamo određeni kompromis između brzine i kapaciteta.
Pokazanja za korištenje SSD keša za čitanje:
- Prevladavanje operacija čitanja nad operacijama pisanja (najčešće karakteristično za baze podataka i web aplikacije);
- Postojanje uskog grla u performansama niza tvrdih diskova;
- Obim traženih podataka manji od obima SSD keša.
Pokazanja za korištenje SSD keša za čitanje i pisanje su isti razlozi, osim prirode operacija - mješoviti tip (na primjer, datotečni poslužitelj).
Većina proizvođača SAN-ova koristi SSD keš u svojim proizvodima samo za operacije čitanja. Suštinska razlika od njih je mogućnost korištenja keša i za pisanje. Za aktivaciju funkcionalnosti SSD keširanja u SAN-u QSAN potrebna je kupovina posebne licence (isporučuje se u elektronskom obliku).
SSD cache in XCubeSAN is physically implemented as separate SSD cache pools. The system can have up to four of them. Each pool, of course, uses its own set of SSDs. In the properties of the virtual disk, we define whether it will use the cache pool and which one specifically. Enabling and disabling cache usage for volumes can be done online without stopping I/O. SSDs can also be added to and removed from the pool on the fly. When creating an SSD cache pool, it is necessary to choose its operating mode: read-only or read+write. This affects its physical organization. Since there can be multiple cache pools, their functionality can vary (meaning that the system can simultaneously have cache pools for reading and for reading+writing).
If the cache pool is used only for reading, it can consist of 1-8 SSDs. The disks do not necessarily have to be of the same capacity or vendor, as they are combined into an NRAID+ structure. All SSDs in the pool are used jointly. The system independently tries to parallelize incoming requests among all SSDs to achieve maximum performance. If one of the SSDs fails, nothing catastrophic will happen: the cache only contains a copy of the data stored on the array of hard disks. The available SSD cache capacity will simply decrease (or become zero if the original SSD cache was from a single drive).

If the cache is used for read + write operations, the number of SSDs in the pool must be even, as the content is mirrored across pairs of drives (using an NRAID 1+ structure). Caching needs duplication because it may hold data that has yet to be written to the hard disks. In this case, if an SSD in the cache pool fails, it would lead to data loss. However, in the case of NRAID 1+, SSD failure will simply cause the cache to switch to "read-only" mode, with unrecorded data being flushed to the array of hard disks. After replacing the faulty SSD, the cache will return to its original operating mode. For greater security, a dedicated hot spare can be assigned to caches operating in read + write.

Kada se koristi SSD caching funkcija u XCubeSAN-u, postoji niz zahtjeva za kapacitetom memorije kontrolera SAN-a: što je veća sistemska memorija, veći će biti i volumen cache-poola.

Za razliku od većine proizvođača SAN-a, koji nude samo opciju uključivanja/isključivanja SSD cache-a, QSAN pruža šire mogućnosti. Konkretno, može se odabrati način rada cache-a ovisno o vrsti opterećenja. Postoje tri unaprijed postavljena predloška, koji su najbliži radu s odgovarajućim uslugama: baza podataka, datotečni sustav, web usluga. Osim toga, administrator može stvoriti vlastiti profil, postavljajući željene vrijednosti parametara:
- Veličina bloka (Cache Block Size) – 1/2/4 MB
- Broj zahtjeva za čitanje bloka da bi bio kopiran u cache (Populate-on-Read Threshold) – 1..4
- Broj zahtjeva za zapis bloka da bi bio kopiran u cache (Populate-on-Write Threshold) – 0..4

Profili se mogu mijenjati 'u hodu', ali naravno uz poništavanje sadržaja cache-a i njegovo novo 'zagrijavanje'.
Razmatrajući princip rada SSD cache-a, mogu se istaknuti osnovne operacije prilikom rada s njim:

Čitanje podataka kada nedostaju u cache-u
- Zahtjev s hosta dolazi u kontroler;
- Budući da traženi podaci nisu u SSD cache-u, čitaju se s tvrdih diskova;
- Pročitani podaci se šalju hostu. Istovremeno se provjerava jesu li ti blokovi 'vrući';
- Ako jesu, kopiraju se u SSD cache za daljnju upotrebu.

Čitanje podataka kada su prisutni u cache-u
- Zahtjev s hosta dolazi u kontroler;
- Budući da su traženi podaci prisutni u SSD cache-u, čitaju se odatle;
- Pročitani podaci se šalju hostu.

Zapis podataka prilikom korištenja cache-a za čitanje
- Zahtjev za zapis s hosta dolazi u kontroler;
- Podaci se zapisuju na tvrde diskove;
- Hostu se vraća odgovor o uspješnom zapisu;
- Istovremeno se provjerava je li blok 'vruć' (uspoređuje se parametar Populate-on-Write Threshold). Ako jest, kopira se u SSD cache za daljnju upotrebu.

Zapis podataka prilikom korištenja cache-a za čitanje + pisanje
- Zahtjev za zapis s hosta dolazi u kontroler;
- Podaci se zapisuju u SSD cache;
- Hostu se vraća odgovor o uspješnom zapisu;
- Podaci iz SSD predmemorije se u pozadini zapisuju na tvrde diskove;
Provjera u akciji
Testni sto
2 servera (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) povezana su preko dva porta putem Fibre Channel 16G izravno na SAN XCubeSAN XS5224D (16GB RAM/kontroler).
Koristilo se 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, spojene u RAID5 (15+1), za niz s podacima i 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s kao predmemorija
Stvorena su 2 volumena: po jedan za svaki server.
Test 1. SSD predmemorija samo za čitanje s 1-8 SSD
SSD Cache
- I/O Tip: Prilagodba
- Veličina bloka predmemorije: 4MB
- Prag za učitavanje po čitanju: 1
- Prag za učitavanje po pisanju: 0
I/O Obrazac
- Alat: IOmeter V1.1.0
- Radnici: 1
- Neodgovarajući (Dubina Reda): 128
- Specifikacije pristupa: 4KB, 100% Čitanje, 100% Nasumično


U teoriji, što više SSD-ova u bazenu predmemorije, to je viša izvedba. U praksi se to također potvrdilo. Jedina značajna povećanja broja SSD-ova pri malom broju volumena ne dovode do eksplozivnog učinka.
Test 2. SSD predmemorija u režimu čitanja + pisanja s 2-8 SSD
SSD Cache
- I/O Tip: Prilagodba
- Veličina bloka predmemorije: 4MB
- Prag za učitavanje po čitanju: 1
- Prag za učitavanje po pisanju: 1
I/O Obrazac
- Alat: IOmeter V1.1.0
- Radnici: 1
- Neodgovarajući (Dubina Reda): 128
- Specifikacije pristupa: 4KB, 100% Pisanje, 100% Nasumično


Isti rezultat: eksplozivni rast izvedbe i skaliranje s povećanjem broja SSD-ova.
U oba testa volumen radnih podataka bio je manji od ukupnog volumena predmemorije. Stoga su s vremenom svi blokovi kopirani u predmemoriju. I rad se već, u suštini, odvijao s SSD-ovima, gotovo ne dotičući tvrde diskove. Cilj ovih testova bio je očito prikazati učinkovitost zagrijavanja predmemorije i skaliranja njezine izvedbe u ovisnosti o broju SSD-ova.
Sada se vraćamo s neba na zemlju i provjeravamo realniju situaciju kada je volumen podataka veći od veličine predmemorije. Kako bi test prošao u razumnom vremenu (vrijeme "zagrijavanja" predmemorije znatno se povećava s povećanjem veličine volumena), ograničimo se na veličinu volumena od 120GB.
Test 3. Emulacija rada baze podataka
SSD Cache
- I/O Tip: Baza podataka
- Veličina bloka predmemorije: 1MB
- Prag za učitavanje po čitanju: 2
- Prag za učitavanje po pisanju: 1
I/O Obrazac
- Alat: IOmeter V1.1.0
- Radnici: 1
- Neodgovarajući (Dubina Reda): 128
- Specifikacije pristupa: 8KB, 67% Čitanje, 100% Nasumično

Presuda
Kao očiti zaključak, svakako se nameće dobra učinkovitost korištenja SSD predmemorije za poboljšanje izvedbe bilo kojeg SAN-a. Primjenjivo na Ova tvrdnja se u potpunosti odnosi na to: funkcija SSD keširanja je izvršna izvanredno. To se odnosi na podršku režimima čitanja i čitanja + pisanja, fleksibilnoj konfiguraciji rada za sve scenarije korištenja, kao i konačnoj ukupnoj performansi sustava. Stoga, za veoma razumne troškove (cijena licence je usporediva s cijenom 1-2 SSD-a) moguće je značajno poboljšati ukupnu performansu.
Izvor: habr.com
