Canonical har offentliggjort udgivelsen af container manager LXD 5.0 og det virtuelle filsystem LXCFS 5.0. LXD-koden er skrevet i Go og distribueret under Apache 2.0-licensen. 5.0-grenen er klassificeret som en langsigtet supportudgivelse - opdateringer vil blive genereret indtil juni 2027.
Som en runtime til at starte containere bruges LXC-værktøjssættet, som inkluderer liblxc-biblioteket, et sæt hjælpeprogrammer (lxc-create, lxc-start, lxc-stop, lxc-ls osv.), skabeloner til at bygge containere og en sæt bindinger til forskellige programmeringssprog. Isolering udføres ved hjælp af standard Linux-kernemekanismer. For at isolere processer, ipc-netværksstakken, uts, bruger-id'er og monteringspunkter, bruges navnerumsmekanismen. cgroups bruges til at begrænse ressourcer. For at sænke privilegier og begrænse adgang, bruges kernefunktioner såsom Apparmor- og SELinux-profiler, Seccomp-politikker, Chroots (pivot_root) og muligheder.
Udover LXC bruger LXD også komponenter fra CRIU- og QEMU-projekterne. Hvis LXC er et værktøjssæt på lavt niveau til manipulation på niveau med individuelle containere, så leverer LXD værktøjer til centraliseret styring af containere, der er installeret i en klynge af flere servere. LXD er implementeret som en baggrundsproces, der accepterer anmodninger over netværket via REST API og understøtter forskellige storage-backends (katalogtræ, ZFS, Btrfs, LVM), snapshots med et tilstandsudsnit, live-migrering af kørende containere fra én maskine til en anden, og værktøjer til opbevaring af billedbeholdere. LXCFS bruges til at simulere pseudo-FS /proc og /sys i containere, og den virtualiserede repræsentation cgroupfs for at give containerne udseendet af et almindeligt uafhængigt system.
Vigtigste forbedringer:
- Mulighed for hot-plug og frakobling af drev og USB-enheder. I en virtuel maskine detekteres en ny disk ved udseendet af en ny enhed på SCSI-bussen, og en USB-enhed detekteres ved genereringen af en USB-hotplug-hændelse.
- Det er muligt at starte LXD, selv når det er umuligt at etablere en netværksforbindelse, for eksempel på grund af fraværet af den nødvendige netværksenhed. I stedet for at vise en fejl ved opstart, starter LXD nu det maksimale antal mulige miljøer under de nuværende forhold, og de resterende miljøer startes efter netværksforbindelsen er etableret.
- En ny klyngemedlemsrolle er blevet tilføjet - ovn-chassis, beregnet til klynger, der bruger OVN (Open Virtual Network) til netværkskommunikation (ved at tildele rollen ovn-chassis, kan du vælge servere til at udføre funktionerne i OVN-routere).
- En optimeret tilstand til opdatering af indholdet af lagerpartitioner er blevet foreslået. I tidligere udgivelser bestod opdateringen i først at kopiere en containerinstans eller partition, for eksempel ved at bruge send/receive-funktionen i zfs eller btrfs, hvorefter den oprettede kopi blev synkroniseret ved at køre programmet rsync. For at forbedre effektiviteten af opdatering af virtuelle maskiner bruger den nye udgivelse avanceret migrationslogik, hvor, hvis kilde- og destinationsserverne bruger den samme lagerpulje, bruges snapshots og send/modtag-handlinger automatisk i stedet for rsync.
- Logikken til at identificere miljøer i cloud-init er blevet omarbejdet: I stedet for miljønavne bruges UUID nu som instance-id.
- Tilføjet understøttelse til at tilslutte sched_setscheduler-systemkaldet, hvilket tillader uprivilegerede containere at ændre procesprioriteter.
- Indstillingen lvm.thinpool_metadata_size er blevet implementeret for at kontrollere størrelsen af metadata i thinpool.
- Filformatet med netværksoplysninger til lxc er blevet redesignet. Tilføjet understøttelse af data om grænsefladebinding, netværksbroer, VLAN og OVN-netværk.
- Kravene til minimumskomponentversioner er blevet øget: Linux-kerne 5.4, Go 1.18, LXC 4.0.x og QEMU 6.0.
- LXCFS 5 tilføjede understøttelse af det forenede cgroup-hierarki (cgroup2), implementerede /proc/slabinfo og /sys/devices/system/cpu og brugte meson-værktøjssættet til montering.
Kilde: opennet.ru