Canonical heeft de release aangekondigd van het containerbeheersysteem LXD 5.0 en het virtuele bestandssysteem LXCFS 5.0. De code van LXD is geschreven in de programmeertaal Go en wordt verspreid onder de Apache 2.0-licentie. Versie 5.0 is geclassificeerd als een uitgave met lange termijn ondersteuning ā updates zullen beschikbaar zijn tot juni 2027.
Als runtime voor het starten van containers wordt de LXC-tools gebruikt, die bestaat uit de bibliotheek liblxc, een set hulpprogramma's (lxc-create, lxc-start, lxc-stop, lxc-ls, enz.), sjablonen voor het bouwen van containers en een set bindings voor verschillende programmeertalen. Isolatie wordt bereikt met behulp van de standaardmechanismen van de Linux-kernel. Het isoleren van processen, de netwerkstack, ipc, uts, gebruikersidentificaties en mountpunten gebeurt via het mechanisme van namespaces. Voor het beperken van middelen worden cgroups gebruikt. Voor het verlagen van privileges en het beperken van toegang worden mogelijkheden van de kernel benut, zoals Apparmor-profielen, SELinux, Seccomp-beleidsregels, Chroots (pivot_root) en capabilities.
Naast LXC maakt LXD ook gebruik van componenten van de projecten CRIU en QEMU. Terwijl LXC een laagdrempelige tool is voor manipulatie op het niveau van afzonderlijke containers, biedt LXD middelen voor gecentraliseerd beheer van containers die zijn uitgerold in een cluster van meerdere servers. LXD wordt geĆÆmplementeerd als een achtergrondproces dat verzoeken via het netwerk accepteert via een REST API en verschillende opslagbackends ondersteunt (directorybomen, ZFS, Btrfs, LVM), snapshots van status, live-migratie van actieve containers van de ene machine naar de andere en middelen voor het opslaan van containerafbeeldingen. LXCFS wordt gebruikt om in containers een pseudo-bestandssysteem /proc en /sys te simuleren, evenals een gevirtualiseerde weergave van cgroupfs voor het geven van containers het uiterlijk van een normale, onafhankelijke systeem.
Belangrijke verbeteringen:
- Mogelijkheid tot het warm aansluiten en loskoppelen van schijven en USB-apparaten. In de virtuele machine wordt een nieuwe schijf gedetecteerd via het verschijnen van een nieuw apparaat op de SCSI-bus, en een USB-apparaat via de generatie van een USB hotplug-evenement.
- Er is een mogelijkheid toegevoegd om LXD te starten, zelfs als het netwerkverbinding niet kan worden opgezet, bijvoorbeeld door het gebrek aan het benodigde netwerkapparaat. In plaats van een foutmelding bij het starten van LXD, wordt nu het maximaal mogelijke aantal omgevingen gestart onder de huidige omstandigheden, en de overige omgevingen worden gestart zodra de netwerkverbinding is hersteld.
- Er is een nieuwe rol voor clusterleden toegevoegd - ovn-chassis, bedoeld voor clusters die gebruik maken van OVN (Open Virtual Network) voor netwerkcommunicatie (door de rol ovn-chassis toe te wijzen, kunnen servers worden aangewezen voor de taken van OVN-routering).
- Er is een geoptimaliseerde modus voor het bijwerken van opslaggedeelten voorgesteld. In eerdere versies bestond de update voornamelijk uit het kopiëren van een containerexemplaar of een gedeelte, bijvoorbeeld door gebruik te maken van send/receive-functionaliteit in zfs of btrfs, waarna de gemaakte kopie werd gesynchroniseerd met behulp van het rsync-programma. Om de efficiëntie van de updates te verhogen, virtuele machines is in deze nieuwe uitgave geavanceerde migratielogica geïmplementeerd, waarbij, als de oorspronkelijke en doelserver dezelfde opslagpool gebruiken, in plaats van rsync automatisch snapshots en send/receive-bewerkingen worden toegepast.
- De logica voor het identificeren van omgevingen in cloud-init is herzien: in plaats van omgevingseisen wordt nu UUID gebruikt als instance-id.
- Ondersteuning voor het onderscheppen van de systeemaanroep sched_setscheduler is toegevoegd, waardoor niet-bevoorrechte containers de prioriteiten van processen kunnen wijzigen.
- De optie lvm.thinpool_metadata_size is gerealiseerd, die de grootte van metadata in thinpool beheert.
- Het bestandsformaat voor netwerkinformatie voor lxc is herzien. Ondersteuning voor informatie over interfacebindingen, netwerkbridges, VLAN en OVN-netwerken is toegevoegd.
- De vereisten voor minimale versies van componenten zijn verhoogd: Linux-kernel 5.4, Go 1.18, LXC 4.0.x en QEMU 6.0.
- In LXCFS 5 is ondersteuning toegevoegd voor de unificatie van de cgroup-hiƫrarchie (cgroup2), met implementaties van /proc/slabinfo en /sys/devices/system/cpu. Voor de samenstelling is de meson-toolkit gebruikt.
Bron: opennet.ru
