Come Meta (Facebook) riesce ad applicare patch ai Kernel dei suoi milioni di server Linux

2

Continuano ad arrivare storie interessanti dalla Linux Plumbers Conference, l’esclusivo evento riservato ai contributori del Kernel Linux. Dopo l’utilizzo dell’AI per effettuare autotuning del Kernel Linux e lo stato del supporto Rust con le importanti aziende vi contribuiscono, oggi parliamo di Meta, l’azienda di Facebook, la quale, per bocca del suo ingegnere Breno Leitao, ha spiegato come avviene la gestione delle patch applicate ai propri sistemi.

All’interno dell’articolo di The New Stack intitolato appunto How Meta Patches Linux at Hyperscale viene infatti descritta la modalità con cui i milioni (sì, avete letto bene, non migliaia) di server Linux vengono aggiornati. Modalità che, letteralmente per la legge dei grandi numeri, non può essere quella “classica” in cui un host viene riavviato per l’applicazione delle eventuali patch.

Questo perché, come spiega l’articolo, “Draining and un-draining hosts is hard“, infatti quando un host come quelli di Facebook deve essere riavviato, onde evitare disservizi, va svuotato del proprio carico il quale viene ripartito su altri server. Si fa in fretta a capire come un approccio simile, dati i numeri, sia complicato da applicare.

Ecco perché Meta utilizza il Kernel Live Patching (KLP) che mediante la tecnologia Kpatch promossa da Red Hat consente di applicare le patch live, senza cioè dover riavviare la macchina. In realtà Kpatch non è “niente di nuovo sotto il sole”, pensate infatti che la prima volta in cui ne abbiamo parlato qui sul portare era quasi dieci anni fa, nell’articolo Red Hat introduce il patching del kernel live con Kpatch ed ancora prima, nel febbraio del 2014 raccontavamo di Kgraft, lo stesso tipo di tecnologia ma in salsa SUSE.

Tornando ai giorni nostri però, quello che è interessante a proposito del lavoro di meta è la scala di grandezza degli host impiegati. Le patch live del kernel vengono fornite come pacchetti con codice modificato separato dal pacchetto principale del kernel. Le patch live sono cumulative, quindi la patch più recente contiene tutte le correzioni di quelle precedenti per il pacchetto kernel.

Quindi ogni pacchetto kernel live è legato all’esatta revisione del kernel per la quale è stato rilasciato.

Ci sono però delle limitazioni, in quanto non è possibile effettuare le patch di dati o di strutture ed inoltre lavorare a queste patch richiede un effort extra in termini di ingegnerizzazione poiché, come afferma Leitao, il numero di cose che si possono rompere in una patch simile è… Piuttosto elevato.

L’approccio è ovviamente tutelativo: si parte da gruppi di macchine che sono considerate release candidate e, se tutto va bene, si procede con il resto. Nel contempo ci sono tutta una serie di controlli in merito a potenziali crash, allarmi ed eventuale decadimento delle performance, in modo da poter agire tempestivamente.

Se però ve lo stavate domandando: sì, il live patching è una realtà, e Meta ha un milione di ragioni per usarlo.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.