Retour à l’aperçu de l’actualité
Incus 7.0 LTS est maintenant disponible¶
5 mai 2026
Introduction¶
C’est avec beaucoup de fierté et de plaisir que l’équipe d’Incus annonce la sortie d’Incus 7.0 LTS !
Incus est un gestionnaire moderne de conteneurs système et d’application et de machines virtuelles. C’est un projet open source publié sous licence Apache 2.0 et géré par la communauté dans le cadre de l’organisation Linux Containers.
Incus fournit un environnement de type cloud permettant la création d’instances à partir de nos images prédéfinies ou de dépôts OCI, et offrant une grande variété de fonctionnalités, comme la capacité de gérer en toute simplicité des clusters de serveurs.
Il prend en charge différents systèmes de stockage locaux ou distants, une gestion réseau traditionnelle ou entièrement distribuée, et offre les fonctionnalités cloud les plus courantes, avec notamment une API REST, des intégrations avec des outils comme Ansible, Terraform/OpenTofu, Packr, Kubernetes Cluster API, et plus encore !
Il s’agit de la deuxième version LTS d’Incus, marquant l’entrée d’Incus 6.0 LTS dans sa phase de maintien en condition de sécurité pendant les 3 dernières années de son cycle de vie de 5 ans.
Incus 7.0 LTS rejoint LXC 7.0 LTS et LXCFS 7.0 LTS pour conclure cette série de versions LTS.
Tout comme ces autres projets, Incus 7.0 LTS sera supporté jusqu’en juin 2031.
Les 2 premières années seront consacrées à la corrections de bugs et de problèmes de sécurité, ainsi qu’à des améliorations livrées dans des versions mineures (7.0.x). Après ces deux premières années, Incus 7.0 LTS ne recevra plus que des mises à jour de sécurité pour le reste de ses 5 ans de support.
Un total de 204 individus ont contribué à Incus entre les versions 6.0 LTS et 7.0 LTS, avec 45 contributrices et contributeurs entre les versions 6.23 et 7.0 LTS.
Comme d’habitude, vous pouvez l’essayer en ligne : https://linuxcontainers.org/incus/try-it/
Correctifs de sécurité¶
Cette version corrige un total de 9 vulnérabilités.
Celles-ci ont été remontées dans le cadre d’un audit de sécurité d’Incus mené par https://7asecurity.com.
- CVE-2026-35527 (modérée)
- CVE-2026-40195 (modérée)
- CVE-2026-40197 (modérée)
- CVE-2026-40251 (modérée)
- CVE-2026-41647 (modérée)
- CVE-2026-41684 (modérée)
- CVE-2026-41685 (modérée)
- CVE-2026-40243 (faible)
- CVE-2026-41648 (faible)
Changements majeurs¶
Puisqu’il s’agit d’une nouvelle version majeure, nous en avons profité pour apporter quelques changements pouvant affecter les systèmes exécutant Incus.
Les exigences système minimales ont été mises à jour :
- Go 1.25
- Linux 6.12
- QEMU 8.2
- LXC 6.0.0
- nftables 1.0.0
- dnsmasq 2.90
- Open vSwitch 2.15.0 (lorsqu’OVS ou OVN sont utilisés)
- OVN 23.03.0 (lorsqu’OVN est utilisé)
- ZFS 2.1.0 (lorsque ZFS est utilisé)
- LVM 2.03.11 (lorsque LVM est utilisé)
De plus, certains sous-systèmes historiques ont été supprimés :
- Retrait du support des CGroupV1
- Retrait du support de xtables (iptables/ip6tables/ebtables)
L’outil incus a également connu bon nombre d’améliorations dans sa gestion des arguments en ligne de commande, et a été rendu plus cohérent par la suppression de cas spéciaux préservés pour des raisons historiques.
Changements depuis Incus 6.23¶
Remplacement de MinIO¶
MinIO n’étant plus maintenu, il n’était pas raisonnable de continuer à l’utiliser pour nos buckets de stockage.
Plutôt que d’utiliser une nouvelle dépendance externe et d’effectuer tout le travail d’intégration qui vient avec, nous avons décidé d’implémenter notre propre serveur S3, fournissant les opérations basiques dont nous avons besoin dans Incus.
Les buckets de stockage seront automatiquement convertis depuis le format de stockage de MinIO vers notre nouveau format (de simples fichiers avec leurs métadonnées) la première fois qu’ils seront requêtés. Le processus peut prendre quelques minutes en fonction de la taille des objets présents dans le bucket.
La logique de migration conserve les métadonnées de MinIO originales, si celles-ci se montraient utiles un jour.
Du point de vue des clients, hormis un délai au premier accès du fait de la conversion, l’API n’a pas changé et reste conforme à S3.
Action à l’extinction du serveur¶
Une nouvelle option de configuration du serveur, core.shutdown_action, a été ajoutée.
La valeur shutdown (par défaut), arrête les instances proprement. La nouvelle valeur evacuate déclenche l’évacuation du serveur de son cluster à l’extinction, permettant le déplacement des instances vers d’autres serveurs.
Documentation : https://linuxcontainers.org/incus/docs/main/server_config/
API de sauvegarde bas niveau¶
Pour simplifier son intégration dans des logiciels de sauvegarde, Incus expose désormais une API NBD et des API permettant de suivre quels blocs ont été modifiés dans les volumes en bloc (dirty bitmaps).
La combinaison de ces deux fonctionnalités ouvre la voie vers des sauvegardes et restaurations incrémentales simplifiées.
Le client en ligne de commande d’Incus peut être utilisé pour gérer la connexion NBD et fournir un port d’écoute local utilisable par des clients NBD standards.
stgraber@castiana:~$ incus storage volume nbd default virtual-machine/v1 --address=127.0.0.1:1234
NBD listening on 127.0.0.1:1234
Restrictions sur les pools de stockage dans les projets¶
Une nouvelle clef de configuration pour les projets, restricted.storage-pools.access, a été ajoutée pour définir une liste de pools de stockage (séparée par des virgules) pouvant être utilisés dans un projet.
Son effet est similaire au fait de définir un quota de 0 octets pour les pools ne devant pas être utilisés dans le projet, mais l’option permet de définir positivement les pools autorisés, et non négativement les pools interdits.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/projects/
Appel du scriptlet de placement des instances lors du rééquilibrage du cluster¶
Le scriptlet de placement des instances supporte une nouvelle raison rebalance lorsque la fonctionnalité de rééquilibrage est activée et qu’Incus cherche à déplacer des instances pour équilibrer sa charge.
La liste des serveurs candidats est triée du serveur le moins chargé au plus chargé.
Documentation : https://linuxcontainers.org/incus/docs/main/explanation/clustering/
Commandes de transfert de fichiers alignées avec cp¶
Les commandes incus file push et incus file pull suivent à présent un comportement similaire à celui de la commande cp, avec des drapeaux en commun :
-p, --create-dirs Créer les dossiers intermédiaires
-L, --dereference Toujours suivre les liens symboliques source
-H, --follow Seulement suivre les liens symboliques source fournis en arguments
-P, --no-dereference Ne jamais suivre les liens symboliques source
-r, --recursive Transférer les fichiers récursivement
L’expérience devrait être plus prédictible lors du transfert de fichiers vers et depuis des instances Incus.
Drapeau --reuse pour incus image copy¶
La commande incus image copy supporte désormais un drapeau --reuse qui, lorsqu’utilisé aves --copy-aliases, fait que les anciens alias pointent sur la nouvelle image.
Changements depuis Incus 6.0.6 LTS¶
Nous avons rétroporté de manière assez agressive les changements des versions Incus 6.x vers les versions 6.0.x LTS. En conséquence, la liste des nouvelles fonctionnalités par rapport à la version 6.0.6 LTS est assez courte.
Ces fonctionnalités demandent des changements majeurs sur le disque ou dans les bases de données, et n’étaient donc pas appropriées pour du rétroportage dans les versions LTS.
Toutes les fonctionnalités citées ci-dessus¶
Incus 6.0.6 LTS est sorti juste avant Incus 6.23 ; en conséquence, toutes les nouvelles fonctionnalités citées ci-dessus s’appliquent aux migrations depuis Incus 6.0.6 LTS.
Support d’OCI¶
Ajouté dans Incus 6.3, le support d’OCI permet la création de conteneurs d’application à partir d’images OCI.
Toutes les options de configuration des conteneurs Incus, qu’il s’agisse de limites de ressources, d’interceptions de syscalls… s’appliquent également aux conteneurs applicatifs. Ils sont aussi tous lancés dans le même environnement sûr de conteneurisation que nos conteneurs système.
stgraber@dakara:~$ incus remote add docker https://docker.io --protocol=oci
stgraber@dakara:~$ incus launch docker:mysql mysql \
> -c environment.MYSQL_DATABASE=wordpress \
> -c environment.MYSQL_USER=wordpress \
> -c environment.MYSQL_PASSWORD=wordpress \
> -c environment.MYSQL_RANDOM_ROOT_PASSWORD=1
Launching mysql
stgraber@dakara:~$ incus list mysql
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| mysql | RUNNING | 172.17.250.26 (eth0) | 2602:fc62:c:250:216:3eff:fefa:468 (eth0) | CONTAINER (APP) | 0 |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
stgraber@dakara:~$ incus launch docker:wordpress wordpress \
> -c environment.WORDPRESS_DB_HOST=172.17.250.26 \
> -c environment.WORDPRESS_DB_USER=wordpress \
> -c environment.WORDPRESS_DB_PASSWORD=wordpress \
> -c environment.WORDPRESS_DB_NAME=wordpress
Launching wordpress
stgraber@dakara:~$ incus list wordpress
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
| wordpress | RUNNING | 172.17.250.119 (eth0) | 2602:fc62:c:250:216:3eff:fe61:c1fc (eth0) | CONTAINER (APP) | 0 |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
stgraber@dakara:~$
Volumes de stockage dépendants¶
Ajoutés dans Incus 6.23, les volumes de stockage dépendants permettent de lier des volumes personnalisés à des instances, de telle sorte que les instantanés, la migration, les sauvegardes, et les suppressions portent à la fois sur les instances et leurs volumes dépendants.
stgraber@castiana:~$ incus launch images:debian/13 c1
Launching c1
stgraber@castiana:~$ incus storage volume create default c1-extra dependent=true
Storage volume c1-extra created
stgraber@castiana:~$ incus config device add c1 extra disk pool=default source=c1-extra dependent=true path=/extra
Device extra added to c1
stgraber@castiana:~$ incus storage volume snapshot create default c1-extra test
Error: Direct snapshots are not allowed for dependent volumes
stgraber@castiana:~$ incus snapshot create c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------------------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------------------+------------+
| foo | 2026/03/27 18:54 EDT | |
+------+----------------------+------------+
stgraber@castiana:~$ incus snapshot delete c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------+------------+
Ensembles d’adresses réseau¶
Ajoutés dans Incus 6.12, les ensembles d’adresses réseau fournissent un moyen de simplifier la définition d’ACL réseau référençant ces ensembles.
Tout comme les ACL, les ensembles d’adresses sont liés à chaque projet, et chaque ensemble peut contenir un certain nombre d’adresses IPv4 et IPv6. Les ensembles peuvent ensuite être utilisés dans les ACL comme source ou comme destination.
stgraber@dakara:~$ incus network address-set create cloudflare-dns
Network address set cloudflare-dns created
stgraber@dakara:~$ incus network address-set add cloudflare-dns 1.0.0.1
stgraber@dakara:~$ incus network address-set add cloudflare-dns 1.1.1.1
stgraber@dakara:~$ incus network address-set add cloudflare-dns 2606:4700:4700::1001
stgraber@dakara:~$ incus network address-set add cloudflare-dns 2606:4700:4700::1111
stgraber@dakara:~$ incus network acl create my-acl
Network ACL my-acl created
stgraber@dakara:~$ incus network acl rule add my-acl egress action=allow state=enabled
stgraber@dakara:~$ incus network acl rule add my-acl egress action=reject state=enabled destination='$cloudflare-dns'
stgraber@dakara:~$ incus config device override d13 eth0 security.acls=my-acl
Device eth0 overridden for d13
stgraber@dakara:~$ incus exec d13 -- ping linuxcontainers.org -c1 -W1
PING linuxcontainers.org (2602:fc62:a:1::7) 56 data bytes
64 bytes from rproxy.dcmtl.stgraber.org (2602:fc62:a:1::7): icmp_seq=1 ttl=59 time=8.60 ms
--- linuxcontainers.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.599/8.599/8.599/0.000 ms
stgraber@dakara:~$ incus exec d13 -- ping one.one.one.one -c1 -W1
PING one.one.one.one (2606:4700:4700::1111) 56 data bytes
--- one.one.one.one ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
Documentation : https://linuxcontainers.org/incus/docs/main/howto/network_address_sets/
Driver de stockage LINSTOR¶
Ajouté dans Incus 6.11, le driver LINSTOR permet la création de pools de stockage utilisant DRBD pour gérer la réplication des données entre différents systèmes.
Vous pouvez en apprendre plus sur LINSTOR sur leur site web : https://linbit.com/linstor/
Cela permet aux volumes en bloc d’être créés pour les conteneurs et les machines virtuelles, avec une copie primaire présente typiquement sur le serveur sur lequel l’instance tourne, et une copie répliquée présente sur un autre serveur du cluster.
Documentation du driver : https://linuxcontainers.org/incus/docs/main/reference/storage_linstor/
Guide d’utilisation : https://linuxcontainers.org/incus/docs/main/howto/storage_linstor_setup/
Documentation technique : https://linuxcontainers.org/incus/docs/main/reference/storage_linstor_internals/
Driver de stockage TrueNAS¶
Ajouté dans Incus 6.16, le driver TrueNAS permet l’utilisation d’un serveur TrueNAS distant comme pool de stockage pour les instances et volumes Incus.
Son comportement est similaire au driver de stockage ZFS (que TrueNAS utilise), mais, plutôt que d’interagir avec ZFS localement, le driver utilise l’API de TrueNAS pour effectuer les actions sur un serveur de stockage distant. Les volumes sont exposés au serveur Incus en iSCSI par le serveur TrueNAS.
Puisqu’il s’agit d’un driver de stockage distant (comme Ceph, Linstor et LVM en cluster), il peut être utilisé avec des clusters de serveurs Incus pour assurer des migrations fluides d’instances sans déplacement de disques.
root@truenas-incus:~# incus storage create demo truenas source=test/demo truenas.host=192.0.2.10 truenas.api_key=MY-KEY truenas.allow_insecure=true
Storage pool demo created
root@truenas-incus:~# incus launch images:debian/13 d13 --storage demo
Launching d13
root@truenas-incus:~# incus list
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
| d13 | RUNNING | 10.2.165.159 (eth0) | fd42:a815:51cf:d4bb:1266:6aff:fe51:ae56 (eth0) | CONTAINER | 0 |
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_truenas/
Définition de fonctionnalités CPU dans des groupes d’un cluster¶
Ajoutées dans Incus 6.4, les définitions de fonctionnalités CPU permettent de gérer de manière efficace des clusters de machines hétérogènes.
Il est ainsi possible d’avoir un groupe par modèle/génération de CPU, et de laisser Incus calculer un ensemble de flags CPU commun pour ces serveurs.
Par exemple, incus cluster group set foo instances.vm.cpu.x86_64.baseline=kvm64 instances.vm.cpu.x86_64.flags=auto permet à Incus de parcourir automatiquement les serveurs dans le groupe foo et de le laisser définir la clef de configuration flags avec l’ensemble des flags CPU en commun.
Mais cela permet également de définir votre propre configuration CPU ; par exemple, incus cluster group set foo instances.vm.cpu.x86_64.baseline=EPYCv2 instances.vm.cpu.x86_64.flags=-svm expose un CPU AMD EPYC de base de 2e génération, avec l’extension de virtualisation (svm) désactivée.
Liste complète des changements¶
Voici une liste complète de tous les changements apportés depuis Incus 6.23 :
Liste complète des commits
- shared/cliconfig: Shorten path to using keepalive proxy
- shared/cliconfig: Implement TLS cert/key/ca caching
- shared/cliconfig: Add support for encrypted TLS keys to keepalive proxy
- github: format INCUS_VERSION from tag in release workflow
- Added translation using Weblate (Georgian)
- client: Optionally skip blocking for OIDC authentication
- incus/version: Gracefully fail when server unreachable
- incusd/instance/agent-loader: Use Linux arch names
- incusd/instance/qmp: Add QuerySpice
- incusd/instance/qemu: Add SPICE detection logic
- incusd/instance/qemu: Disable SPICE on systems missing support
- incusd/instances/qemu: Rework qemuArchConfig
- incusd/instance/qmp: Add Query9pDevice
- incusd/instance/qemu: Add plan9 detection logic
- incusd/instance/qemu: Export plan9 drives only when supported
- incusd/instance/qemu: enable SPICE audio via feature gate
- incus: Un-export Command and Run functions
- incus-benchmark: Un-export Command and Run functions
- incus-simplestreams: Un-export Command and Run functions
- incus-agent: Un-export Command and Run functions
- incus-user: Un-export Command and Run functions
- lxd-to-incus: Un-export Command and Run functions
- lxc-to-incus: Un-export Command and Run functions
- fuidshift: Un-export Command and Run functions
- incus: Un-export remaining exported functions
- incus-migrate: Un-export remaining exported functions
- incus-benchmark: Un-export remaining exported functions
- incusd: Un-export remaining exported functions
- incus-benchmark: Remove unused function
- incusd: Fix bad type in format strings
- incusd/instance/qmp: Add QueryVirtioSoundDevice
- incusd/instance/qemu: Add virtio-sound detection logic
- incusd/instance/qemu: Omit audio device on systems without virtio-sound
- Translated using Weblate (Georgian)
- Translated using Weblate (Russian)
- incusd/storage: Delete dependent volumes on instance deletion
- tests: Test dependent volume deletion on instance deletion
- internal/incusos: Allow non-GET requests
- internal/incusos: Implement TriggerSystemUpdateCheck
- incusd: Trigger IncusOS update check on version mismatch
- incusd/response: Make pipeResponse flush headers ASAP
- incusd: Disallow setting the 'dependent' key on volume creation
- incusd/device: Update 'dependent' flag on device add and detach
- tests: Add additional tests for dependent volume handling
- incusd/instance/common: Don't perform costly storage actions when no snapshots
- incusd: Remove explicit caching mechanism in favor of implicit
- incusd/storage/zfs: Implement better caching
- incusd/storage/truenas: Implement better caching
- incusd/instances: Allow more concurency
- incusd/storage/truenas: Retry iSCSI map request
- shared/cliconfig: Avoid treating
=as part of a remote name - incusd/network/state: Use canAccessNetwork
- cmd/incus-simplestreams: Add flag for overriding product name
- incusd/storage/truenas: Use old-style ZFS types
- incusd/storage/zfs: Use old-style ZFS types
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Tamil)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Greek)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- shared/api: Switch to go-yaml/v4
- shared/cliconfig: Switch to go-yaml/v4
- shared/cmd: Switch to go-yaml/v4
- shared/subprocess: Switch to go-yaml/v4
- shared/validate: Switch to go-yaml/v4
- incusd/instance/drivers: Switch to go-yaml/v4
- incusd/storage: Switch to go-yaml/v4
- incus-agent: Switch to go-yaml/v4
- incus-migrate: Switch to go-yaml/v4
- incus-simplestreams: Switch to go-yaml/v4
- incusd/backup: Switch to go-yaml/v4
- incusd/storage/drivers: Switch to go-yaml/v4
- incusd: Switch to go-yaml/v4
- incus: Switch to go-yaml/v4
- test: Switch to go-yaml/v4
- gomod: Update dependencies
- incus: Update for new YAML empty reader behavior
- test: Fix ordering of godeps.list
- tests: Update for slight YAML differences
- incusd/device: Ignore 'not found' errors when updating dependent config during device add/remove
- incusd/storage: Add ShouldMigrateDependentVolume
- incusd/instance: Add support for disk name to ExportQcow2Block
- incusd/instance/drivers: Add support for cross-cluster dependent volumes migration
- incusd/storage: Add support for cross-cluster dependent volumes migration
- incusd/instance: Add HasDependentDisk and ForEachDependentDiskType to instance interface
- incusd/storage: use ForEachDependentDiskType and HasDependentDisk from instance
- incusd/instance: Pass additional parameter to Delete method
- incusd/storage: Pass additional parameter to Delete method
- incusd/instance: Move dependent volume deletion from storage to instance delete()
- incusd/storage: Move dependent volume deletion from storage to instance delete()
- incusd/storage: Fix race in caching logic
- incusd/storage: Fix potential deadlock
- incusd/migration: Implement cancelation in migration logic
- incusd/instances: Implement cancelation in exec logic
- incusd: Clarify shutdown message
- incusd: Limit request body to 1MiB by default
- incusd: Configure exceptions to the 1MiB limit
- incusd/instance: Rename deleteDependentVolumes to cleanupDependencies
- incus/server/network/ovn/nb: Add function to get PortGroups by Port UUID
- incus/server/network/ovn/driver: Cleanup stale instance port uuids from acl port groups on instance stop
- incusd/storage: Support optimized storage for dependent volumes
- incusd/storage: Improve logging during dependent volume creation from backup
- incusd/storage: Rename createDependentVolumes to createDependentVolumesFromBackup
- incusd/device: Add cleanupDependencies argument to Remove() method
- incusd/instance/drivers: Pass the cleanupDependencies flag to device Remove
- tests: Rewrite out-of-space test to use profiles
- incusd/storage: Improve comments on locks
- incusd/forksyscall: Handle mount arguments when using idmap
- incusd/storage: Use device name when importing dependent volumes from backup
- tests: Add tests for exporting/importing dependent volumes
- incusd/cluster/config: Clarify description of oidc.claim option
- doc: Update metadata
- incusd/device/nic_physical: Fix device validation
- doc: Update config
- gomod: Update dependencies
- incusd/instance: Add support for stateful snapshots for qcow2 volumes
- incusd/storage: Add support for stateful snapshots for qcow2 volumes
- incusd: Don't expose the API extension list pre-authentication
- incusd/device/nic_physical: Fix bridge handling
- incusd/device/nic_physical: Fix inheritance from network
- incusd/instances/qemu: Skip vmcoreinfo on ppc64le
- doc/image_format: Update Pongo2 website
- incusd/device/nic_bridged: Handle physical NICs
- incusd/instance/drivers: Fix live migration of instances with snapshots
- incusd/instance/qemu: Scale SCSI queues with CPUs
- incus: Enable admin recover and admin sql on all platforms
- api: storage_volume_nbd
- incusd/auth: Add can_connect_nbd
- client: Add GetStoragePoolVolumeBlockNBDConn
- incusd/storage_volumes: Add NBD API
- incusd/storage: Implement NBD functions
- doc/rest-api: Refresh swagger YAML
- incusd/instance: Implement ConnectNBD
- incus/storage/volume: Add NBD command
- i18n: Update translation templates
- incusd/instance/qmp: Add QueryBlockExports and QueryNBDBlockExports
- incusd/instance/drivers: Improve error when NBD server is already running
- incusd/instance: Export snapshot when VM is running to ensure consistency
- incusd/storage: Export snapshot when VM is running to ensure consistency
- incusd/storage/drivers: Implement ActivateTask
- incusd/storage: Support NBD export in offline mode
- incusd/instance/qmp: Add commands to manage dirty bitmaps
- shared/api: Add structs for managing dirty bitmaps
- incusd/instance: Add methods to manage dirty bitmaps
- incusd/storage: Add InstanceByVolumeName
- incusd: Add API endpoints for managing dirty bitmaps
- doc/rest-api: Refresh swagger YAML
- incusd/instance/lxc: Don't return nil when not implemented
- client: Forward skopeo errors
- incusd/storage: Add instanceStateful flag to volume snapshot operations
- incusd/device: Pass instanceStateful flag during instance snapshot
- incusd: Pass instanceStateful flag during instance snapshot
- incusd/apparmor/qemuimg: Expand symlinks
- incus: Fix Windows absolute paths
- incus: Enforce stricter directory checks
- tests: Add strict pull checks for directories
- i18n: Update translation templates
- incusd: Return bitmap endpoints by default, objects with recursion=1
- doc/rest-api: Refresh swagger YAML
- incusd/instance/qemu: Fix RTC handling on Windows
- incusd/instance/drivers: Allow exposing dirty bitmaps through NBD export in online mode
- incusd/storage: Allow exposing dirty bitmaps through NBD export in offline mode
- incusd/storage/drivers: Fix ordering in Qcow2DeletionCleanup
- incusd/instance/drivers: Improve snapshot creation rollback handling
- incusd/storage: Improve snapshot creation rollback handling
- internal/instance: Introduce volatile.vm.boot_state
- incusd/instance/qemu: Rename internal structs
- incusd/instance/qemu: Add new migration state volatile
- incusd/instance/qemu: Move topology functions to new file
- incusd/instance/qemu: Make use of new migration state logic
- incusd/instance/qemu: Don't export internal vcpus and numa nodes maps
- doc: Update config
- incusd/instance/qemu: Handle stateful detection corner case
- incusd/migrate: Set short timeouts on read/write of control data
- client: Fix bad error handling
- incusd/response/upgrade: Add small delay for NBD
- incus/server/network/ovn/nb: Mark route as discord when nexthop is 'discard'
- incus/server/network/ovn/driver: Only add discard route if it doesn't exist already
- incusd/storage: Improve qcow2 volume handling
- incusd/storage/drivers: Add syncBtrfs
- incusd/storage/drivers: Use 'qemu-img info' in read-only mode
- incusd/instances: Don't delete ephemeral instances on system shutdown
- api: Add projects_restricted_storage_pool_access extension
- incusd/project: Add support for restricted.storage-pools.access
- doc: Update config
- incusd/project: Make checkRestrictionsAndAggregateLimits validate pool access
- Translated using Weblate (Tamil)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Greek)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- shared/archive: Improve detection and error handling
- shared/subprocess: Cleanup pointless check
- incusd/seccomp: Cleanup pointless check
- incusd/migrate: Bump migration timeouts
- shared/util: Introduce SafeCopy
- incus-migrate: Switch io.CopyN to util.SafeCopy
- incus: Switch io.CopyN to util.SafeCopy
- incusd: Switch io.CopyN to util.SafeCopy
- client: Switch io.Copy to util.SafeCopy
- shared/ws: Switch io.Copy to util.SafeCopy
- shared/cliconfig: Switch io.Copy to util.SafeCopy
- shared/util: Switch io.Copy to util.SafeCopy
- internal/util: Switch io.Copy to util.SafeCopy
- internal/io: Switch io.Copy to util.SafeCopy
- internal/rsync: Switch io.Copy to util.SafeCopy
- lxd-to-incus: Switch io.Copy to util.SafeCopy
- lxc-to-incus: Switch io.Copy to util.SafeCopy
- incus-simplestreams: Switch io.Copy to util.SafeCopy
- incus-agent: Switch io.Copy to util.SafeCopy
- incus-user: Switch io.Copy to util.SafeCopy
- incus-migrate: Switch io.Copy to util.SafeCopy
- incus: Switch io.Copy to util.SafeCopy
- incusd: Switch io.Copy to util.SafeCopy
- Translated using Weblate (Russian)
- incusd/migration: Bump timeouts to 30s
- Translated using Weblate (Russian)
- incusd/instance/qemu: Fix boot state recording
- incusd/devices/disk: Lock creation of ISO images
- incusd: Increase devices tmpfs
- gomod: Update dependencies
- incusd/device/nic: Prevent USB NICs on migratable VMs
- incus/cluster: Tweak error message
- i18n: Update translation templates
- incus/info: Tweak wording in resources output
- i18n: Update translation templates
- incus/export: Improve target file handling
- incus/import: Improve stdin handling
- incus/storage_volume: Improve import/export file handling
- incus/storage_bucket: Improve import/export file handling
- tests: Add import from stdin and export to stdout
- i18n: Update translation templates
- incusd/instance/drivers/qmp: Wait for block job completion after issuing block-job-complete
- incusd/instance/drivers: Add support for handling BLOCK_JOB_COMPLETED and BLOCK_JOB_ERROR events
- incusd/migrate: Limit timeout to initial handshake
- shared/archive: Avoid concurrent calls to Wait
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Greek)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Tamil)
- incusd/images: Allow simpler HTTP headers
- incusd/storage/drivers: Extract unpackVolume and backupVolume to util
- incusd/storage/drivers: Make createParentSnapshotDirIfMissing public
- incusd/storage: Add support for export/import qcow2 in raw format
- Translated using Weblate (Portuguese)
- incusd/instance/edk2: Add support for seabios at bios-256k
- incus: Widen stdout checks in pull commands
- incus: Add cp-like flags to incus file push
- tests: Test cp-like flags in incus file push
- incus: Defer dereferencing error handling
- incus: Add cp-like flags to incus storage volume file push
- tests: Test cp-like flags in incus storage volume file push
- i18n: Update translation templates
- incusd/instance/qemu: Improve OS detection for FreeBSD
- incus-agent: Use psutil for process count
- Translated using Weblate (Portuguese)
- Translated using Weblate (Russian)
- incusd/instance/qemu: Use timeouts for agent operations
- incusd: Add validation for dependent volumes during copy request
- incusd: Allow copy only when all volumes are on remote storage
- incusd/storage: Include dependent disks in copy requests
- incusd/instance/drivers: Remove temporary snapshot block device after migration
- incusd/storage: Add support for migrating dependent volumes with a new name
- incusd/storage: Add support for copying dependent volumes on the same target when the root volume storage changes
- incusd/instance/drivers: Add support for live-migration of dependent volumes with a changed name
- incusd/instance/drivers: Add check to notify disk only during cluster move
- incusd/instances/qemu: Fix crash on nil qmp handler in RunJSON
- incusd/storage: Prevent migration of dependent volumes for snapshot instances
- shared/validate: Fix name validation on single character
- internal/linux: Add logging to ClearBlock
- Translated using Weblate (Russian)
- incusd/networks: Support targeting of network list
- incus/network: Add --target to network list
- i18n: Update translation templates
- doc/benchmark_performance: Mention GOPATH
- incus/instance/drivers/common: Add isErrorStatusCode function Signed-off-by: Leon Schoch git@darkress.xyz
- incus/instance/drivers/qemu: Early return state call in case instance is in error state Signed-off-by: Leon Schoch git@darkress.xyz
- incus/instance/drivers/lxc: Early return state call in case instance is in error state Signed-off-by: Leon Schoch git@darkress.xyz
- incusd/cgroup: Require Cgroup V2
- incusd/instance/lxc: Remove cgroup1 support
- incusd: Remove cgroup1 support
- incusd/apparmor: Remove cgroup1 support
- incusd/device: Remove cgroup1 support
- incusd/seccomp: Remove cgroup1 support
- incusd/sys: Remove cgroup1 support
- doc: Remove cgroup1 mentions
- Translated using Weblate (Russian)
- incus-agent: Work around issue when built with GO111MODULE=off
- incusd/storage/drivers: Add CanRestoreVolume
- incusd/storage/drivers: Run Qcow2Info in read-only mode
- incusd/storage: Add CanRestoreInstanceSnapshot and qcow2CanRestoreSnapshot
- incusd/instance/drivers: Check whether an instance snapshot can be safely restored
- incusd/storage/drivers: Fix migration import-shadowing
- incus; Fix copy/pasted list column description
- incus: Add missing example descriptions
- incus/profile: Clarify example description
- incus/admin_sql: Clarify behavior on standalone systems
- i18n: Update translation templates
- incus: Wrap addition of string flags
- incus: Wrap addition of string array flags
- incus: Wrap addition of integer flags
- incus: Wrap addition of boolean flags
- incus: Wrap addition of native integer flags
- incus: Generalize -f shorthand for --force
- incus: Generalize -f shorthand for --format
- incus: Generalize -t shorthand for --type
- incus: Generalize -a shorthand for --all
- i18n: Update translation templates
- incusd: Reset LXC feature detection
- incusd/cgroup: Update LXC baseline
- incusd/device: Update LXC baseline
- incusd/instance/lxc: Update LXC baseline
- incusd/seccomp: Update LXC baseline
- incus: Improve cp compatibility for pull operations
- tests: Add more thorough tests for pull/push operations
- client: Add bitmap manipulation functions
- incusd: Remove kernel feature detection
- incusd/sys: Update kernel baseline
- incusd/instance/lxc: Update kernel baseline
- incusd/device: Update kernel baseline
- incusd/apparmor: Update kernel baseline
- incusd/seccomp: Update kernel baseline
- incusd/seccomp: Update LXC baseline
- incusd/instance/lxc: Drop forknet info fallback in networkState
- incusd/forknet: Remove unused info subcommand
- incusd/device/proxy: Drop pidfd fallback in setupProxyProcInfo
- incusd/seccomp: Assume pidfd kernel support in MakePidFd
- incusd/instance/lxc: Drop pidfd fallback paths
- shared/idmap: Keep respecting INCUS_IDMAPPED_MOUNTS_DISABLE
- doc/requirements: Expand on minimum versions
- incusd: Drop kernel version checks (6.12 baseline)
- incusd/instance/qemu: Drop QEMU version checks below 8.2
- incusd/storage/zfs: Drop ZFS version checks below 2.1.0
- incusd/storage/btrfs: Drop btrfs version checks below 6.12.0
- incusd/storage/lvm: Drop LVM version checks below 2.03.11
- incusd/storage/truenas: Bump baseline to 0.7.7
- incusd/firewall/nftables: Drop nftables version checks below 1.0.0
- incusd/apparmor: Drop AppArmor version checks below 3.0.0
- incusd/rsync: Drop rsync version checks below 3.2.0
- incusd/network/bridge: Drop dnsmasq version checks below 2.90
- Translated using Weblate (Portuguese)
- incusd/storage/linstor: Update comment
- incus/config_trust: Drop legacy [
:] ATOM syntax - shared/cliconfig: Drop legacy
syntax - incus/remote_unix: Drop legacy
syntax - incus/color: Add warning prefix
- incus/usage: Add deprecation warning for the
syntax - incus/storage_volume: Drop legacy [custom/] prefix
- tests: Drop legacy [custom/] prefix
- i18n: Update translation templates
- incusd/firewall: Drop xtables/iptables/ebtables backend (nftables only)
- doc: Drop xtables/iptables/ebtables references
- tests: Drop xtables firewall driver support
- github: Automatically close untyped issues
- github: Add disclaimer on bug reports
- incusd/storage: Allow overriding pool for dependent disk during migration
- incusd/migration: Add DeviceName field to DependentVolume
- client: Pass device override information during copy
- incusd/migration: Add support for overriding disk device pool during migration
- incusd/storage: Add support for overriding disk device pool during migration
- incusd/instance: Add UpdateDevices
- incusd/instance: Add support for overriding disk device pool during migration
- incusd: Add support for overriding disk device pool during migration
- incusd: Fix cross-server migration being used instead of intra-cluster migration when storage and target are specified
- incusd/storage/linstor: Tune DrbdOptions/Disk/rs-discard-granularity on pool creation
- incus/storage: Fix typo
- i18n: Update translation templates
- incus/cluster: Fix spelling of YAML
- i18n: Updatee translation templates
- incus/network_zone: Fix missing example description
- i18n: Updatee translation templates
- incus/storage_bucket: Fix bad list column help message
- i18n: Updatee translation templates
- internal/rsync: Fix gofumpt
- internal/server/cgroup: Fix gofumpt
- incusd/instances: Fix gofump
- incusd/storage/s3: Add in-process S3 handler package
- incusd/storage/s3: Switch to new listener
- incusd/storage/s3: Migrate data from minio to new format
- incusd/storage: Remove remaining minio interactions
- incusd/storage/s3: Remove minio supervisor and ActivateBucket
- tests: Replace minio with simple built-in S3 endpoint
- incusd: Switch minio S3 client for AWS SDK
- incusd/storage/s3: Derive AWS region from S3 endpoint URL
- gomod: Update dependencies
- incusd: Patch LINSTOR to set DrbdOptions/Disk/rs-discard-granularity
- incus/server/network/ovn/driver: Validate that networks external ips are not used by another network, forward or loadbalancer
- incusd/images: Add image server restriction check in image URL download path
- incusd/storage/bucket: Validate expected metadata on import
- incusd/storage/volume: Validate snapshot entries on import
- incusd/storage/instance: Properly check dependent volumes on import
- incusd/network/ovn: Fix TLS validation logic
- incusd/storage/instance: Fix bad snapshot index calculation
- incusd/storage/s3: Fix nil pointer dereference on truncated input
- incusd: Limit tarball YAML reads to 1MiB
- incusd: Fix nil pointer dereference in instance backup restore
- incusd: Use QuotaWriter for backup and ISO uploads
- api: Add server_shutdown_action extension
- incusd/cluster/config: Add core.shutdown_action
- doc: Update metadata
- incusd/evacuate: Extract evacuateStopInstance and evacuateMigrateInstance helpers
- incusd: Implement core.shutdown_action
- incus/cluster: Don't attempt to connect during join
- incus/image/copy: Add --reuse flag for --copy-aliases
- i18n: Update translation templates
- incus/server/network/ovn/driver: Fix duplicate external network ip check on network creation
- doc/metrics: Mention Loki requirement
- incusd: Add missing path parameters
- doc/rest-api: Refresh swagger YAML
- Makefile: Add help target and remove tags target
- tests: Use a 5MiB test file for buckets
- incus/cluster: Simplify logic
- api: instances_placement_scriptlet_rebalance
- shared/api/scriptlet: Add InstancePlacementReasonRebalance
- incusd/cluster: Run placement scriptlet during re-balancing
- doc/clustering: Add new scriptlet reason
- incusd/instance/qemu: Fix locking around VM reset
- incusd/device/nic: Set next-hop based on configured IP addresses
- tests: Adjust to work with next-hop
- incusd/instance/agent-loader: Remove some trailing whitespaces
- incus/storage_bucket/key: Fix incorrect list column description
- incus/launch: Add missing example description
- incus/config_template: Add missing example description
- incus/create: Add missing example description
- incus/network_acl: Add missing example description
- incus/network_address_set: Add missing example description
- incus/network_integration: Add missing example description
- incus/network_zone: Add missing example description
- incus/storage: Add missing example description
- i18n: Update translation templates
- incusd/device/disk: Auto-create missing volume sub-directories
- incusd/instance: Allow initial keys for sub-paths
- doc/devices/disk: Update to cover sub-path creation
- doc: Update config
- tests: Extend sub-path tests to cover directory creation
- incusd/instance/qemu: Don't emit shutdown lifecycle event during restart
- incusd/instance/qemu: Don't restart the VM on shutdown
- incusd/instance/console: Emit a single instance-console event on SPICE
- gomod: Update dependencies
- Makefile: Switch to new golangci-lint install script
- github/workflows/tests: Configure PPAs without apt-add-repository
- github/workflows/tests: Install mdl from rubygems instead of snap
- github/workflows/tests: Build cowsql and raft from source
- Rewrite Go import path to v7
- gomod: Update dependencies
Documentation¶
La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/
Installation¶
Incus ne fournit pas de paquet d’installation mais bien un tarball à chaque version. Vous trouverez ci-dessous différentes solutions pour mettre Incus en service.
Paquets Linux¶
Incus est disponible sur la plupart des distributions Linux courantes. Vous trouverez des instructions d’installation détaillées dans notre documentation.
https://linuxcontainers.org/incus/docs/main/installing/
Paquet Homebrew du client Incus¶
Le client Incus est disponible sur Homebrew pour Linux et macOS.
https://formulae.brew.sh/formula/incus
Paquet Chocolatey du client Incus¶
Le client Incus est disponible sur Chocolatey pour les utilisateurs de Windows.
https://community.chocolatey.org/packages/incus/7.0.0
Paquet Winget du client Incus¶
Le client Incus est aussi disponible sur Winget pour les utilisateurs de Windows.
https://winstall.app/apps/LinuxContainers.Incus
Migration depuis LXD¶
Un outil de migration, lxd-to-incus, permet une migration en place de LXD vers Incus.
Il a été testé avec des versions de LXD de la 4.0 LTS à la dernière version LXD 5.21.
Il permet une migration très rapide de LXD vers Incus, en vérifiant automatiquement à l’avance les conflits potentiels.
Pour plus d’informations, consultez : https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/
Support¶
Incus 7.0 LTS sera supporté pendant un total de 5 ans (jusqu’en juin 2029).
Durant les 2 premières années, de nouvelles versions mineures contenant des corrections de bugs, des mises à jour de sécurité et d’autres améliorations mineures seront publiées. Après cette période initiale de 2 ans (après la sortie d’Incus 8.0 LTS), Incus 7.0 LTS ne recevra plus que des mises à jour de sécurité pendant les 3 années restantes.
Cela correspond à ce que nous faisons pour nos autres projets (LXC et LXCFS) depuis 10 ans.
Le support communautaire est disponible sur : https://discuss.linuxcontainers.org
Un support commercial est disponible sur : https://zabbly.com/incus
Les bugs peuvent être signalés sur : https://github.com/lxc/incus/issues
