Implementering av SSD-cache i QSAN XCubeSAN

PrestandaförbĂ€ttringstekniker som Ă€r baserade pĂ„ anvĂ€ndningen av SSD och som ofta tillĂ€mpas i lagringssystem har funnits lĂ€nge. Framför allt handlar det om att anvĂ€nda SSD som lagringsutrymme, vilket Ă€r 100% effektivt men dyrt. DĂ€rför anvĂ€nds teknologi för tiering och caching, dĂ€r SSD enbart anvĂ€nds för de mest efterfrĂ„gade ('heta') data. Tiering Ă€r bra för lĂ„ngvarigt (dagar-veckor) anvĂ€ndande av 'heta' data. Caching Ă„ sin sida Ă€r för kortvarigt (minuter-timmar) anvĂ€ndande. BĂ„da dessa alternativ implementeras i lagringssystem. QSAN XCubeSAN. I denna artikel kommer vi att granska implementeringen av den andra algoritmen – SSD caching.

Implementering av SSD-cache i QSAN XCubeSAN

Essensen av teknologin för SSD caching Àr att anvÀnda SSD som en mellanliggande cache mellan hÄrddiskarna och kontrollerarens RAM. Prestandan hos SSD Àr naturligtvis lÀgre Àn prestandan hos kontrollerarens egen cache, men Ä sin del Àr volymen mycket större. SÄ vi fÄr en slags kompromiss mellan hastighet och volym.

Indikationer för att anvÀnda SSD-cache för lÀsning:

  • En övervĂ€gande mĂ€ngd lĂ€soperationer jĂ€mfört med skrivoperationer (vanligtvis kĂ€nnetecknande för databaser och webbapplikationer);
  • NĂ€r det finns ett flaskhals som innebĂ€r prestandan hos hĂ„rddiskarrayen;
  • NĂ€r volymen av efterfrĂ„gade data Ă€r mindre Ă€n SSD-cache-volymen.

Indikationerna för att anvĂ€nda SSD-cache för lĂ€sning + skrivning Ă€r desamma, förutom typen av operationer – en blandad typ (t.ex. filserver).

De flesta leverantörerna av lagringssystem anvÀnder SSD-cache i sina produkter endast för lÀsoperationer. Den principiella skillnaden QSAN frÄn dem Àr möjligheten att anvÀnda cachen Àven för skrivning. För att aktivera funktionen för SSD caching i QSAN-lagringssystemet krÀvs ett separat licensköp (levereras elektroniskt).

SSD-cachen i XCubeSAN implementeras fysiskt som separata SSD-cachepooler. Systemet kan ha upp till fyra sÄdana pooler. Varje pool anvÀnder förstÄs sin egen uppsÀttning av SSD. I instÀllningarna för den virtuella disken bestÀmmer vi om den ska anvÀnda cachepoolen och vilken specifik pool som ska anvÀndas. Aktivering och avaktivering av cacheanvÀndning för volymer kan göras online utan stopp av in-/utmatning. SSD kan Àven lÀggas till och tas bort frÄn poolen utan nedstÀngning. NÀr man skapar en SSD-cachepool mÄste man vÀlja vilket lÀge den ska verka i: endast lÀsning eller lÀsning + skrivning. Detta pÄverkar dess fysiska struktur. Eftersom det kan finnas flera cachepooler kan deras funktionalitet variera (det vill sÀga systemet kan ha cachepooler för bÄde lÀsning och lÀsning + skrivning samtidigt).

Om cachepoolen anvÀnds endast för lÀsning kan den bestÄ av 1-8 SSD. Diskarna behöver inte nödvÀndigtvis ha samma kapacitet eller vara frÄn samma tillverkare, eftersom de kombineras i en NRAID+-struktur. Alla SSD i poolen anvÀnds gemensamt. Systemet försöker automatiskt parallellisera inkommande förfrÄgningar mellan alla SSD för att uppnÄ maximal prestanda. Om en av SSD-enheterna gÄr sönder hÀnder ingenting allvarligt: cacheminnet innehÄller endast en kopia av data som lagras pÄ massan av hÄrddiskar. Endast den tillgÀngliga SSD-cachekapaciteten minskar (eller blir noll om den ursprungliga SSD-cachen var baserad pÄ en enda enhet).

