programmatūra · 6 min · 02.09.2026

Incus 7.4 pārceļ konteineru starp serveriem bez CRIU: apstāj tikai pēdējā snapshotā

Incus 7.4 pārceļ darbojošos konteineru uz citu serveri, nesūtot tam līdzi operatīvās atmiņas stāvokli. Konteinera failu sistēma nonāk mērķa serverī vairākos pieaugošos snapshotos, kamēr konteiners turpina strādāt. Apstādināšana notiek tikai pirms pēdējā snapshota pārsūtīšanas, pēc kura konteiners startē otrā pusē.

Laidiens iznāca 27. augustā ar 115 apvienotiem pull request pieprasījumiem. 68 no tiem iesūtīja projekta vadītājs Stéphane Graber. Pieci izstrādātāji Incus kodā ieguldīja pirmo reizi. Incus ir LXD atdalījums, ko uztur Linux Containers projekts.

CRIU strādāja tikai ar tam piemērotu slodzi

Līdz šim konteineru dzīvā migrācija Incus balstījās uz CRIU, kas iesaldē procesus un noglabā to atmiņas attēlu diskā. Metode ir jutīga: tā nostrādā vai nenostrādā atkarībā no tā, kas konkrētajā konteinerā darbojas. Atvērtas tīkla sesijas, netipiski failu deskriptori vai kodola funkcijas bez CRIU atbalsta apturēja visu procesu. Administratori to zināja un lielāko daļu konteineru pārvietoja vienkārši ar apstāšanos.

Near-live migrācija šo problēmu apiet, jo atmiņu neaiztiek vispār. Projekta paziņojums to formulē tieši:

Šī nav dzīvā migrācija, jo konteiners tomēr tiek pārstartēts, taču dīkstāve aprobežojas ar to pēdējo pārsūtīšanu, kas parasti ir ļoti ātra. Tas ļauj pārvietot ļoti lielus konteinerus ar ļoti nelielu dīkstāvi.

Praktiskā atšķirība parādās pie apjoma. Konteineram ar simtiem gigabaitu datu pirmais snapshots aizņem tik ilgi, cik prasa tīkls. Katrs nākamais sūta tikai izmaiņas kopš iepriekšējā. Kad delta ir pietiekami maza, konteineru aptur, aizsūta atlikumu un palaiž mērķa serverī.

Divi karodziņi komandrindā

Funkcija pieejama ar jaunu --refresh karodziņu komandai incus move. Tā strādā gan starp viena klastera dalībniekiem, gan starp attāliem serveriem:

  • incus move c1 --target incus02 --stateless --refresh
  • incus move c1 remote-server:c1 --stateless --refresh

Klasteru evakuācijai instances konfigurācijas atslēga cluster.evacuate ieguva vērtību refresh-migrate. Ar to serveris, kuru izņem no ekspluatācijas, savus konteinerus pārvieto tādā pašā veidā bez atsevišķas komandas katram.

Ierobežojumi ir divi. Pirmais: atbalstīti tikai ZFS un btrfs krātuves draiveri, jo pārējiem nav efektīva snapshotu pārsūtīšanas mehānisma attālinātām kopijām. Otrais: tikai konteineri. Virtuālajām mašīnām paliek parastā dzīvā migrācija caur QEMU. Sīkāk to apraksta instanču pārvietošanas dokumentācija.

Secure Boot datubāzes atveras komandrindai

Pēc NVRAM piekļuves, kas parādījās Incus 7.3, šis laidiens dod pilnu rīku kopu virtuālo mašīnu UEFI Secure Boot datubāzēm. Jaunā komanda incus low-level secureboot ļauj ierakstus uzskaitīt, pievienot, izņemt, eksportēt un importēt. Saraksts parāda ieraksta tipu, īpašnieka GUID nosaukumu, nospiedumu un sertifikāta subjektu, tāpēc uzreiz redzams, kuras Microsoft parakstīšanas iestādes attiecīgajā mašīnā ir uzticamas.

Sākotnējo NVRAM stāvokli var uzstādīt jau instances izveidē ar sešām jaunām atslēgām: initial.secureboot.pk, initial.secureboot.kek, initial.secureboot.db, initial.secureboot.dbx, initial.secureboot.dbt un initial.secureboot.mok. Tās darbojas arī profilos, tāpēc vienu Secure Boot konfigurāciju var uzlikt veselai mašīnu grupai.

Blakus tam incus start ieguva --override-boot. Ar konkrētu ierakstu tas maina vienreizējo ielādes avotu, bez argumenta parāda interaktīvu sarakstu ar visiem NVRAM esošajiem ielādes ierakstiem, ieskaitot EFI Firmware Setup, SCSI disku, PXE un HTTP ielādi pa IPv4 vai IPv6.

Divas vidēja līmeņa ievainojamības

Laidiens aizver divas drošības problēmas, abas ar vidēju bīstamību. CVE-2026-81500 ir klienta puses ceļa apiešana: ļaunprātīgs serveris, no kura lejupielādē attēlu, varēja panākt failu rakstīšanu ārpus paredzētās mapes. CVE-2026-81501 ļāva ierobežotam klientam importēt privātu attēlu no cita projekta. Papildus tam API atbildēs paslēptas vēl vairākas sensitīvas konfigurācijas atslēgas.

Instancēm pievienota atslēga security.protection.start. Kad tā ieslēgta, instanci nevar palaist, kamēr aizsardzība nav noņemta. Tas noder iesaldētiem konteineriem, kurus kāds automatizēts skripts citādi startētu atpakaļ.

Burst limiti, librbd un jaunas minimālās versijas

Disku ierīcēm virtuālajās mašīnās parādījās limits.read.burst, limits.write.burst un limits.max.burst. Tie lieto to pašu sintaksi kā parastie limiti (baitos sekundē vai IOPS) un nosaka ātrumu, ko ierīce drīkst sasniegt uzplūdā. Cik ilgi uzplūds turas, nosaka atbilstošās .length atslēgas ar noklusējumu viena sekunde.

Tīkla ierīces ieguva limits.ingress.bucket, limits.egress.bucket un limits.max.bucket, kas bitos definē datu apjomu virs noturīgā limita. Bridged, p2p un routed NIC papildus pieņem burst atslēgas, kas nosaka, cik ātri šo spaini iztukšo. OVN tīkla kartēm strādā tikai spaiņa atslēgas. Tiem pašiem trim NIC tipiem pievienota queue.discipline resursdatora puses rindas disciplīnas izvēlei.

Ceph krātuves draiveris ieguva ceph.rbd.backend. Ar vērtību librbd apjomiem piekļūst caur bibliotēku, apejot kodola RBD draiveri, kas dod pieeju RBD funkcijām bez kodola atbalsta. Komanda incus admin recover tagad atjauno arī koplietotās krātuves klasteros, tāpēc klasteris, kas pazaudējis savu datubāzi, ir izglābjams.

Minimālās prasības pakāpušās augstāk: Go 1.26, Open vSwitch 3.3.0 un OVN 24.03.0. Konfigurācijas atslēgu cephobject.radosgw.endpoint_cert_file nomainījusi cephobject.radosgw.endpoint_cert, jo Incus izvairās no atsaucēm uz lokāliem failiem, kurus klasterī grūti sinhronizēt. Pilnu izmaiņu sarakstu satur oficiālais laidiena paziņojums.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie