Retour à l’aperçu de l’actualité
Incus 6.20 est maintenant disponible¶
19 déc. 2025
Introduction¶
L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.20 !
C’est la dernière version de l’année 2025, et la durée de développement a été réduite afin de ne pas sortir une nouvelle version au milieu des vacances !
Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/
Nouvelles fonctionnalités¶
Une limitation ennuyeuse de notre implémentation des clusters LVM était que les instantanés ne fonctionnaient pas de manière sûre sur toutes les versions de LVM.
Les nouvelles versions de LVM ont apporté des restrictions sur la manière dont les volumes sont activés, nous empêchant de les monter sur deux serveurs à la fois, et ainsi d’effectuer des migrations à chaud.
Dans Incus 6.18, nous avions donc désactivé les instantanés pour tous les volumes en bloc stockés sur du LVM en cluster, afin d’avoir une expérience utilisateur cohérente et éviter des problèmes lors de la mise à jour des systèmes hôtes.
Nous avons à présent implémenté une nouvelle solution pour les instantanés sur LVM en cluster. Elle utilise le format QCOW2 pour les volumes logiques au lieu du format brut. Cela nous permet de gérer manuellement les instantanés et de composer leurs volumes logiques LVM pour retrouver le bon état de la VM.
Le nouveau format est celui par défaut pour les nouvelles VM. Les VM existantes resteront sur un format brut et ne supporteront donc toujours pas les instantanés. Il est possible de les convertir en QCOW2 en les déplaçant sur un autre pool de stockage puis en les remettant sur le pool initial.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_lvm/
Nouvelle commande incus cluster join¶
Cette nouvelle commande est née d’un besoin dans IncusOS, dans lequel les interactions doivent être faites depuis l’outil en ligne de commande ou l’interface web. Bien qu’il était possible d’initialiser un nouveau cluster avec incus cluster enable, l’ajout de serveurs IncusOS additionnels était assez difficile.
Pour simplifier la tâche, nous avons ajouté une nouvelle commande incus cluster join, qui prend en arguments le cluster existant et le serveur à y rajouter. La commande pose ensuite des questions comme avec incus admin init, puis ajoute le serveur au cluster.
stgraber@castiana:~$ incus cluster join incus01: incus02:
What IP address or DNS name should be used to reach this server? [default=10.244.64.185]:·
What member name should be used to identify this server in the cluster? [default=eb7bbd3f-d385-4a06-919f-d66a7c52b058]: incus02
All existing data is lost when joining a cluster, continue? (yes/no) [default=no] yes
Choose "source" property for storage pool "local": local/incus
Choose "zfs.pool_name" property for storage pool "local": local/incus
stgraber@castiana:~$ incus cluster list incus01:
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| NAME | URL | ROLES | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION | STATUS | MESSAGE |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| incus01 | https://10.244.64.183:8443 | database-leader | x86_64 | default | | ONLINE | Fully operational |
| | | database | | | | | |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| incus02 | https://10.244.64.185:8443 | database-standby | x86_64 | default | | ONLINE | Fully operational |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
stgraber@castiana:~$ incus cluster join incus01: incus03:
What IP address or DNS name should be used to reach this server? [default=10.244.64.60]:·
What member name should be used to identify this server in the cluster? [default=ef50a39f-289d-46c4-989f-9466f8f8ae58]: incus03
All existing data is lost when joining a cluster, continue? (yes/no) [default=no] yes
Choose "source" property for storage pool "local": local/incus
Choose "zfs.pool_name" property for storage pool "local": local/incus
stgraber@castiana:~$ incus cluster list incus01:
+---------+----------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| NAME | URL | ROLES | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION | STATUS | MESSAGE |
+---------+----------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus01 | https://10.244.64.183:8443 | database-leader | x86_64 | default | | ONLINE | Fully operational |
| | | database | | | | | |
+---------+----------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus02 | https://10.244.64.185:8443 | database | x86_64 | default | | ONLINE | Fully operational |
+---------+----------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus03 | https://10.244.64.60:8443 | database | x86_64 | default | | ONLINE | Fully operational |
+---------+----------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
stgraber@castiana:~$
Fichier de configuration pour l’agent¶
Il est désormais possible de restreindre les actions que l’agent Incus peut effectuer. Les restrictions sont configurées dans un fichier qui liste les fonctionnalités activées. Si le fichier existe et que cette liste y est présente, toutes les fonctionnalités non explicitement activées sont désactivées.
Documentation : https://linuxcontainers.org/incus/docs/main/howto/instances_create/#configure-the-incus-agent
Enregistrements DNS inverses dans les réseaux OVN¶
Il s’agit d’un ajout modeste, mais potentiellement très utile. Toutes les instances sur un réseau OVN se voient désormais générer à la fois des enregistrements directs et inverses pour leurs adresses.
stgraber@castiana:~ (incus:dev-cluster/default)$ incus list c
+------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION |
+------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+
| c1 | RUNNING | 10.20.162.2 (eth0) | fd42:e9ac:c3e5:65f:1266:6aff:fef6:b217 (eth0) | CONTAINER | 0 | incus01 |
+------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+
| c2 | RUNNING | 10.20.162.3 (eth0) | fd42:e9ac:c3e5:65f:1266:6aff:fea4:5936 (eth0) | CONTAINER | 0 | incus02 |
+------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+
stgraber@castiana:~ (incus:dev-cluster/default)$ incus exec c1 bash
root@c1:~# host c2.incus
c2.incus has address 10.20.162.3
c2.incus has IPv6 address fd42:e9ac:c3e5:65f:1266:6aff:fea4:5936
Host c2.incus not found: 3(NXDOMAIN)
Host c2.incus not found: 3(NXDOMAIN)
root@c1:~# host 10.20.162.3
3.162.20.10.in-addr.arpa domain name pointer c2.incus.
root@c1:~# host fd42:e9ac:c3e5:65f:1266:6aff:fea4:5936
6.3.9.5.4.a.e.f.f.f.a.6.6.6.2.1.f.5.6.0.5.e.3.c.c.a.9.e.2.4.d.f.ip6.arpa domain name pointer c2.incus.
root@c1:~#
Liste complète des changements¶
Voici une liste complète de tous les changements apportés par cette version :
Liste complète des commits
- Translated using Weblate (Portuguese)
- agent-loader/install-linux.sh Fix SELinux issue with agent run path
- incusd/device/nic: Fix link to instances-limit-units
- doc: fix instances-limit-units reference links
- Added default environment variables for the Windows agent.
- instance/drivers/driver_common: Fix cat order bug in selinuxContext()
- Added translation using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- incusd/instance/lxc: Generate a stable MAC for managed physical bridged networks
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Swedish)
- Added new Windows environment variable 'SystemDrive'
- incus/create: Allow reading Ephemeral flag from stdin
- incusd/device/nic_physical: Fix VLAN for VMs
- Translated using Weblate (Swedish)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- incusd/network/bridge: Don't listen for incoming RAs
- incusd/network/zone: Allow trailing dot in NS records
- incusd/device/physical: Allow live-migration of bridged physical NICs
- shared/tls: Move ACME challenge to shared/tls
- internal/server/acme: Update certificate renewal call
- incusd/instance/qemu: Don't attempt agent connections on frozen VMs
- incusd/instance/qemu: Rework state reporting
- Translated using Weblate (Chinese (Simplified Han script))
- incusd/operations: Return a copy of the metadata to avoid concurrent access
- Attempt to make the Incus Agent on Windows better integrated.
- incusd/instance/qemu: Fix regression in reported state
- Translated using Weblate (Japanese)
- gomod: Update dependencies
- gomod: Get latest umoci
- build(deps): bump actions/upload-artifact from 5 to 6
- incus/io: #2636 fix linter complaints in
internal/io - generate-database: Allow overwriting the target column for a join
- incusd/storage_volumes: Fix state handling in getVolumeFull
- internal/jmap: Refactor Map methods and add comprehensive tests
- shared/tls: implement Happy Eyeballs (RFC 8305) in RFC3493Dialer
- incusd/devices/tpm: Make incompatible with live-migration
- incus/util: #2636 fix linter complaints in
internal/filter - incus/network_load_balancer: Fix typo in cmd info description
- i18n: Update translation templates
- api: Add storage_lvmcluster_qcow2 extension
- incusd/storage/drivers: Add utils for qcow2 manipulation
- incusd/instance/drivers: Add qcow2 block device utility functions
- incusd/storage/drivers: Add 'block.type' config and additional validation checks
- incusd/storage: Implement the creation of qcow2 formatted volumes when on lvmcluster
- incusd/instance/drivers/qmp: Add QueryNamedBlockNodes and ChangeBackingFile
- incusd/storage/drivers: Add support for activating and deactivating qcow2-formatted volumes
- incusd/storage/drivers: Add support for the qcow2 config filesystem snapshots
- incusd/storage/drivers: Add support for creating and renaming qcow2 volume snapshots
- incusd/storage/drivers: Add GetQcow2BackingFilePath and Qcow2DeletionCleanup
- incusd/device/config: Add 'BackingPath' to track backing chain for qcow2 volumes
- incusd/storage: Add 'BackingPath' to track backing chain for qcow2 volumes
- incusd/storage: Add support for creating, renaming, restoring and deleting qcow2 instance volumes
- incusd/instance/drivers: Add support for running instances from a backing chain
- incusd/instance: Add support for creating/deleting qcow2 snapshots while instance is running
- incusd/storage/drivers: Show config filesystem only for FS volumes
- incusd/storage/lvmcluster: Fix activation for containers
- incusd/storage/lvm: Fix handling of stripe size config
- incusd/storage/lvmcluster: Set block.filesystem to btrfs
- incusd/storage: Don't add new volume options on snapshot
- incusd/storage/drivers/types: Fix gofumpt
- doc: Update metadata
- incusd/cluster: Add missing project handling to ConnectIfVolumeIsRemote
- incusd/storage_volumes: Handle remote volumes in recursion=2
- incusd/storage/lvm: Fix incorrect activation mode
- incus/storage: Take project into account during qcow2 operation
- shared/api: add comprehensive unit tests for URL builder
- Translated using Weblate (Portuguese)
- incus/admin/init: Prepare code for adding initialized server to cluster
- incus/cluster: Add 'cluster join' command
- i18n: Update translation templates
- incus-agent: Code cleanup
- incus-agent: Add OS config path
- incus-agent: Add system configuration support
- incus-agent: Add feature checks
- doc/instances: Cover incus-agent configuration
- doc/bpf-tokens: Fix markdown
- gomod: Update dependencies
- incus/file: Improve error messages
- i18n: Update translation templates
- doc/network/firewall: Remove warning against IP forward and Docker
- incusd/storage: Generate a clean backup.yaml after a backup is generated
- incusd/api_buckets: Provide fastpath for miniod access
- incusd: Move ReverseDNS to util
- incusd/network/ovn: Set PTR records
- doc/openfga: Clarify required config keys
- incusd/storage/linstor: Disable volume copie with snapshots
- tests: Update tests for Linstor limitation
Documentation¶
La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/
Paquets¶
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.
Installation du serveur Incus sous 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/6.20.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
Support¶
Les versions de fonctionnalité d’Incus ne sont supportées que jusqu’à la sortie de la suivante. Les personnes souhaitant un support plus long et des changements moins fréquents devraient plutôt envisager d’utiliser Incus 6.0 LTS.
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
