Serveruptime is een groot goed en rebooten van zelfs een client-pc kost tijd, productiviteit en leidt dus af. Onderzoek aan de Vrije Universiteit belooft hulp: veilig en automatisch live updaten. De slinkende vensters voor data back-ups en systeemonderhoud zijn een groeiend probleem voor beheerders. Het updaten van besturingssystemen vormt een klasse apart. Universitair docent Cristiano Giuffrida verbonden aan de Vrije Universiteit (VU) te Amsterdam pakt dit aan in zijn proefschrift ‘Safe and automatic live update’. Professor Herbert Bos, die de Italiaanse onderzoeker heeft begeleid, spreekt van 'een nachtmerrie, zeker als computers belangrijk werk verrichten'.
Professor Herbert Bos schetst het onderhoudsdilemma: moderne computers mogen nooit down gaan voor updates én ze moeten foutloos blijven werken na een update. ‘Helaas wordt geen van deze vereisten vervuld door de hedendaagse oplossingen.’ Cristiano Giuffrida beschrijft in zijn proefschrift een geautomatiseerd systeem voor live updates dat ook grote upgrades aankan, zonder dat er een reboot vereist is.
Meestal vereist het updaten van een besturingssysteem een reboot. Daardoor is het gehele systeem, dus inclusief de daarop draaiende applicatie(s), enige tijd niet beschikbaar. Bovendien is er tegenwoordig de trend van steeds frequentere software-updates, mede aangejaagd door snellere analyse van bugs en kwetsbaarheden. Hierdoor loopt de standaard cyclus van halt-update-restart vast; ‘het raakt in een impasse met onze groeiende afhankelijkheid van nonstop software operations’, schrijft Giuffrida.
Praktijkproblemen door rolling upgrades
Om downtime te beperken, is er allang de aanpak van ‘rolling upgrades’ waarbij een systeem is verspreid over meerdere nodes die dan stuk voor stuk worden bijgewerkt. Deze veelgebruikte updatemethode heeft volgens Giuffrida echter een aantal belangrijke tekortkomingen. Zo vereist het dubbel uitgevoerde hardware, dat bijvoorbeeld bij kleinere ondernemingen niet altijd beschikbaar is. De rolling-aanpak kan normaliter niet de programmastaat behouden over de verschillende versies die tijdens het updateproces draaien.
En tot slot kan er bij sterk gerepliceerde softwaresystemen een flinke update-latency ontstaan waardoor er gemengde versies operationeel zijn, wat weer eigen updateproblemen met zich mee kan brengen. Giuffrida noemt in zijn proefschrift het prakijkvoorbeeld van één van de grootste computerfouten in de geschiedenis van het bankwezen. Dat was een software update, waarbij één regel code was gewijzigd, waardoor in 1994 geldautomaten in New York elke transactie dubbel boekten. Deze updatefout heeft honderdduizend bankklanten à vijftien miljoen dollar geraakt.
Stabiliteitsrisico en IoT
Naast downtime en fouten door versiediscrepanties staat het feit dat een update nogal eens voor nieuwe problemen kan zorgen. Problemen waardoor een systeem zelfs instabiel kan worden. Professor Bos van de VU verbaast zich er dan ook niet over dat beheerders van industriële apparatuur (industrial control systems, ics) vaak niet eens de simpelste updates of de meest kritieke securitypatches installeren. Dergelijke systeemwijzigingen worden zo lang mogelijk uitgesteld. Het risico van onomkeerbare instabiliteit door een update is simpelweg te groot.
Volgens Bos en Giuffrida zal deze slechte situatie alleen maar verergeren. Zij wijzen op de huidige, onstuitbare trend naar een steeds slimmere wereld, waar alles onderling verbonden is in het internet of things (IoT). Dat maakt de updatebaarheid en onderhoudbaarheid van systemen tot één van de grootste uitdagingen voor computersystemen. ‘We hebben tientallen miljarden apparaten die allerlei soorten systemen draaien: van slimme stroommeters tot stoplichten en van smart cars tot liften’, legt Bos uit.
Bovendien moeten industriële systemen en IoT-devices lange tijd dienst doen, waarbij ze vaak ook nog eens fysiek buiten bereik zijn van systeembeheerders. ‘We kunnen die systemen niet gemakkelijk resetten of repareren in geval van problemen.’ Het is dus essentieel dat de kerncomponenten, zoals het besturingssysteem, van zulke computers automatisch en naadloos zijn te updaten.
Sandbox en rollbacks
Giuffrida heeft het kernprobleem onderzocht: hoe de staat van de oude softwareversie te bewaren om die dan over te hevelen naar de nieuwe versie. Zijn oplossing voor het complexe probleem van ‘state transfer’ is volgens begeleidend professor Bos zowel elegant als praktisch. Het updateproces gebeurt in een parallel draaiende kopie, waarbij de te vervangen versie nog gewoon in werking blijft.
Pas zodra de nieuwe versie zijn interne staat heeft geïnitialiseerd, op basis van zijn vorige versie, is het klaar om de werking van het systeem over te nemen. De overdracht van de staat gebeurt in een geïsoleerde omgeving (sandbox). Door de parallelle uitvoering en de overdracht in een sandbox kan het systeem in geval van updatefouten automatisch terugvallen op de vorige versie, die dan nog gewoon aanwezig en operationeel is.
In de aankondiging van Giuffrida’s promotie omschreef de VU dit als gebruik maken van een ‘parallel universum’. Uiteindelijk moet het mogelijk zijn om ook Windows te updaten zonder dat de gebruiker er iets van merkt en alle software kan blijven gebruiken zonder onderbreking en zonder opnieuw op te starten.
Prestigieuze prijs
Het werk van Giuffrida om het updaten van computers te verbeteren, is begin deze maand internationaal erkend met een prestigieuz prijs. De VU-onderzoeker heeft op de 25ste SOSP Conferentie in Californië de Dennis M. Ritchie Award ontvangen (vernoemd naar de medegrondlegger van Unix en C). Deze prijs wordt sinds 2013 uitgereikt voor het beste proefschrift ter wereld op het gebied van computersystemen. De VU meldt dat dit voor het eerst is dat deze award aan een Europese computerwetenschapper wordt toegekend. De vorige twee winnaars kwamen uit de Verenigde Staten.
Niet bekend met hoe standaard file updates op linux kunnen?
https://en.wikipedia.org/wiki/ZFS met snapshots kan ook helpen.
Zelfs de kernel kan gedeeltelijk geupdate worden tijdens normaal bedrijf:
https://en.wikipedia.org/wiki/Ksplice#See_also