Met ZFS kun je eenvoudig meerdere harddisks gebruiken om 1 grote virtuele Pool te maken die met jouw gekozen redundantie beschermd is tegen een ‘x’ aantal harddisk failures. Zoals in een eerdere blog uitgelegd kun je op een goedkope manier eenvoudig meerdere harddisks op je systeem aansluiten met een IBM M1015 SAS2 SATA3 PCI-e Controller Card.

Je kunt zowel de lees- als schrijfprestaties in ZFS sterk verbeteren door het toevoegen van snelle SSD’s voor caching doeleinden.

Er zijn twee verschillende caches waar een pool in ZFS gebruik van kan maken:

voor WRITE operaties: ZFS Intent Log (ZIL)
voor READ operaties: ARC en L2ARC

ZFS Intent Log (ZIL)

ZFS Intent Log verwijst naar een deel van je pool die ZFS gebruikt om eerst nieuwe of gewijzigde gegevens op te slaan, voordat ze worden verspreid over de pool en waarbij ze over alle VDEV’s worden gestript.

Standaard wordt er altijd een kleine hoeveelheid opslagruimte uit de pool gereserveerd om zich als ZIL te gedragen, zelfs als je slechts een klein aantal harddisks voor je opslag gebruikt. Je kunt het beste een kleine SSD als cache gebruiken.

De SSD kan worden gebruikt als een ‘Separate Intent Log’ (of SLOG), waar de nieuw aangekomen gegevens tijdelijk worden opgeslagen voordat ze worden weggeschreven naar je pool. Zo’n ZIL stel je in met de ‘log’ parameter van het ‘zpool’ commando:

zpool add <Pool> log <device>

Adaptive Replacement Cache (ARC) en L2ARC

Als je leesoperaties wilt verbeteren dan verandert de doelstelling. In plaats van ervoor te zorgen dat je goede prestaties en betrouwbare transacties krijgt, wil je dat ZFS de toekomst ‘voorspelt’. Dit betekent dat je de informatie die een applicatie in de nabije toekomst nodig zou hebben, cachet, terwijl je de informatie die het verst in de tijd nodig hebt, weggooit. Om dit te doen wordt een deel van het hoofdgeheugen gebruikt voor het cachen van gegevens die recentelijk zijn gebruikt of die het vaakst worden opgevraagd. Dat is waar de term Adaptive Replacement Cache (ARC) vandaan komt.

Naast de traditionele leescache, waarbij alleen de meest recent gebruikte objecten worden gecached, let de ARC ook op hoe vaak de data is opgevraagd. L2ARC, oftewel Level 2 ARC, is een uitbreiding op het ARC. Als je een speciaal opslagapparaat hebt dat fungeert als je L2ARC, zal het alle data opslaan die niet te belangrijk is om in de ARC te blijven, maar tegelijkertijd is die data nuttig genoeg om een plaats te verdienen in het langzamer-dan-geheugen SSD apparaat. Om een apparaat als L2ARC toe te voegen aan je ZFS pool gebruik je de ‘cache’ parameter in het ‘zpool’ commando:

zpool add <Pool> cache <device>



Conclusie

Je kunt de performance van je lees en schrijf-acties van je ZFS pool eenvoudig verbeteren door gebruik te maken van SSD’s die tegenwoordig relatief goedkoop zijn. Je zult de winst in snelheid echt goed merken.