White paper “storage”

U bent mogelijk verantwoordelijk voor de aanschaf van een nieuw SAN, maar hoort de techneuten ook praten over een NAS. Wat is het verschil en moeten we eigenlijk niet kijken naar storage in de cloud? Waarom is storage zo duur? Ik koop voor thuis voor minder dan 100 euro een 1TB USB disk!

Vaak zijn de “beslissers” niet technisch onderlegd genoeg om verantwoorde keuzes te kunnen maken. Dit artikel probeert op eenvoudige wijze inzicht te geven in de wereld van storage.

Storage* is een verzamelnaam voor verschillende vormen 
van opslag van digitale gegevens. De belangrijkste is 
nog steeds de harddisk (eventueel aangesloten via USB). 
Daarnaast is nog steeds tape storage van belang 
(voor backups) en er zijn vele soorten flash geheugen 
(simpel gezegd een disk in een chip, zoals USB sticks, 
SD kaartjes e.d.) waarop we gegevens kunnen plaatsen. 
In dit artikel wordt niet ingegaan op de fysieke opslag. 
We gaan uit van disk storage - ongeacht het type en 
interface (USB, SATA, SAS e.d.).

*Ik realiseer me dat ik soms details weglaat om e.e.a. 
leesbaar en begrijpbaar te houden. Veelal kunnen de 
links je helpen aan meer gedetailleerde beschrijvingen 
indien je die nodig hebt.

Eisen stellen

Als we voor thuis een (USB) disk kopen, dan is veelal onze eerste vereiste een hoeveelheid opslag capaciteit. In tweede instantie willen we graag dat het snel is, maar meestal moet het “gewoon veel” zijn. In een bedrijfsomgeving worden echter andere eisen gesteld aan storage. Bijvoorbeeld:

  • performance (het moet snel zijn)
  • redundant (uitval van disken mag niet leiden op informatie verlies of down time)
  • backup (alle gegevens in een backup)
  • schaalbaar (de storage kan meegroeien met de behoefte aan storage capaciteit)
  • geo-replicatie (kopie van alle gegevens op een andere locatie)
  • integriteit (is het file tijdens het lezen exact gelijk aan het file tijdens het schrijven?)
  • encryptie (versleuteling van gegevens)

In meer of mindere mate zijn bovenstaande vereisten aan de orde. Hierdoor wordt duidelijk dat de prijs per GB nooit gelijk kan zijn aan die van de (USB) disk die we thuis gebruiken. We stellen er immers veel hogere eisen aan en daarmee worden de kosten hoger.

Basis features

Voor bedrijfsmatige toepassing van een File System zijn er drie belangrijke features die we eventueel graag terug zien:

  • Fault Tolerance: in welke mate kunnen er componenten uitvallen zonder dataverlies?
  • Gedistribueerde verwerking: betreft het een enkel opslag-apparaat of worden de gegevens over meerdere apparaten verdeeld?
  • Parallel verwerking: kunnen alle nodes van het File System gebruikt worden voor lees- en schrijfacties?
Gestructureerde versus on-gestructureerde data:

Binnen de wereld van storage wordt vaak een onderscheid 
gemaakt tussen gestructureerde data (databases) en 
on-gestructureerde data (alle andere data). Traditioneel 
ligt de verhouding vaak op 20% gestructureerde- en 
80% ongestructureerde data. Langzamerhand verschuift 
dit steeds meer naar een 10-90% verhouding. Gestructureerde 
data vraagt om andere kwaliteiten van de storage dan 
ongestructureerde data. Bij gestructureerde data ligt 
de nadruk vaak op performance en redundantie terwijl 
bij on-gestructureerde data de nadruk ligt op capaciteit 
en redunadantie. Overigens vallen virtuele server disken 
ook in de categorie van gestructureerede data als 
het gaat om de vereisten aan de storage. In het algemeen 
kan gesteld worden dat gestructureerde data beter van 
een SAN gebruik kan maken, terwijl ongestructureerde 
data prima op een gedistribueerd File System kan staan.

Disk File System

fs01Het meest eenvoudige File System dat we kennen is een disk File System zoals dat in een PC, laptop of server gebruikt kan worden. Het bestaat uit een enkele disk (misschien tegenwoordig al een SSD). Files worden weggeschreven op een dergelijk disk en er is geen sprake van Fault Tolerance, Gedistribueerde verwerking of Parallelle verwerking. De organisatie van files wordt geregeld middels een File System, bijvoorbeeld FAT (uit het DOS tijdperk), NTFS (Microsoft Windows), ext4 (Linux) of HFS Plus (Apple). Een dergelijke oplossing is voldoende voor thuis of PC’s of laptop’s. Wel is het van belang goede backups te maken of ervoor te zorgen dat we onze gegevens opslaan op een server (met redundantie en backup) of cloud.

Disk File System + Faul Tolerance

fs02De eerste maatregel die we bij server systemen nemen is redundantie van disken in te bouwen. Misschien heb u de term RAID wel eens gehoord. Dit is de systematiek waarmee disken redundant kunnen worden gemaakt. Er zijn verschillende configuraties mogelijk waarmee de gegevens redundant over de aanwezig disks verdeeld kunnen worden. Dit wordt aangeduid met een nummer, bijvoorbeeld: RAID-1, RAID-5 enz. Er is dus wel sprake van Fault Tolerance, maar geen sprake van gedistribueerde of parallelle verwerking. Een dergelijke setup wordt toegepast in servers, SAN’s en NAS.

Oh ja, maar wat was nou het verschil tussen een SAN en een NAS?

Een NAS (Network Attached Storage) is een systeem dat 
een netwerkshare aanbiedt (bijvoorbeeld via NFS of CIFS). 
Dit wordt ook wel een "filer" genoemd. Een NAS is is 
in verschillende prijsklassen te verkrijgen. Een SAN 
(Storage Area Network) is een systeem dat via een netwerk 
(meestal glas / fiber gebaseerd) disks (block devices) 
aan servers kan aanbieden. De betreffende server "ziet" 
een lokale disk, maar feitelijk betreft het een deel van 
de opslag capaciteit van het SAN. Deze disken kunnen 
maar aan één server tegelijkertijd worden toegewezen. 
Dat is dus anders dan een netwerk share (zoals bij een NAS) 
waarvan meerdere servers tegelijkertijd gebruik kunnen maken. 
Overigens zijn er systemen die zowel een SAN als een 
NAS kunnen zijn en bovendien kan met behulp van een server 
en (bijvoorbeeld) open source software zelf een SAN / NAS 
worden gebouwd. Er is ook commerciële open source software 
waarmee dit gedaan kan worden, bijvoorbeeld Nexenta.

Shared File System

fs03Soms kan het belangrijk zijn dat meerdere server van een en hetzelfde File System gebruik kunnen maken. Dit is eenvoudig te realiseren door van een netwerk File System gebruik te maken zoals bijvoorbeeld NFS of CIFS (SAMBA). Echter, hierbij blijft de server die de netwerk disk aanbiedt verantwoordelijk voor de redundantie. Lastiger is het wanneer gelijke servers een disk willen delen. Wie blijft er hierbij verantwoordelijk voor schrijfacties en hoe zorgen we ervoor dat niet twee processen hetzelfde file bewerken. Er zijn File Systems die dit kunnen. Vaak is het zo dat een toename van het aantal servers de performance onder druk zet. Voorbeelden hiervan zijn OCFS2 (van Oracle) of Global File System (GFS van red Hat). Een dergelijk File System wordt vaak toegepast in clusters (een verzameling systemen die een taak uitvoeren). Er is hierbij sprake van Fault Tolerance, maar geen sprake van gedistribueerde of parallelle verwerking.

Distributed File System

fs04Naast de opslag van gegevens op een centraal systeem (server, SAN of NAS) kunnen ze ook over meerdere server verdeeld worden. Het voordeel hiervan is dat we goedkopere hardware kunnen gebruiken. Bovendien zijn gedistribueerde File Systems goed schaalbaar. Simpel gezegd, je kan klein starten en toch heel makkelijke groeien qua capaciteit. Voorbeelden hiervan zijn cloud opslag systemen zoals  S3 van Amazon of het Andrew File System. Er is hierbij sprake van gedistribueerde verwerking, maar niet van parallelle verwerking of Fault Tolerance.

Object storage:

