Rilascio del sistema di gestione dei contenitori LXD 5.0

Canonical ha pubblicato il rilascio del container manager LXD 5.0 ​​e del file system virtuale LXCFS 5.0. Il codice LXD è scritto in Go e distribuito sotto la licenza Apache 2.0. Il ramo 5.0 è classificato come rilascio di supporto a lungo termine: gli aggiornamenti verranno generati fino a giugno 2027.

Come runtime per l'avvio dei contenitori, viene utilizzato il toolkit LXC, che include la libreria liblxc, una serie di utilità (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), modelli per la creazione di contenitori e un insieme di associazioni per vari linguaggi di programmazione. L'isolamento viene effettuato utilizzando i meccanismi standard del kernel Linux. Per isolare i processi, lo stack di rete ipc, uts, ID utente e punti di montaggio, viene utilizzato il meccanismo dei namespace. i cgroup vengono utilizzati per limitare le risorse. Per ridurre i privilegi e limitare l'accesso, vengono utilizzate funzionalità del kernel come profili Apparmor e SELinux, policy Seccomp, Chroots (pivot_root) e funzionalità.

Oltre a LXC, LXD utilizza anche componenti dei progetti CRIU e QEMU. Se LXC è un toolkit di basso livello per la manipolazione a livello di singoli contenitori, LXD fornisce strumenti per la gestione centralizzata dei contenitori distribuiti in un cluster di più server. LXD è implementato come processo in background che accetta richieste sulla rete tramite l'API REST e supporta vari backend di archiviazione (albero delle directory, ZFS, Btrfs, LVM), istantanee con una sezione di stato, migrazione in tempo reale di contenitori in esecuzione da una macchina all'altra, e strumenti per archiviare contenitori di immagini. LXCFS viene utilizzato per simulare lo pseudo-FS /proc e /sys nei contenitori e la rappresentazione virtualizzata cgroupfs per dare ai contenitori l'aspetto di un normale sistema indipendente.

Miglioramenti chiave:

  • Possibilità di collegare e scollegare a caldo unità e dispositivi USB. In una macchina virtuale, un nuovo disco viene rilevato dalla comparsa di un nuovo dispositivo sul bus SCSI e un dispositivo USB viene rilevato dalla generazione di un evento hotplug USB.
  • È possibile avviare LXD anche quando è impossibile stabilire una connessione di rete, ad esempio a causa dell'assenza del dispositivo di rete necessario. Invece di visualizzare un errore all'avvio, LXD ora avvia il numero massimo di ambienti possibili nelle condizioni attuali e gli ambienti rimanenti vengono avviati dopo aver stabilito la connessione di rete.
  • È stato aggiunto un nuovo ruolo membro del cluster: ovn-chassis, destinato ai cluster che utilizzano OVN (Open Virtual Network) per le comunicazioni di rete (assegnando il ruolo ovn-chassis, è possibile selezionare i server per eseguire le funzioni dei router OVN).
  • È stata proposta una modalità ottimizzata per aggiornare il contenuto delle partizioni di archiviazione. Nelle versioni precedenti, l'aggiornamento consisteva prima nella copia di un'istanza o partizione del contenitore, ad esempio utilizzando la funzionalità di invio/ricezione in zfs o btrfs, dopodiché la copia creata veniva sincronizzata eseguendo il programma rsync. Per migliorare l'efficienza dell'aggiornamento delle macchine virtuali, la nuova release utilizza una logica di migrazione avanzata, in cui, se i server di origine e di destinazione utilizzano lo stesso storage pool, vengono automaticamente utilizzate le istantanee e le operazioni di invio/ricezione al posto di rsync.
  • La logica per identificare gli ambienti in cloud-init è stata rielaborata: al posto dei nomi degli ambienti, ora viene utilizzato l'UUID come ID istanza.
  • Aggiunto il supporto per l'hook della chiamata di sistema sched_setscheduler, consentendo ai contenitori non privilegiati di modificare le priorità del processo.
  • L'opzione lvm.thinpool_metadata_size è stata implementata per controllare la dimensione dei metadati in thinpool.
  • Il formato file con le informazioni di rete per lxc è stato riprogettato. Aggiunto supporto per dati su collegamento di interfaccia, bridge di rete, rete VLAN e OVN.
  • I requisiti per le versioni minime dei componenti sono stati aumentati: kernel Linux 5.4, Go 1.18, LXC 4.0.x e QEMU 6.0.
  • LXCFS 5 ha aggiunto il supporto per la gerarchia unificata dei cgroup (cgroup2), ha implementato /proc/slabinfo e /sys/devices/system/cpu e ha utilizzato il toolkit meson per l'assemblaggio.

Fonte: opennet.ru

Aggiungi un commento