Implementering av SSD-cache i QSAN XCubeSAN

Om cachen anvÀnds för bÄde lÀsningar och skrivningar mÄste antalet SSD i poolen vara jÀmnt, eftersom innehÄllet speglas pÄ par av lagringsenheter (NRAID 1+-struktur anvÀnds). Duplicering av cachen Àr nödvÀndig eftersom den kan innehÄlla data som inte har skrivits till hÄrddiskarna Ànnu. I sÄ fall skulle en SSD-fel i cachepoolen orsaka förlust av information. I fallet med NRAID 1+ skulle ett fel pÄ en SSD helt enkelt leda till att cachen gÄr in i ett "endast lÀsning"-lÀge med utplÄtning av oskrivna data till massan av hÄrddiskar. Efter att den defekta SSD-enheten har bytts ut, ÄtergÄr cachen till sitt ursprungliga driftlÀge. För ökad sÀkerhet kan en dedikerad hot spare tilldelas cachen som arbetar i lÀsning + skrivning.

Implementering av SSD-cache i QSAN XCubeSAN

Vid anvÀndning av SSD-cachefunktionaliteten i XCubeSAN finns det en rad krav pÄ minnesvolymen för lagringskontrollerna: ju mer systemminne, desto större cachen kommer att vara tillgÀnglig.

Implementering av SSD-cache i QSAN XCubeSAN

Till skillnad frÄn de flesta lagringsproducenter, som enbart erbjuder alternativ för att aktivera/inaktivera SSD-cachen, ger QSAN större möjligheter. Speciellt kan man vÀlja cache-arbetslÀge beroende pÄ belastningstypen. Det finns tre förinstÀllda mallar som ligger nÀrmast de motsvarande tjÀnsterna: databas, filsystem, webbtjÀnst. Dessutom kan administratören skapa sin egen profil genom att stÀlla in nödvÀndiga parameterarvÀrden:

  • Blockstorlek (Cache Block Size) – 1/2/4 MB
  • Antal lĂ€sfrĂ„gor som behövs för att blocket ska kopieras till cachen (Populate-on-Read Threshold) – 1..4
  • Antal skrivfrĂ„gor som behövs för att blocket ska kopieras till cachen (Populate-on-Write Threshold) – 0..4

Implementering av SSD-cache i QSAN XCubeSAN

Profiler kan Àndras "under körning", men sjÀlvklart med att cachen nollstÀlls och vÀrms upp pÄ nytt.

NÀr man övervÀger principerna för hur SSD-cachen fungerar kan man identifiera de huvudsakliga operationerna vid arbete med den:

Implementering av SSD-cache i QSAN XCubeSAN

LÀsa data nÀr de inte finns i cachen

  1. BegÀran frÄn vÀrden kommer till kontrollern;
  2. Eftersom de begÀrda data inte finns i SSD-cachen, lÀses de frÄn hÄrddiskarna;
  3. De lÀsta data skickas till vÀrden. Samtidigt kontrolleras det om dessa block Àr "heta";
  4. Om sÄ Àr fallet kopieras de till SSD-cachen för framtida anvÀndning.

Implementering av SSD-cache i QSAN XCubeSAN

LÀsa data nÀr de finns i cachen

  1. BegÀran frÄn vÀrden kommer till kontrollern;
  2. Eftersom de begÀrda uppgifterna finns i SSD-cachen, lÀses de dÀrifrÄn;
  3. De lÀsta data skickas till vÀrden.

Implementering av SSD-cache i QSAN XCubeSAN