Bij gedistribueerde File Systems is vaak sprake van een 
"Object store". Feitelijk is het File System dan niet 
direct door een server te gebruiken (zoals een lokale 
of SAN disk), maar zal de betreffende applicatie moeten 
kunnen "praten" met het File System (via een API - 
Application program Interface). Vergelijk het met een 
garderobe, met het nummertje kan je je jas weer terug 
krijgen zonder dat je moet weten hoe en waar e.e.a. is 
opgeborgen. Hadoop is een voorbeeld van een gedistribueerd 
File System dat allen via de API benaderd kan worden. 
Sommige gedistribueerde File Systems bieden ook de 
mogelijkheid om buiten de API om daarvan gebruik te maken 
(bijvoorbeeld middels CIFS of NFS). Als tussenoplossing 
kan gebruik gemaakt worden van "vertaal servers" die het 
file systeem vervolgens aanbieden als CIFS of NFS share.

Distributed, Fault Tolerant File System

fs05Voor sommige toepassingen mag het geen probleem zijn om bij uitval van componenten data te verliezen, maar in de meeste bedrijfsmatige omgevingen kunnen we ons dat niet veroorloven. We hebben daarom (net als bij de server, het SAN end e NAS) redundantie nodig, of wel, Fault Tolerance. Als we ervoor zorgen dat het gedistribueerde File System ook data redundant opslaat (extra kopieën op andere nodes), dan kunnen er componenten (nodes) uitvallen zonder dat dit direct tot dataverlies leidt. Het File System is daarmee Fault Tolerant geworden. Een voorbeeld hiervan is MooseFS.

Distributed, Parallel File System

fs06Voor bepaalde toepassingen kan het interessant zijn om naar alle nodes van het File System te kunnen schrijven en lezen. Bijvoorbeeld wanneer er erg veel clients zijn die gebruik willen maken van het File System. Dit noemen we parallelle verwerking. Een voorbeeld van een dergelijk File System is Frauenhofer Parallel File Sytem. Een dergelijk File System wordt vaak gebruik voor “Super computing”. Er is dus sprake van gedistribueerde en parallelle verwerking, maar niet van Fault Tolerance.

Distributed, Parallel and Fault Tolerant File System

fs07In de meeste bedrijfsmatige toepassingen willen we naast de gedistribueerde en parallelle verwerking ook Fault Tolerance toepassen. Je zou kunnen stellen dat een File System die aan alle drie de kenmerken voldoet de meeste toepassingsmogelijkheden heeft. Voorbeelden van dergelijke File Systems zijn Ceph (van Inktank Storage) en Red Hat Storage Server (voorheen GlusyterFS). Wie gebruiken er dit soort File Systems? Eigenlijk alle internet en cloud bedrijven doen dat (bijvoorbeeld, Google, Hyves, Facebook, LinkedIn enz.). Er wordt zelfs wel gesteld dat dergelijk bedrijven niet zouden kunnen bestaan zonder dergelijke File Systems en al helemaal niet wanneer daar commerciële licenties voor gekocht moesten worden. Google is zelfs zover gegaan hun eigen gedistribueerde File System te schrijven, GFS (Google File System). Een dergelijke vorm van opslag is voor Google core technologie en is daarom ook niet te koop (Ceph komt er wel dicht bij).

Geo-replicatie:

In toenemende mate zijn bedrijven geïnteresseerd is 
geo-replicatie. De doelstelling van geo-replicatie is 
data op twee, geografisch gescheiden plaatsten beschikbaar 
te hebben. Hierdoor weet een bedrijf zich gewapend 
tegen uitval van een datacenter. Geo-replicatie kan met 
servers, SAN's en NAS worden opgezet en ook gedistribueerde 
File Systems zoals Ceph en Red Hat Storage Server ondersteunen dit.

SAN of gedistribueerd File System?

