Navigatie overslaan.
Start

Deduplication

Ik denk dat de hype van 2010 toch wel "deduplication" is.
Persoonlijk heb ik geen idee waarom.

Het is sowieso al vrij dom en heel erg inefficiënt om data meer dan 1 keer op te slaan.
(Met grotere backups, etc... tot gevolg.)

Op school leer je al om een database te normaliseren, zodat je alles slechts 1 keer opslaat.
Wil je achteraf toch duplicate data hebben, dan is dat achteraf.

Eerst een genormalisseerde database, daarna doe je maar wat je wil, maar enkel als je je "extra" data uit die genormalisseerde vorm haalt.

Een reden om dat te doen is bijvoorbeeld voor performance/optimalisatie.
Je gaat niet steeds het totaalbedrag van een factuur berekenen op basis van de aantal verkochte goederen en de eenheidsprijzen (op het moment van verkoop), maar je slaat dat ergens op.
Je software moet slim genoeg zijn om dat opnieuw te berekenen moest dat niet ingevuld zijn.
etc, etc, ... Maar daar gaat het hier niet om.

Voor files op een harde schijf heb je reeds sinds 1970 of zo 2 mogelijkheden:

Sparse files:

Voor de mensen die niet met databases willen werken.

Stel dat je een file gebruikt om al je data in op te slaan met fixed length fields.
Naam vanaf karakter 1 t.e.m. karakter 31, voornaam vanaf karakter 32 t.e.m. 62, etc... (30 tekens + \0)
Een beetje zoals Microsoft Access alles opslaat.

Dit was handig tijdens de Middeleeuwen om snel iets terug te vinden omdat alle records een vaste plaats krijgen in de file, maar je zal merken dat je moeilijk een aanpassing gaat kunnen maken.
Hoe dan ook ga je met een file zitten die enorm veel spaties, of een ander filler karakter, bevat.
Zonde natuurlijk om dat op te slaan.

In Linux/Unix heb je daarom zoiets als sparse files, waarbij je enorm veel schijfruimte kan besparen omdat je de spaties/filler karakters niet opslaat. Dit wordt automatisch weggehaald/bijgevoegd via een abstraction layer in het filesystem.

Je moet wel opletten dat je backup programma ook met sparse files overweg kan, want anders gaan je backups wel groot worden.

File links:

Ik heb het niet over symbolische of logische links, zoals een "snelkoppeling" in Windows maar dan beter, maar over zogenaamde "hard links".
Het eerste is eigenlijk gewoon een verwijzing naar een bestaande file, het tweede is een verschillende entry verwijzend naar dezelfde file.

Als jij een mailserver hebt, en iemand stuurt een attachement van 10M naar 1000 gebruikers, dan hoop ik dat jouw mailserver slim genoeg is om slechts 10M en een pruts schijfruimte nodig te hebben om 1000 gebruikers deze file te laten bezichtigen.
Gelukkig is dat reeds vele jaren zo en zelfs Microsoft Exchange 2003 doet dat in zijn opslagfile.

999 gebruikers mogen de file wissen, en voor hen is deze ook gewist omdat hun entrypoint er niet meer is, maar de file stopt pas met het in beslag nemen van schijfruimte als de laatste entrypoint verwijderd wordt.

Voor write access kan je kiezen of iedereen de wijziging ziet, of enkel de personen die het entrypoint gebruiken via waar de file gewijzigd werd.
Afhankelijk van het gebruikte filesystem kan je enkel het eerste, of beide.

Als je slim bent, en een default image gebruikt voor je VMware servers, kan met hard links al je servers op zetten.
Omdat iedere guest alle wijzigingen in systeembestanden ziet, hoef je maar 1 server te patchen/updaten en alle servers zijn op hetzelfde moment, en met evenveel moeite gepatched.
Alleen even opletten voor filesystem drivers die aan caching doen.

Dus, eigenlijk niet zo veel nieuws in Linuxland. Het is mogelijk, en net zoals filesystems die je naar believen kan laten groeien/krimpen, moet je het alleen maar configureren.
Als je niet weet hoe, kan je dat altijd leren. En als je niet weet waar je de nodige informatie kan halen, moet je echt een andere job gaan zoeken.

Ik denk eigenlijk dat deduplication ineens een hype is omdat Microsoft dat begint te ontdekken? Of omdat VMware dat een beetje pushed?
Alle makers van opslagmedia hebben daar altijd in alle talen over gezwegen...

Misschien wordt de hype van 2011 wel om je O.S. te kunnen patchen zonder te rebooten...