Schenkevelds systeem bestaat uit drie componenten. Allereerst worden alle services en toepassingen gevirtualiseerd. Als je FreeBSD gebruikt, ligt het voor de hand om hiervoor jails te gebruiken, een vorm van virtualisatie op het niveau van het besturingssysteem: elke service krijgt een eigen jail. Het performantieverlies is te verwaarlozen, omdat jails een lichtgewicht oplossing vormen zonder eigen kernel: alle jails draaien op één FreeBSD-kernel, namelijk die van de gastheer.

ZFS

Als bestandssysteem heeft Schenkeveld voor ZFS gekozen, omdat het om kan gaan met een groot aantal bestandssystemen, eenvoudig te beheren is en een flexibel quotasysteem heeft. Elke jail krijgt zijn eigen bestandssysteem, dat een snapshot is van een prototypejail. ZFS-snapshots maken mogelijk om upgrades offline voor te bereiden: je upgradet eenvoudigweg de prototypejail. Een productiejail upgraden komt dan gewoon neer op het stoppen van de jail en het opnieuw starten met als bestandssysteem een nieuwe snapshot van de prototypejail. Daardoor vereist de upgrade van een jail maar een downtime van enkele seconden. Loop je daarna tegen onverwachte problemen aan, dan herstart je gewoon de productiejail met de vorige snapshot, zodat je in enkele seconden terugkeert naar de vorige, werkende situatie.

NanoBSD

Maar ook over het onderliggende besturingssysteem heeft Schenkeveld nagedacht. Hij heeft niet de standaard FreeBSD gekozen, maar NanoBSD uit de kast gehaald. Dat lijkt op het eerste gezicht een vreemde keuze, omdat NanoBSD bedoeld is voor embedded systemen, maar volgens Schenkeveld heeft het ook bij servers zijn voordelen. Je bouwt je eigen NanoBSD-image met een shell-script en schrijft het image naar een flash-drive. Het kan als read-only systeem draaien, waardoor je geen potentieel vertragende fsck nodig hebt na een reboot en de flash-drive amper verslijt. Als je de gastheer wilt upgraden, doe je dat ook offline door een tweede image op de flash-drive te schrijven. Daarna herstart je NanoBSD van het tweede image, en wanneer de upgrade voor een probleem blijkt te zorgen, herstart je snel terug van de originele image.

Andere besturingssystemen

Deze aanpak vereist wel een iets andere manier om je services aan te pakken, maar heeft als voordeel een gegarandeerde minimale downtime. Dezelfde ideeën kunnen in principe ook bij andere besturingssystemen gebruikt worden, zoals Linux met LVM-snapshots en OpenVZ of LXC, of (Open)Solaris met ZFS en zones.

Bron: Techworld