In ICT land hebben de meeste bedrijven hun strorage de laatste jaren gestandaardiseerd op een SAN. Dit is inmiddels een “hele bedrijfstak” geworden. Toch zijn er inmiddels redenen om te twijfelen aan deze “standaard keuze”.  Wanneer we bijvoorbeeld kijken naar hoe zich de behoefte aan storage (capaciteit) zich ontwikkeld, dan zien we dat die exponentieel toeneemt. Daarnaast zijn SAN’s weliswaar in verschillende opslag capaciteiten te verkrijgen, maar hier zien we dat de prijs eveneens exponentieel toeneemt met de capaciteit. We kunnen daarom verwachten dat veel bedrijven de komende jaren de groei van de storage capaciteit niet meer kunnen bekostigen. Gezien de toepassing van standaard hardware en open source software bij gedistribueerde File Systems leert een business case berekening dat deze al snel goedkoper uitvalt. Het verschil wordt bovendien groter gelang we over meer opslag capaciteit praten (bijvoorbeeld 500 TB of 2 PB). Wat zijn zo de voordelen van gedistribueerde File Systems op een rijtje?

  • (Veelal) goedkoper (afhankelijk van de business case!).
  • Schaalbaar (men kan klein beginnen en groeien tot Bronto Bytes, terwijl men bij een SAN de uiteindelijke capaciteit voor ogen moet houden). Daarnaast kan er capaciteit uitgebreid worden zonder down time.
  • Geo-replicatie over meerdere locaties (afhankelijk van het betreffende gedistribueerde File System).
  • Niet alleen de capaciteit is schaalbaar, maar bij parallelle verwerking is ook de performance schaalbaar.
  • Keuze vrijheid bij de keuze van hardware (men kan “shoppen” voor de beste deal).

Geweldig, maar wanneer kies ik nu beter een SAN?

Het lijkt wel of gedistribueerde File Systems alle kaarten in handen houden, maar zijn er situaties waarin ik beter voor een SAN kan kiezen? Zeker. Vanuit technisch perspectief gezien:

  • Er wordt een bestaand SAN vervangen en dit moet met zo klein mogelijke impact voor de bestaande infrastructuur / applicaties.
  • De organisatie wil graag een SAN en voelt niets voor nieuwe technologie. Of er zijn andere redenen waarom een “traditionele” keuze voor een SAN de voorkeur geniet.
  • Er moeten virtuele server images of databases op de storage geplaatst worden.

OK ik ben overtuigd, doe mij maar een gedistribueerd File System

Dat is mooi, je gaat gebruik maken van technologie die een mooie toekomst tegemoet gaat. Echter, nu begint het (ontwerpen) pas. Denk hierbij bijvoorbeeld aan de volgende vragen die je wilt gaan beantwoorden:

  • Voor welke toepassing ga ik het gebruiken? Hoe gaat mijn applicatie en / of clients het File System gebruiken?
  • Gaan er meerdere applicaties gebruik maken van het gedistribueerde File System? Zijn de vereisten niet tegenstrijdig?
  • Welke gedistribueerd File System ga ik gebruiken?
  • Ga ik eerste een PoC (Proof of Concept) doen?
  • Hoeveel capaciteit heb ik in aanvang nodig en welke performance wens ik dat het heeft?
  • Welke netwerk snelheid ga ik toepassen (100Mbit of 1Gbit of nog sneller?)
  • Welke netwerk architectuur ga ik hanteren?
  • Welke replicatie ga ik toepassen (misschien wel geo-replicatie?)
  • Kies ik voor enkele nodes met veel opslag capaciteit of juist voor meerdere “kleine” nodes.

Wanneer kiezen voor cloud storage?

Bij cloud storage is er altijd sprake van een of andere vorm van een gedistribueerd File System. Soms wordt ook gebruik gemaakt van al bestaande infrastructuur. Een voorbeeld hiervan is Dropbox dat gebruik maakt van infrastructuur van Amazon. De toevoeging “cloud” aan storage betekent dat de capaciteit “elastisch” is, d.w.z. je kan (theoretisch) zo veel opslagcapaciteit afnemen als je zou willen. In de meeste gevallen is cloud storage ook Fault Tolerant, maar wees hier zeker van voordat je er data aan toevertrouwd. Bedenk ook of je jouw (bedrijfs) gegevens op een publieke cloud wilt plaatsten. Een van de zaken die hierbij in overweging genomen moet worden is onder welke nationale wetgeving dit valt. Waar “staat” deze cloud en is het een Amerikaans bedrijf? Valt ook jouw data onder de “Patriot act”? Misschien is dat helemaal geen issue, maar je kan het beter vooraf weten.

Het is natuurlijk altijd mogelijk de gegevens te versleutelen (encryptie) in een storage cloud. Dit is legaal en geeft je meer het gevoel “eigenaar” te zijn en te blijven van jouw gegevens.