Skriva data vid bruk av cache för lÀsning

  1. SkrivbegÀran frÄn vÀrden kommer till kontrollern;
  2. Data skrivs pÄ hÄrddiskarna;
  3. Ett svar om lyckad inskrivning returneras till vÀrden;
  4. Samtidigt kontrolleras det om blocket Àr "hett" (jÀmförs med parametern Populate-on-Write Threshold). Om sÄ Àr fallet kopieras det till SSD-cachen för senare anvÀndning.

Implementering av SSD-cache i QSAN XCubeSAN

Skriva data vid bruk av cache för lÀsning + skrivning

  1. SkrivbegÀran frÄn vÀrden kommer till kontrollern;
  2. Data skrivs till SSD-cachen;
  3. Ett svar om lyckad inskrivning returneras till vÀrden;
  4. Data from the SSD cache is written to hard drives in the background;

Check in action

TestbÀnk

2 servers (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) are connected by two ports directly to the XCubeSAN XS5224D (16GB RAM/controller) via Fibre Channel 16G.

16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s were used, combined in RAID5 (15+1), for the data array and 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s as cache

2 volumes were created: one for each server.

Test 1. SSD cache read-only with 1-8 SSDs

SSD Cache

  • I/O Type: Customization
  • Cache Block Size: 4MB
  • Populate-on-read Threshold: 1
  • Populate-on-write Threshold: 0

I/O Pattern

  • Tool: IOmeter V1.1.0
  • Workers: 1
  • Outstanding (Queue Depth): 128
  • Access Specifications: 4KB, 100% Read, 100% Random

Implementering av SSD-cache i QSAN XCubeSAN

Implementering av SSD-cache i QSAN XCubeSAN

In theory, the more SSDs in the cache pool, the higher the performance. This was confirmed in practice. The only significant increase in the number of SSDs with a low number of volumes does not lead to an explosive effect.

Test 2. SSD cache in read + write mode with 2-8 SSDs

SSD Cache

  • I/O Type: Customization
  • Cache Block Size: 4MB
  • Populate-on-read Threshold: 1
  • Populate-on-write Threshold: 1

I/O Pattern

  • Tool: IOmeter V1.1.0
  • Workers: 1
  • Outstanding (Queue Depth): 128
  • Access Specifications: 4KB, 100% Write, 100% Random

Implementering av SSD-cache i QSAN XCubeSAN

Implementering av SSD-cache i QSAN XCubeSAN

The same result: explosive growth in performance and scaling with an increase in the number of SSDs.

In both tests, the volume of the working data was less than the total cache size. Therefore, over time, all blocks were copied to the cache. The work was essentially done with SSDs, practically not touching the hard drives. The purpose of these tests was to visually demonstrate the effectiveness of cache warming and scaling its performance depending on the number of SSDs.

Now let's return to reality and check a more realistic situation where the volume of data exceeds the size of the cache. To ensure the test is completed in a reasonable time (the 'warming' time of the cache increases significantly with the volume size), we will limit the volume size to 120GB.

Test 3. Emulation of database operation

SSD Cache

  • I/O Type: Database
  • Cache Block Size: 1MB
  • Populate-on-read Threshold: 2
  • Populate-on-write Threshold: 1

I/O Pattern

  • Tool: IOmeter V1.1.0
  • Workers: 1
  • Outstanding (Queue Depth): 128
  • Access Specifications: 8KB, 67% Read, 100% Random

Implementering av SSD-cache i QSAN XCubeSAN

UtvÀrdering

A reasonable conclusion suggests a good efficiency of SSD cache use to enhance the performance of any storage system. Specifically for QSAN XCubeSAN Detta uttalande gÀller helt och hÄllet: funktionen för SSD-cache Àr utmÀrkt implementerad. Detta gÀller stöd för lÀs- och lÀs + skrivlÀgen, flexibel anpassning av arbete för alla anvÀndarscenarier samt den övergripande prestandan i systemet. DÀrför kan man, till ett mycket rimligt pris (licensavgiften motsvarar kostnaden för 1-2 SSD:er), avsevÀrt öka den totala prestandan.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster