Tehnologije za poboljšanje performansi zasnovane na korišćenju SSD-a i koje se široko koriste u sistemima za skladištenje već su dugo izmišljene. Prije svega, to je korištenje SSD-a kao skladišnog prostora, što je 100% efikasno, ali skupo. Stoga se koriste zamorne tehnologije i tehnologije keširanja, gdje se SSD-ovi koriste samo za najpopularnije („vruće“) podatke. Niziranje je dobro za scenarije dugotrajne (dani-sedmice) upotrebe „vrućih“ podataka. Keširanje je, naprotiv, za kratkoročnu (minuti-sati) upotrebu. Obje ove opcije su implementirane u sistemu za skladištenje . U ovom članku ćemo pogledati implementaciju drugog algoritma - .

Suština tehnologije keširanja SSD-a je korištenje SSD-a kao posredne keš memorije između tvrdih diskova i RAM-a kontrolera. Performanse SSD-a su, naravno, niže od performansi vlastite keš memorije kontrolera, ali je volumen za red veličine veći. Dakle, dobijamo određeni kompromis između brzine i jačine zvuka.
Indikacije za korištenje SSD keš memorije za čitanje:
- Prevladavanje operacija čitanja nad operacijama pisanja (najčešće tipično za baze podataka i web aplikacije);
- Prisutnost uskog grla u obliku performansi niza tvrdog diska;
- Količina potrebnih podataka je manja od veličine SSD keša.
Indikacije za korišćenje SSD keš memorije za čitanje+pisanje su iste, osim prirode operacija – mešoviti tip (na primer, server datoteka).
Većina dobavljača skladišta koristi SSD keš memoriju samo za čitanje u svojim proizvodima. Osnovna razlika Oni također pružaju mogućnost korištenja keša za pisanje. Da biste aktivirali funkciju SSD keširanja u QSAN sistemima za skladištenje, morate kupiti posebnu licencu (isporučuju se elektronski).
SSD keš memorija u XCubeSAN-u je fizički implementirana u obliku odvojenih SSD keš spremišta. U sistemu ih može biti do četiri. Svaki bazen, naravno, koristi svoj vlastiti set SSD-ova. I već u svojstvima virtualnog diska određujemo hoće li koristiti keš spremište i koje. Omogućavanje i onemogućavanje upotrebe keša za volumene može se obaviti na mreži bez zaustavljanja I/O. Također možete vruće dodati SSD-ove u bazen i ukloniti ih odatle. Prilikom kreiranja predmemorije SSD bazena, morate odabrati u kojem će načinu rada raditi: samo za čitanje ili čitanje+pisanje. O tome zavisi njegova fizička organizacija. S obzirom da može postojati nekoliko spremišta keša, njihova funkcionalnost može biti različita (to jest, sistem može istovremeno imati spremišta keša za čitanje i čitanje+pisanje).
Ako se koristi spremište keš memorije samo za čitanje, može se sastojati od 1-8 SSD-ova. Diskovi ne moraju biti istog kapaciteta i istog proizvođača, jer su kombinovani u NRAID+ strukturu. Svi SSD-ovi u bazenu su zajednički. Sistem samostalno pokušava da paralelizira dolazne zahtjeve između svih SSD-ova kako bi postigao maksimalne performanse. Ako jedan od SSD-ova pokvari, neće se dogoditi ništa loše: na kraju krajeva, keš sadrži samo kopiju podataka pohranjenih na nizu tvrdih diskova. Samo će se količina dostupne SSD keš memorije smanjiti (ili postati nula ako koristite originalnu SSD keš memoriju s jednog diska).

Ako se keš memorija koristi za operacije čitanja + pisanja, tada bi broj SSD-ova u spremištu trebao biti višekratnik dva, budući da se sadržaj preslikava na parove diskova (koristi se struktura NRAID 1+). Dupliciranje keš memorije je neophodno jer može sadržavati podatke koji još nisu upisani na čvrste diskove. I u ovom slučaju, kvar SSD-a iz keš spremišta bi doveo do gubitka informacija. U slučaju NRAID 1+, kvar SSD-a će jednostavno dovesti do toga da će keš biti prebačen u stanje samo za čitanje, a nenapisani podaci će biti izbačeni na niz tvrdog diska. Nakon zamjene neispravnog SSD-a, keš će se vratiti u prvobitni način rada. Usput, za veću sigurnost, možete dodijeliti namjenske vruće rezerve kešu za čitanje + upisivanje.

Kada koristite funkciju SSD keširanja u XCubeSAN-u, postoji niz zahtjeva za količinu memorije kontrolera za pohranu: što je više sistemske memorije, to će veće spremište keš memorije biti dostupno.

Za razliku od većine proizvođača sistema za skladištenje podataka, koji nude samo opciju uključivanja/isključivanja SSD keš memorije, QSAN pruža više opcija. Konkretno, možete odabrati način rada keša ovisno o prirodi opterećenja. Postoje tri unapred postavljena šablona koji su po svom radu najbliži odgovarajućim servisima: baza podataka, sistem datoteka, web servis. Osim toga, administrator može kreirati vlastiti profil postavljanjem potrebnih vrijednosti parametara:
- Veličina bloka (Cache Block Size) – 1/2/4 MB
- Broj zahtjeva za čitanje bloka tako da se kopira u keš memoriju (Populate-on-Read Threshold) – 1..4
- Broj zahtjeva za pisanje bloka tako da se kopira u keš memoriju (Populate-on-Write Threshold) – 0..4

