De Linux-kernel vormt de basis voor allerlei systemen. Door de complexiteit van de kernel komen er geregeld patches uit die wij zonder downtime doorvoeren.
De Linux-kernel vormt de basis voor Linux, het meestgebruikte besturingssysteem voor websites en servers. De kernel is een onmisbaar stuk software dat het systeem aanstuurt. Om de Linux-kernel veilig te houden worden geregeld kernel-updates uitgebracht. Om deze updates door te voeren moet het systeem echter opnieuw gestart worden, wat downtime met zich meebrengt. Bij Cyberfusion doen we het anders...
Linux-kernel update probleem
De Linux-kernel is behoorlijk complexe software. Aan de Linux-kernel hebben meer dan 14.000 mensen bijgedragen en de code bestaat uit meer dan 15 miljoen lijnen. Het is namelijk cruciaal dat Linux super-stabiel draait.
Door deze complexiteit komt het geregeld voor dat er nieuwe kernel-versies worden uitgebracht om de code te verbeteren. Kernel-updates variëren van kleine code-verbeteringen tot oplossingen voor beveiligingslekken. Wanneer een kernel-update uitkomt, moeten systemen zo snel mogelijk bijgewerkt worden. Als een update een oplossing bevat voor een beveiligingslek, is een systeem vatbaar voor aanvallers totdat deze geüpdatet wordt.
Het nadeel van het doorvoeren van een update, is dat een systeem opnieuw gestart moet worden om een kernel-update door te voeren. Een systeem is dus niet veilig totdat deze opnieuw gestart wordt, maar herstarten brengt downtime met zich mee. Aan de ene kant willen we het doorvoeren van updates niet uitstellen, en aan de andere kant willen we geen downtime veroorzaken...
Direct veilig met 'live patching'
Wij vinden dat een systeem én veilig moet zijn én hoge uptime moet hebben. Daarom maken wij gebruik van zogenaamde 'live kernel patching', waardoor onze systemen direct veilig zijn zonder downtime.
Normaal gesproken moet een systeem opnieuw gestart worden omdat de Linux-kernel in het geheugen (RAM) draait. Geheugen is namelijk duizenden keren sneller dan een schijf, waardoor Linux zeer goed presteert. De kernel kan echter niet aangetast worden wanneer het in het geheugen geladen is. De enige manier om de nieuwe versie van de kernel opnieuw in te laden is door het systeem te herstarten.
Wij werken hieromheen met 'live kernel patching'. Met deze technologie worden stukjes kernel-code slim verwisseld met updates terwijl het systeem draait. In plaats van dat de hele kernel opnieuw ingeladen wordt, met een herstart tot gevolg, wordt de code in het geheugen verwisseld. Dit gaat als volgt in zijn werk.
Update wordt in KVAS geladen
Een update kan bestaan uit slechts enkele code-lijnen of een heel blok code. Zodra een update uitkomt, worden de wijzigingen in de Kernel virtual address space (KVAS) geladen. Dit is een speciaal stuk geheugen dat gereserveerd is voor de Linux-kernel. De code die nu in het geheugen staat wordt vervangen met de zojuist ingeladen, nieuwe code.
Processen worden bevroren
Om de update veilig door te voeren worden processen, zoals web-verkeer en de database, voor een fractie van een seconde bevroren.
Update wordt doorgevoerd
Terwijl de processen heel even bevroren zijn, wordt de draaiende code direct vervangen met de nieuwe code uit de update.
Processen worden hervat
Binnen een fractie van een seconde worden de processen weer hervat. De oude code is vervangen met de nieuwe code en zal niet meer draaien tenzij de update met de hand ongedaan wordt gemaakt.
Live Linux-kernel updates in de praktijk
Door de jaren heen zijn er flink wat kritische kernel-updates uitgebracht. Om er een paar te noemen:
- Fix voor kritische Dirty COW beveiligingslek (2016)
- Workaround voor kritische Meltdown/Spectre beveiligingslek in Intel CPU's (2018)
- Fix voor kritische SACK PANIC bug (2019)
- Workaround voor kritische SWAPGS beveiligingslek in Intel CPU's (augustus 2019)
Daarnaast zijn er nog tal van kleine updates die het nieuws niet halen maar wel misbruikt kunnen worden. Als we kijken naar een systeem dat al anderhalf jaar draait, zijn er 114 'live Linux-kernel updates' toegepast, zonder enige onderbreking of downtime. Dat hebben we liever dan 114 keer plannen en herstarten...
Ook interessant
Cyberfusion is verhuisd naar de Eindhoven Tower |
||||||||||||
|
||||||||||||
Op 1 juni zijn we verhuisd naar de Eindhoven Tower! We hebben het iconische Evoluon ingeruild voor een nieuwe basis tegenover Eindhoven Centraal station. |
||||||||||||
Lees verder » |
IPv6 als standaard: we gaan je actief informeren! |
||||||||||||
|
||||||||||||
Vanaf juni informeren we partners proactief over IPv6. Als websites geen AAAA-record hebben, gaan we helpen bij de implementatie van IPv6. |
||||||||||||
Lees verder » |
NGINX op clusters: nóg snellere sites! |
||||||||||||
|
||||||||||||
Nieuw op 100% uptime Cyberfusion clusters: NGINX én Apache webservers zijn nu beschikbaar! Serveer content óók tijdens bezoekerspieken razendsnel! |
||||||||||||
Lees verder » |