Profili se mogu menjati u hodu, ali, naravno, sa sadržajem resetovanja keša i njegovim novim „zagrevanjem“.
S obzirom na princip rada SSD keša, možemo istaknuti glavne operacije pri radu s njim:

Čitanje podataka kada nisu u kešu
- Zahtjev od hosta stiže kontroloru;
- Pošto se traženi ne nalaze u SSD kešu, oni se čitaju sa tvrdih diskova;
- Pročitani podaci se šalju hostu. Istovremeno se vrši provjera da li su ovi blokovi „vrući“;
- Ako da, onda se kopiraju u SSD keš za dalju upotrebu.

Čitanje podataka kada su prisutni u kešu
- Zahtjev od hosta stiže kontroloru;
- Pošto se traženi podaci nalaze u SSD kešu, oni se čitaju odatle;
- Pročitani podaci se šalju hostu.

Zapisivanje podataka kada se koristi keš memorija za čitanje
- Zahtjev za pisanje od hosta stiže kontroleru;
- Podaci se zapisuju na čvrste diskove;
- Odgovor koji ukazuje na uspješno snimanje se vraća hostu;
- Istovremeno se provjerava da li je blok “vruć” (upoređuje se parametar Populate-on-Write Threshold). Ako da, onda se kopira u SSD keš memoriju za kasniju upotrebu.

Pisanje podataka kada se koristi predmemorija za čitanje+pisanje
- Zahtjev za pisanje od hosta stiže kontroleru;
- Podaci se upisuju u SSD keš memoriju;
- Odgovor koji ukazuje na uspješno snimanje se vraća hostu;
- Podaci iz SSD keš memorije se zapisuju na čvrste diskove u pozadini;
Provjerite u akciji
Test stalak
2 servera (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) su povezana sa dva porta preko Fiber Channel 16G direktno na XCubeSAN XS5224D sistem skladištenja (16GB RAM/kontroler).
Koristili smo 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, kombinovano u RAID5 (15+1), za niz podataka i 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200GB, SAS 100BSS12, SASXNUMX
Kreirana su 2 volumena: po jedan za svaki server.
Test 1. SSD keš memorija samo za čitanje sa 1-8 SSD-ova
SSD predmemorija
- Tip I/O: Prilagodba
- Veličina bloka keš memorije: 4MB
- Prag za popunjavanje pri čitanju: 1
- Prag za popunjavanje prilikom pisanja: 0
I/O uzorak
- Alat: IOmeter V1.1.0
- Radnici: 1
- Izvanredno (dubina reda): 128
- Specifikacije pristupa: 4KB, 100% čitanje, 100% nasumično


U teoriji, što je više SSD-ova u keš grupi, to su bolje performanse. U praksi se to i potvrdilo. Jedino značajno povećanje broja SSD-ova s malim brojem volumena ne dovodi do eksplozivnog efekta.
Test 2. SSD keš memorija u načinu čitanja + pisanja sa 2-8 SSD-ova
SSD predmemorija
- Tip I/O: Prilagodba
- Veličina bloka keš memorije: 4MB
- Prag za popunjavanje pri čitanju: 1
- Prag za popunjavanje prilikom pisanja: 1
I/O uzorak
- Alat: IOmeter V1.1.0
- Radnici: 1
- Izvanredno (dubina reda): 128
- Specifikacije pristupa: 4KB, 100% Write, 100% Random


Isti rezultat: eksplozivan rast performansi i skaliranje kako se broj SSD-ova povećava.
U oba testa, količina radnih podataka bila je manja od ukupne veličine keša. Stoga su s vremenom svi blokovi kopirani u keš memoriju. A posao je, zapravo, već obavljen sa SSD-ovima, praktički bez utjecaja na čvrste diskove. Svrha ovih testova je bila da jasno pokažu efikasnost zagrevanja keša i skaliranja njegovih performansi u zavisnosti od broja SSD-ova.
Vratimo se sada na zemlju i provjerimo realniju situaciju, kada je količina podataka veća od veličine keša. Da bi test prošao u razumnom vremenskom periodu (period „zagrevanja“ keša uveliko se povećava kako se veličina volumena povećava), ograničićemo veličinu volumena na 120 GB.
Test 3. Emulacija baze podataka
SSD predmemorija
- I/O Tip: Baza podataka
- Veličina bloka keš memorije: 1MB
- Prag za popunjavanje pri čitanju: 2
- Prag za popunjavanje prilikom pisanja: 1
I/O uzorak
- Alat: IOmeter V1.1.0
- Radnici: 1
- Izvanredno (dubina reda): 128
- Specifikacije pristupa: 8KB, 67% čitanje, 100% nasumično

Presuda
Očigledan zaključak je, naravno, dobra efikasnost upotrebe SSD keš memorije za poboljšanje performansi bilo kojeg sistema za skladištenje podataka. Primijenjeno na Ova izjava se u potpunosti primjenjuje: funkcija SSD keširanja je savršeno implementirana. To se tiče podrške za režime čitanja i čitanja + pisanja, fleksibilnih postavki za bilo koji scenarij upotrebe, kao i ukupnih performansi sistema u cjelini. Stoga, za vrlo razumnu cijenu (cijena licence je uporediva sa cijenom 1-2 SSD-a), možete značajno povećati ukupne performanse.
izvor: www.habr.com
