ニュース¶
Incus 6.9 リリースのお知らせ¶
2025/01/24
はじめに ¶
Happy new year!
Incus チームは、Incus 6.9 のリリースのアナウンスができてうれしいです!
休暇であったことを考えると、このリリースは少し軽めのリリースですが、通常の多くのバグ修正に加えて、優れた機能がいくつか追加されています。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
ブリッジネットワーク上のインスタンスネットワーク ACL ¶
システムがファイアウォールに nft
を使用している場合は(これは incus info
で調べられます)、ネットワーク ACL を、マネージドネットワークブリッジ上で実行されているインスタンスに直接適用できるようになりました。
この機能により、同じブリッジネットワーク上で実行されているさまざまなインスタンスに、個別の内向き・外向きのファイアウォールルールを適用することで、ネットワークのマイクロセグメンテーション化ができるようになりました。
ネットワーク ACL は、incus network acl
を使って作成と管理を行い、security.acls
設定キーを使用して、関連する NIC インターフェースに適用できます。
ACL ドキュメント : https://linuxcontainers.org/incus/docs/main/howto/network_acls/
ブリッジドキュメント : https://linuxcontainers.org/incus/docs/main/reference/network_bridge/
NIC ドキュメント: https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#nic-bridged
QEMU スクリプトレットの機能強化 ¶
このリリースで、QEMU スクリプトレットがさらに改善されました。
すべてのスクリプトレット呼び出しで完全なインスタンス構造が提供され、インスタンス設定、プロファイルのリストなどにアクセスできるようになりました。
QEMU が起動する前に実行される、新しい config
フックも追加されました。
このフックは QMP コマンドを送ることには使えませんが、新しい関数を呼び出して、QEMU 設定ファイルまたはコマンドライン引数を変更できます:
get_qemu_cmdline
set_qemu_cmdline
get_qemu_conf
set_qemu_conf
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/instance_options/#advanced-use
VM のメモリーダンプ¶
新たに incus debug memory-dump
コマンドと、それに対応する API が追加され、仮想マシンのメモリーダンプを簡単に取得できるようになりました。
Incus VM には、Windows 仮想マシンがメモリーデバッグ情報を提供できるようにするための必要なデバイスが含まれるようになりました。これにより、Windows デバッガーで読み込めるメモリーダンプが可能になります。
stgraber@dakara:~$ incus launch images:debian/12 v1 --vm Launching v1 stgraber@dakara:~$ incus debug dump-memory v1 debug --format=elf stgraber@dakara:~$ file debug debug: ELF 64-bit LSB core file, x86-64, version 1 (SYSV), SVR4-style
OVM ネットワーク状態のアップリンクアドレス ¶
アップリンクの IPv4、IPv6 アドレスを incus network info
コマンドから直接得られるようになりました。
stgraber@athos:~# incus network info default Name: default MAC address: 00:16:3e:8d:51:b6 MTU: 1500 State: up Type: broadcast IP addresses: inet 10.22.45.1/24 (link) inet6 2602:fc62:b:8006::1/64 (link) Network usage: Bytes received: 0B Bytes sent: 0B Packets received: 0 Packets sent: 0 OVN: Chassis: delmak Logical router: incus-net13-lr IPv4 uplink address: 172.17.200.106 IPv6 uplink address: 2602:fc62:b:200::106
サーバー構成ファイルからのストレージボリュームの作成 ¶
事前に与えるサーバー構成ファイル(preseed file)から直接、初期ストレージボリュームを定義できるようになりました。
この機能は、構成ファイルの一部でもあるプロファイルによって使用される共有ボリュームを設定する場合や、Incus イメージやバックアップストレージが使うボリュームを定義する場合に便利です。
ドキュメント : https://linuxcontainers.org/incus/docs/main/howto/initialize/#configuration-format
create
コマンドでの説明の設定 ¶
すべての create
コマンドに --description
オプションが追加され、オブジェクトの設定(description)フィールドを直接設定できるようになりました。
stgraber@dakara:~$ incus profile create foo --description "Example profile" Profile foo created stgraber@dakara:~$ incus profile list +---------+-----------------------+---------+ | NAME | DESCRIPTION | USED BY | +---------+-----------------------+---------+ | default | Default Incus profile | 6 | +---------+-----------------------+---------+ | foo | Example profile | 0 | +---------+-----------------------+---------+
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- Translated using Weblate (Japanese)
- incusd/scriptlet: Refactor load package
- incusd/scriptlet: Add support for checking optional functions and improve error messages
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- incusd/storage/drivers: Force blkdiscard and ignore errors
- incusd/auth: fix FGA online data race
- incusd/storage/drivers: Log on blkdiscard failure
- incusd/storage: Add storage volume db entries when storage is changed
- client: Propagate HTTP TLS dialer to websocket
- api: network_ovn_state_addresses
- shared/api: Expand OVN state with uplink addresses
- doc/rest-api: Refresh swagger YAML
- internal/server: Add uplink addresses to ovn state
- incus/network/info: Add uplink addresses for ovn network
- i18n: Update translation templates
- incus: Add --description flag to create commands
- i18n: Update translation templates
- tests: Add tests for --description flag on create commands
- incusd/scriptlet: Fix qemu_hook required argument
- doc: Fix qemu_hook required argument
- Add simple shell.nix
- client: Add proxy host to skopoe calls
- incusd/cluster: Add missing error handling
- incusd/cluster: Clarify error on DB failure
- incusd/instance/qemu: Fix QMP arguments typing
- incusd/instance/qemu: QEMU device naming consistency
- Encode mc alias for storage buckets to match allowed characters
- doc: Contributing section restructuring
- incusd/network/ovn: Allow creation of OVN network with no uplink
- incusd/network/ovn: Handle missing logical router in state
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- lxd-to-incus: Clear volatile.uuid from instances
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Added translation using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- github: Bump most workflows to 24.04
- github: Split testsuite to separate action
- github: Add aarch64 tests
- tests: Skip nftables test on old kernels
- Added translation using Weblate (Tamil)
- shared/util: Add IsNoneOrEmpty
- incusd/network/bridge: Tweak dnsmasq startup condition
- shared/cgo: Add finalize_userns
- shared/cgo: Export in_same_namespace
- incusd/main_forkproxy: Join all namespaces at once
- incusd/main_forkfile: Join all namespaces at once
- internal/linux: Add ClearBlock
- incusd/storage: Switch to linux.ClearBlock
- internal/linux/discard: Remove leftover debugging
- internal/linux/discard: Use marker length for buffer
- internal/linux/discard: Add support for offset
- incusd/storage/generic: Pass offset to ClearBlock
- incusd/storage/lvm: Discard the new blocks on resize
- incusd/storage/lvm: Run ClearBlock on all new thick block volumes
- cmd: support header line for csv output
- cmd: update --format flag description
- i18n: Update translation templates
- cmd: add validation for --format flag
- doc: fix ref for vendor-data
- devcontainer: initial version
- Makefile: add target for unit tests as root
- Makefile: add missing installations for gotags and openfga
- incusd/network/ovn: Skip remote peers when iterating peer networks
- incusd/storage/lvm: Move resize clearing to SetVolumeQuota
- incusd/storage: Make use of qemu-img's target-is-zero option
- incusd/device/disk: Remove virtfs-proxy-helper dependency
- tests: Remove 9p proxy driver
- incusd/instance: Split startupHook function
- incusd/main_cluster: Tweak to have help refer to correct command name
- incusd/instance: Pass an *api.Instance to the scriptlet program
- incusd/scriptlet/qemu: Add instance parameter to the QEMU scriptlet
- incusd/instance: Rewire QEMU config generation
- incusd/instance: Make QEMU config types public
- incusd/scriptlet/qemu: Fix Starlark function name
- incusd/scriptlet/qemu: Prevent calling QMP functions at config stage
- incusd/device/disk: Better handle partitions
- Fixed link to point to correct manpage.
- lxd-to-incus: Be more lenient on database changes
- incusd/storage/drivers: Handle 4k sector sizes
- incusd/dnsmasq: Don't put the project name in the DNS record
- incusd/device/disk: disable 9p if idmap requested
- incusd/scriptlet/qemu: Add QEMU configuration getters
- incusd/scriptlet/qemu: Add QEMU configuration setters
- api: qemu_scriptlet_config
- doc/ref/instance_options: Update QEMU scriptlet documentation
- incusd/instance: Update unit test
- incusd/instance/drivers: Introduce ReloadDevice
- api: network_bridge_acl_devices
- incusd/device/nic: ACL support for bridge NIC device
- incusd/server/firewall: ACL for bridge NIC device
- doc/device/nic: Add ACL support to bridge NICs
- doc/network_acl: Document usage with bridged NICs
- tests: nftable test with ACL rules
- github: Switch to Github's hosted arm64 runners
- doc: typo
- doc: Updated storage_zfs.md
- incusd/device/disk: Update correct mount options
- incus/file/pull: Port to SFTP
- i18n: Update translation templates
- api: instance_debug_memory
- incusd/instances/qemu: Add vmcoreinfo device
- incusd/instances/qemu: Add dump-guset-memory implementation for instance memory debugging
- incusd: Add GET /1.0/instances/NAME/debug/memory
- doc/rest-api: Refresh swagger YAML
- client: Add API implementation for instance memory debugging
- incus: Add "debug dump-memory" command
- i18n: Update translation templates
- doc: Force white background for swagger API
- gomod: Update dependencies
- api: init_preseed_storage_volumes
- client: Add storage volume initialization
- shared/api: Add storage volume initialization
- doc: Include storage initialization example
- doc/rest-api: Refresh swagger YAML
- tests: Include storage volume to init test
- incusd/instance/qemu: Fix device_id warning on 9.2.x
- incus: Fix example description for debug dump-memory command
- i18n: Update translation templates
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.9.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 6.0.3 LTS リリースのお知らせ¶
2024/12/19
はじめに ¶
Incus チームは、Incus 6.0.3 のリリースのアナウンスができてうれしいです!
このリリースは、Incus 6.0 に対する 3 度目のバグ修正リリースです。Incus 6.0 は 2029 年 6 月までサポートされます。
変更点 ¶
いつもどおり、このバグ修正リリースは、安定性とセキュリティー強化にフォーカスを当てています。
データのマイグレーションやデータベースの変更を必要とせず、ユーザーが予期しない動きの変化に直面するようなことにはならない、マイナーな改善もバックポートされています。
このような改良の数は、LTS ブランチ内では時間の経過とともに減少するでしょう。
このリリースのハイライトは次のとおりです:
- 仮想マシンの OS 情報(
incus info
) - 仮想マシンのコンソールヒストリー(
incus console --show-log
) - Incus から、直接クラスター化された LVM プールを作成する機能
incus-migrate
の QCOW2 と VMDK サポート- 設定可能な macvlan モード(
bridge
、vepa
、passthru
、private
) - ロードバランサーのヘルス情報(
incus network load-balancer info
) - OVN ネットワークの外部インターフェース(
bridge.external_interfaces
のサポート) - クラスター退避・リストアの並列化(多数の CPU を持つシステム上)
- Web インターフェースにすばやくアクセスするための
incus webui
の導入 - 自動クラスターリバランシング
- 部分的なインスタンスとボリュームの更新(
incus copy --refresh-exclude-older --refresh
) incus top
のカラム、フォーマット、更新頻度の設定- OVN ネットワーク上での DHCP アドレス範囲のサポート(
ipv4.dhcp.ranges
) - 管理物理ネットワークのバッキングインターフェースの変更のサポート
- 拡張 QEMU スクリプトレット(追加関数)
- QEMU QMP トラフィックの新しいログファイル(
qemu.qmp.log
): - 配置スクリプトレット内の新しい
get_instances_count
関数 incus admin sql
の--format
のサポート- 仮想マシンのストレージのライブマイグレーション
- OpenFGA の代替としての新しい認証スクリプトレット
- コンソールのスクリーンショットを撮るための API
- カスタムストレージボリュームの設定可能な初期オーナー(
initial.uid
、initial.gid
、initial.mode
) - インポート時のイメージエイリアスの再利用(
incus image import --reuse --alias
) - 新しい
incus-simplestreams prune
コマンド - コンソールアクセスのロック(オーバーライドするには
incus console --force
を使用)
コミットのすべてのリストは次のとおりです:
すべてのChangeLogを見る
- incusd/network/ovn: Properly handle lack of a protocol on LB checker
- doc/installing: Add link to Arch Wiki for Incus
- internal/server/instance/drivers: Cleanup spice socket when VM stops
- internal/server/instance/drivers: Switch default backend for QEMU console to ringbuf
- incus/console: Add completion
- internal/server/instance/drivers/qmp: Add commands for reading a ringbuf and swaping backends for chardevs
- internal/server/instance/drivers: Implement ConsoleLog() for qemu driver
- internal/server/instance/drivers: Add functions to switch console's backend
- cmd/incusd: Allow VMs to pull console history similar to containers
- cmd: Properly handle
--project
in error messages - incusd/project: Don't fail project deletion on authorizer
- incusd/project: Don't fail project rename on authorizer
- incus-user: Handle existing network
- incusd/networks: Return HTTP Conflict on existing network
- incusd/networks: Apply project restrictions to list of network names
- incusd/auth/tls: Allow access to inherited resources
- instance/config: Add @startup to documentation
- doc: Update metadata
- shared/validate: Better validate simple CPU limits
- incusd/operations: Fix operation cancelation
- incusd/storage_volumes: Handle rename of volumes with sub-paths
- incusd/storage/utils: Only show actual errors in growFileSystem
- internal/server/instance/drivers: Don't return an error if console log file doesn't exist
- incusd/instance/qemu: Properly plumb I/O limits
- incusd/apparmor: Allow all mounts in unprivileged containers
- cleanup: Replace use of os.IsNotExist(err) with errors.Is(err, fs.ErrNotExist)
- incusd/network: Allow to use
dns.search
when only IPv4 is enabled - incusd/apparmor: Remove nosymfollow check (unused)
- doc: add notes for Nvidia gpu usage when installing in OpenSUSE
- api: instances_state_os_info
- shared/api: Add OSInfo to InstanceState
- doc/rest-api: Refresh swagger YAML
- cmd/incus-agent: Populate OS information when returning instance state
- cmd/incus: Print OS info from state, if available
- tests: Don't over-provision test volume
- cmd/incus-migrate: Don't copy converted VM image
- incusd/instance_console: Check result of type assertion
- incusd/images: Fix image access through secret
- doc: add prerequisites section for building documentation
- api: network_load_balancer_state
- shared/api: Add NetworkLoadBalancerState
- incusd/network/ovn/sb: Add GetServiceHealth
- incusd/network: Add LoadBalancerState
- incusd/network/load-balancer: Add API for state
- doc/rest-api: Refresh swagger YAML
- client: Add GetNetworkLoadBalancerState
- incus/network_load_balancer: Add info command
- incusd: Only emit image-created if an image was actually created
- incusd/instances: Call placement scriptlet when target specified
- internal/server/instance/drivers/qmp: Ensure that the device passed to RingbufRead() is a ring buffer
- internal/server/instance/drivers: Don't return an error if VM's console device isn't a ringbuf
- internal/server/instance/drivers: Don't conflict with live migration operation
- incus/alias: Handle quoted values
- incus/alias: Stable sorting of alias names
- incusd/instance/qemu: Fix issues with old NVRAM
- incusd/device/nic: Add configuration for macvlan mode
- doc/devices/nic: Add mode for macvlan devices
- api: instance_nic_macvlan_mode
- alpine linux enable edge repositories
- cmd/incusd: gateway parameter wasn't actually used anywhere
- cmd/incusd: Run cluster evacuate and restore in parallel
- formatting: Move goroutines to their own functions
- internal/instance: Allows the VM's limits.memory configuration to be set to a percentage value
- incusd/network/ovn: Fix CIDR size check
- doc: Add uncomment to the word list
- incus/file/delete: Use SFTP client instead of file API
- incus/file/delete: Add --force flag
- doc/network/resolved: Fix systemd unit
- internal/instance: Fix doc for boot.host_shutdown_action
- doc: Update metadata
- incus/file/delete: Cache the SFTP client
- shared/subprocess: Add TryRunCommandAttemptsDuration() which allows the caller to specify the number of attempts and duration between each attempt
- internal/server/storage/drivers: Add support for creating shared VGs
- doc: Incus can now create a shared VG directly
- api: storage_lvm_cluster_create
- incusd/network/ovn: Allow adding external interfaces to an OVN network
- doc/network/ovn: Add description for bridge.external_interfaces parameter
- api: network_ovn_external_interfaces
- incusd/network: De-duplicate external interfaces validation
- incusd/instance/qemu: Simplify console switching
- incusd/instance/qemu: Handle existing console connections
- incusd/instance/qemu: Fix shutdown race
- doc/devices/proxy: Fix incorrect bind= example
- incusd/network/bridge: Bring up external interfaces
- i18n: Update translation templates
- doc: Correct name of macvlan modes
- incusd/device/nic: Correct name of macvlan modes
- fix: fix slice init length
- internal/instance: fix live update VM's limits.memory configuration when use a percentage value
- incus-simplestreams list -f json: output field names. fixes lxc#1308
- incus-agent: Add timeout for DNS query
- incusd/db/profiles: Support config caching
- incusd: Update calls to profile ToAPI
- incusd/cluster/profiles: Fix import shadowing
- incusd/instance/qemu: Don't fail on console retrival issue
- incusd/network: Make IsUsed configurable
- incusd/network: Update for IsUsed argument
- incusd/network/physical: Fix typo
- incusd/network/physical: Handle changes in parent value
- incus: Fix display of current project in projects list
- incus/admin/sql: Add support for
--format
- incusd/instance/common: Cleanup volatile on device add failure
- incusd/internal/server/instance/drivers: Add support for Chimera Linux edk2 pkg file names
- shared: Move internal "revert" library into shared
- incusd/network/bgp: Only advertise networks with BGP configuration
- incusd/cluster: Fix resource data caching
- incusd/cluster: Actually use YAML for resources cache
- shared: Update import path for "revert" library
- incusd/instance/lxc: Simplify idmapSize
- incusd/instance/lxc: Simplify findIdmap
- incusd/isntance/lxc: Respect restrict.idmap.size on un-isolated containers
- incusd/instance/lxc: Refactor findIdmap
- incusd/instance/lxc: Fix off by one idmap check
- shared: Move internal "ask" library into shared
- shared: Update import path for "ask" library
- shared: Add godoc comment for NewAsker
- doc/network/resolved: Add disabling DNSSEC and DNSOverTLS
- incusd/device/nic/bridged: Handle invalid configuration
- doc: Add Kubernetes to wordlist
- incusd/storage_volumes_snapshots: Respect pattern on manual creation
- tests: Add test for custom storage volume snapshots pattern
- doc/installing: Update for Chimera Linux
- incus/top: Fix usage
- shared/util: Add OpenBrowser
- incus/remote/proxy: Add token authentication
- incusd/api: Only expose UI if index.html exists
- incus: Add webui command
- incusd/scriptlet: Make set_target fail with invalid members
- tests: Update for scriptlet placement error handling
- incusd/instance/qmp: Make Run public
- incusd/scriptlet: Add useful QMP functions
- doc/ref/instance_options: Mention QEMU raw QMP commands
- incusd/network/ovn: Add support to ipv4.dhcp.ranges
- api: instances_scriptlet_get_instances_count
- incusd/scriptlet/instances: Fix error messages
- incusd/db/instances: Add GetInstancesCount
- incusd/scriptlet/instances: Add get_instances_count
- doc/cluster/placement: Add get_instances_count
- incusd/db/node: Sort members in GetCandidateMembers
- incusd/instances: Rely on candidateMembers being sorted
- incusd/db/node: Remove unused GetNodeWithLeastInstances
- incusd/db/node: Update tests to use GetCandidateMembers
- internal/server: Log QMP interaction to a file
- incusd/instance/qemu: Log QEMU command line
- tests: Update instance placement tests for new ordering
- incusd/instance_logs: Update log file list
- incusd/network/ovn/sb: Only monitor required tables
- incusd/network/ovn: Implement OVN SB event handlers
- incusd/instance/qmp: Handle disabling log file
- incusd/instance/qemu: Don't use QMP log for feature checks
- incusd/instance/lxc: Fix LXCFS per-instance path
- doc/idmap: Clarify subuid/subgid configuration
- incusd/instance/qmp: Fix logging with no log file
- client: Add a GetOIDCTokens() method
- cmd/project: Add get-current to show current project
- tests: Add get-current to show current project
- incus/file/create: Use SFTP client instead of file API
- internal/instance: Allow 0 as value to limits.cpu.nodes
- internal/linux: Add NetlinkInterfaces
- incus-agent: Use NetlinkInterfaces
- incus/top: Add additional flags
- incus/monitor: Include location in cluster logging
- incusd/instance: Add ResourceUsage
- incusd/scriptlet/instance: Use ResourceUsage
- api: cluster_rebalance
- incusd/cluster/config: Add cluster re-balance configuration keys
- incusd/instance/config: Add volatile re-balance configuration key
- doc: Update configs
- incusd: Add cluster rebalance task
- incusd/internal: Add rebalance endpoint
- doc/cluster: Add mention of re-balancing
- api: custom_volume_refresh_exclude_older_snapshots
- shared/api: Add RefreshExcludeOlder to InstanceSource and StorageVolumeSource
- client: Add RefreshExcludeOlder flag to StoragePoolVolumeCopyArgs and InstanceCopyArgs
- incus: Adding refresh-exclude-older flag to 'copy' and 'storage volume copy'
- incusd/migration: Add refresh-exclude-older flag
- internal: Adding refresh-exclude-older flag implementation
- doc/rest-api: Refresh swagger YAML
- incus/top: Fix gofmt
- incusd/instance/drivers: Make Export return a pointer to metadata
- incusd/images: Update for changes to Export
- incusd/instances/publish: Fix base metadata
- incusd/bgp: Don't add duplicates
- incusd/network/bgp: Only skip BGP if unconfigured and not on OVN
- incusd/network: Move loadBalancerBGPSetupPrefixes to OVN driver
- incusd/network/ovn/sb: Add CheckLoadBalancerOnline
- incusd/network/ovn/nb: Add GetLoadBalancer and GetLoadBalancersByStatusUpdate
- incusd/network/ovn: Add load-balancer health event handler
- incusd/network/ovn: Don't advertise offline load-balancers on startup
- shared/subprocess: Allow overriding Cwd
- incusd/device/tpm: Fix handling of long instance names
- incusd/instance/qemu: Don't take over operations on console retrieval
- incusd/instance_post: Provide target project to relocation scriptlet
- incusd/cluster/request: Add new internal user-agent
- incusd/instances_post: Don't re-run placement on internal requests
- incusd/api: Handle new user agent
- incusd/instance_post: Pass in internal user agent during relocation
- Consume websocket pings for stderr
- incus-simplestreams: Add prune command
- internal/instance: Fix validation of volatile.cpu.nodes
- shared/util: Add a function to clone maps
- Use
util.CloneMap
where appropriate - golangci: Enable goimports
- global: Initial goimports run
- incusd: Fix duplicate imports
- incusd: Fix import ordering
- instance/config: Mark user keys as live updatable
- doc: Update configs
- Fix incorrect Vars file mapping in edk2 driver
- incusd/storage/zfs: Fix deletion of unavailable pools
- zfs: load keys for encrypted datasets during pool import
- tests: zfs: add native zfs encryption tests
- incusd/instance: Lock image access
- incus/image: Make use of server-side alias handling
- client: Fix image aliases in push mode
- client: Fix image aliases in relay mode
- incusd/cluster: Validate address on join too
- incusd/network: Remove duplicated logic
- incusd/util: Cover DNS and wildcard coverage
- incusd/storage: Add initial.* config options for storage volume
- incusd/storage/drivers: Add ability to set the initial owner of a custom volume
- tests: Add test for setting initial owner of a cutom volume
- api: Add storage_initial_owner extension
- doc/reference: Add initial.* config keys
- shared/cliconfig: Improve configuration loading
- incus: Simplify configuration loading
- incus: Add aliases completion
- incusd/storage/drivers/lvm: Remove metadata info from space usage calculation
- incus/migration: Add StoragePool to VolumeTargetArgs and StorageMove to VolumeSourceArgs
- incus/instance: Add StoragePool to MigrateArgs
- incus/drivers: Add support for local live-migration between storage pools
- incusd: Add support for local live-migration between storage pools
- api: Add storage_live_migration extension
- golangci: Add local prefixes for goimports
- client: invalidate simple streams cache
- incusd/instances_post: Fix cluster internal migrations
- incusd/instances_post: Only update pool in DB if pool is expected to change
- incusd/instances_post: Account for profiles when overriding pool in DB
- incus/image: Add reuse flag
- incus/publish: Use common helper function deleteImagesByAliases
- tests: Add a reuse flag test for the 'incus image import'
- incusd/instance/qemu: Set instance path ownership on startup
- api: instance_console_screenshot
- incusd/instance/qmp: Add Screendump command
- incusd/response: Allow overrriding Content-Type in FileResponse
- incusd/instance: Add ConsoleScreenshot to VM interface
- incusd/instance/qemu: Implement ConsoleScreenshot
- incusd/instance_console: Add screenshot support to console API
- doc/rest-api: Refresh swagger YAML
- incusd/task: Fix wait group logic (more entries than running tasks)
- incusd/instance: Add ETag function
- incusd/instance/qemu: Fix random ordering in ETag
- incusd/instance/lxc: Fix random ordering in ETag
- incusd: Use new ETag instance function
- api: image_import_alias
- client: Set X-Incus-aliases on image imports
- incusd/image: Allow passing alias list through X-Incus-aliases
- doc/rest-api: Refresh swagger YAML
- incusd/image: Fix context for alias add
- incusd/image: Handle all alias cases
- Makefile: Use fga for model conversion
- incusd/auth: Introduce EntitlementCanViewSensitive
- incusd/api_10: Use EntitlementCanViewSensitive
- incusd/auth/openfga: Introduce server-wide read-only access
- incusd/auth/openfga: Rebuild model
- incusd/auth/openfga: Migrate public permissions
- incusd/auth: Implement ApplyPatch
- incusd/auth/fga: Change model refresh logic to rely on patches
- incusd/patches: Add auth patch logic
- incusd/patches: Skip patches until their assigned stage
- doc/authorization: Remove outdated OpenFGA model description
- tests: Tweak openfga test
- incusd/migrate: Set CreationDate during custom volume snapshot copy with refresh
- incusd/storage: Add CreatedAt during custom volume copy with refresh
- tests: Update copy with refresh test
- doc/instance/properties: Add missing instance properties
- incusd/daemon_storage: Ensure corect symlinks for images/backups
- incusd/storage/lvm: Handle newer LVM
- doc/sphinx: Upgrade MyST
- doc/manpage: Tweak manpage synopsis rendering
- incusd/storage/lvm: Require 512-bytes physical block size for VM images
- incus: Improve instance and remote names completion
- incusd: Fill ExpiryDate and remove LastUsedDate in volumeSnapshotToProtobuf
- incusd/device/tpm: Wait for swtpm to be ready
- incus: Improve completion for
file push
andfile pull
- incusd/auth/tls: Restrict config access to non-admin
- incusd/storage: Handle default disk size in GetInstanceUsage
- incus: Improve completion for
file create
- incus: Improve completion for
file delete
- incus: Improve completion for
file edit
- incus: Improve completion for
file mount
- incus: Fix completion for
profile copy
- doc/installing: Update Fedora instructions
- incus: Add a function to complete image fingerprints
- incus: Add completion for
image alias
subcommands - incusd/daemon: Skip non-PKI issued trusted certificates when in PKI mode
- incusd/cluster: Update tests for change to trustedCerts
- tests: Validate all non-PKI certs are blocked in PKI mode
- incus: Fix completion for
image alias create
- doc/network_forwards: Split configuration into own table
- util: Improve readability with early return
- incusd/db: Improve readability with eraly return
- incus/top: Ignore CPU idle time
- Makefile: Bump minimum to 1.22.7
- gomod: Update dependencies
- i18n: Update translation templates
- incus/remote: Use errors.new
- incus: Display the alias expansion when execution of an alias fails
- util: code structure error handling
- incusd/db: do not shadow Go builtin function
- lint: disallow restricted licenses in go-licenses
- incus: Fix alias arguments handling
- incus/file: Expand setOwnerMode
- incus/file/push Use SFTP client instead of file API
- incusd/instance/qemu: Set CLOEXEC for TPM sockets
- incusd/patches: Run auth patches on all servers
- incusd/auth/openfga: Get rid of applyPatches
- incusd/auth/openfga: Force OpenFGA update on initial config and patching
- incus: Clarify device override syntax
- incusd/auth/openfga: refresh model before applying patches
- internal/scriptlet: Fix typo
- incusd/scriptlet: refactor marshal
- incusd/scriptlet: Refactor log
- incusd/scriptlet: Add authorization scriptlet
- incusd/auth: Refactor drivers
- incusd/config: Add scriptlet authorization key
- incusd/auth: Add authorization scriptlet driver
- incusd/daemon: Handle authorization scriptlet reset
- incusd/auth: Comment exported methods and types
- incusd/scriptlet: Add project and instance authorization getters
- doc: Update configs
- api: authorization_scriptlet
- doc/authorization: Add authorization scriptlet
- tests: Authorization scriptlet
- doc: add openSUSE installation instructions
- incusd/scriptlet: Rename prefixAuthorization to nameAuthorization
- incusd/scriptlet: Add function checks in scriptlet validation
- client/oci: Add debug logging for subprocess commands
- incusd/scriptlet: Add function args checks in scriptlet validation
- incus/project: Fix get-current for default (unset) project
- incusd: Add support for '--force' flag
- cmd/console: Add '--force' flag
- shared/api: Add Force field to InstanceConsolePost
- client: Check 'console_force' API extenstion
- api: Add console_force extension
- doc/rest-api: Refresh swagger YAML
- internal/cmd: Have RenderTable take in an io.Writer
- incus: Update for RenderTable
- incus-simplestreams: Update for RenderTable
- incusd: Update for RenderTable
- incusd: Cleanup in cmdClusterListDatabase
- doc/reference/network_bridge: Add missing backsticks for variable escaping
- incusd/instance/lxc: Skip instances without idmap allocation yet
- incusd/cluster: Skip project restrictions during join
- shared/ask: Add AskPassword/AskPasswordOnce to Asker
- shared/ask: Fix redefinition of the built-in types
- cmd/incus: Use AskPasswordOnce from asker
- incusd/storage/drivers/common: Truncate/Discard ahead of sparse write
- inucsd: Add additional check to Cancel method for ConsoleShow operation
- incusd/instance_console: Remove redundant (and unsafe) write
- incus/console: Make sure we leave the console in a clean state
- incusd/instance_console: Don't fail on failure to write reset sequence
- client: Improve SFTP performance
- incusd/main_forkfile: Improve SFTP performance
- incusd/network/ovn: Return ErrTooMany when getting multiple records
- incusd/network/ovn: Clear all existing records
- incusd/instance_post: Expand profiles in scriptlet context
- i18n: Update translation templates
- gomod: Update dependencies
- incusd/scriptlet: Refactor load package
- incusd/scriptlet: Add support for checking optional functions and improve error messages
- incusd/storage/drivers: Force blkdiscard and ignore errors
- incusd/auth: fix FGA online data race
- incusd/storage/drivers: Log on blkdiscard failure
- incusd/storage: Add storage volume db entries when storage is changed
- client: Propagate HTTP TLS dialer to websocket
- incusd/scriptlet: Fix qemu_hook required argument
- doc: Fix qemu_hook required argument
- incusd/cluster: Add missing error handling
- incusd/cluster: Clarify error on DB failure
- incusd/instance/qemu: Fix QMP arguments typing
- incusd/instance/qemu: QEMU device naming consistency
サポートとアップグレード ¶
Incus 6.0 ブランチは 2029 年 6 月までサポートされます。常に最新の LTS バグ修正リリースを実行することを強く推奨します。
ダウンロード ¶
- リリース tarball : incus-6.0.3.tar.xz
- GPG シグネチャー : incus-6.0.3.tar.xz.asc
感謝 ¶
この LTS リリースアップデートは、Sovereign Tech Fund(現在は Sovereign Tech Agency の一部)からの資金提供により実現しました。
Sovereign Tech Fund は、オープンデジタルインフラストラクチャーの開発、改良、保守をサポートします。その目標は、セキュリティ、レジリエンス、技術の多様性、コードの背後にいる人々に焦点を当て、オープンソースエコシステムを持続的に強化することです。
詳細は https://www.sovereign.tech をご覧ください。
Incus 6.8 リリースのお知らせ¶
2024/12/13
はじめに ¶
Incus チームは、Incus 6.8 のリリースのアナウンスができてうれしいです!
このリリースは 2024 年の最後のリリースです。実行中の VM をストレージプール間で移動する機能、新しい認証バックエンド、アプリケーションコンテナのボリューム処理の改善など、VM に関係する多くの改善が加えられています。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Happy holidays!
新機能 ¶
VM ストレージのライブマイグレーション ¶
VM の実行中に、ストレージプール間で VM を移動できるようになりました。
しかし、これを動作させるには、VM はクラスター内の別のサーバーに移動する必要があることに注意が必要です。これは、マイグレーション中に、同じ VM の 2 つの QEMU インスタンスが、1 つのサーバー上で実行されることを防ぐために必要です。
あるプールから別のプールへの移動は次のように実行できます:
incus move NAME --storage NEW-POOL --target ANOTHER-SERVER
認可スクリプトレット ¶
新たな認可制御方法が、認可スクリプトレットの形で導入されました。これにより、TLS または OIDC 認証を組み合わせることができる、カスタムのビルトイン認証制御が可能になります。
ドキュメント : https://linuxcontainers.org/incus/docs/main/authorization/#scriptlet-authorization
VM コンソールのスクリーンショット¶
Incus 用の GUI や WebUI クライアントの開発を簡単にするために、VM の VGA コンソールの 1 回限りのスクリーンショットを簡単に取得できるようになりました。
これは非常に軽量で、ユーザーが VGA コンソールに接続しているときでも実行できるという利点があります。
VM の PNG スクリーンショットを取得するためには、GET /1.0/instances/NAME/console?type=vga
でアクセスするだけです。
カスタムストレージボリュームの初期オーナーとモード¶
OCI コンテナのデータに使われるストレージボリュームの作成を簡単にするために、カスタムストレージボリュームの設定オプションがいくつか追加されました:
- initial.uid
- initial.gid
- initial.mode
これらはボリューム作成時に与えることができます。名前が示すように、そのボリューム内のルート ディレクトリの uid、gid、モードの初期値を設定します。
例 :
incus storage volume create default my-volume size=5GiB initial.uid=1000 initial.gid=1000 initial.mode=0700
OpenFGA モデルの小規模なアップデート ¶
このリリースで、OpenFGA アクセスモデルが少し調整されました。
user:* viewer server:incus
の初期パーミッションは、認証されたユーザーに対してグローバルリソースへの読み取り専用アクセスを許可していました。これが同等の user:*authenticated server:incus
に置き換えられました。
さらに viewer
パーミッションがユーザーに直接与えられるようになり、(グローバルリソースだけでなく)サーバー全体の完全な読み取り専用アクセスが許可されます。
権限は更新時に自動的に更新されます。
さらに、新しい can_view_sensitive
資格が追加され、サーバー設定などの機密設定を読み取れるユーザーを制御できるようになりました。
インポート時のイメージエイリアス再利用 ¶
incus publish
で行われていたのと同様に、incus image import --reuse --alias ALIAS image.tar.xz
を実行してイメージをインポートし、ALIAS
というエイリアスで識別されるイメージを置き換えられるようになりました。
新しい incus-simplestreams prune
コマンド ¶
simplestream サーバーをクリーンに保つため、新たに incus-simplestreams prune
コマンドが追加されました。実行すると、次のものが認識され、クリーンアップされます:
- インデックス内のどのイメージにも属さないイメージファイル
- イメージファイルが存在しないインデックスエントリー
- 古いインデックスエントリー(デフォルトでは前の 2 つのイメージが保持される)
コンソールアクセスのロック¶
コンソールへのアクセスは、常に 1 人のユーザーに限定されてきました。
以前は、最後に接続したユーザーが既存のセッションを引き継ぎました。
これはよく驚きや問題の原因になるため、コンソールアクセスはロックされるようになりました。セッションがすでにアクティブなときに接続するとエラーになります。このエラーは強制フラグでオーバーライドできます。
例:
incus console remote-server:windows-2022 --force
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- Consume websocket pings for stderr
- incus-simplestreams: Add prune command
- internal/instance: Fix validation of volatile.cpu.nodes
- shared/util: Add a function to clone maps
- Use
util.CloneMap
where appropriate - cgo/process_utils: fix 32bit builds
- golangci: Enable goimports
- global: Initial goimports run
- incusd: Fix duplicate imports
- incusd: Fix import ordering
- instance/config: Mark user keys as live updatable
- doc: Update configs
- Fix incorrect Vars file mapping in edk2 driver
- incusd/storage/zfs: Fix deletion of unavailable pools
- zfs: load keys for encrypted datasets during pool import
- tests: zfs: add native zfs encryption tests
- incusd/instance: Lock image access
- incus/image: Make use of server-side alias handling
- client: Fix image aliases in push mode
- client: Fix image aliases in relay mode
- incusd/cluster: Validate address on join too
- incusd/network: Remove duplicated logic
- incusd/util: Cover DNS and wildcard coverage
- incusd/storage: Add initial.* config options for storage volume
- incusd/storage/drivers: Add ability to set the initial owner of a custom volume
- tests: Add test for setting initial owner of a cutom volume
- api: Add storage_initial_owner extension
- doc/reference: Add initial.* config keys
- shared/cliconfig: Improve configuration loading
- incus: Simplify configuration loading
- incus: Add aliases completion
- i18n: Update translation templates
- incusd/storage/drivers/lvm: Remove metadata info from space usage calculation
- incus/migration: Add StoragePool to VolumeTargetArgs and StorageMove to VolumeSourceArgs
- incus/instance: Add StoragePool to MigrateArgs
- incus/drivers: Add support for local live-migration between storage pools
- incusd: Add support for local live-migration between storage pools
- api: Add storage_live_migration extension
- golangci: Add local prefixes for goimports
- client: invalidate simple streams cache
- incusd/instances_post: Fix cluster internal migrations
- incusd/instances_post: Only update pool in DB if pool is expected to change
- incusd/instances_post: Account for profiles when overriding pool in DB
- incusd/main_forknet: Don't attach DHCP client to the container PID namespace
- incusd/instance/lxc: Cleanup DHCP client
- incusd/main_forknet: Tweak process title
- incus/image: Add reuse flag
- incus/publish: Use common helper function deleteImagesByAliases
- i18n: Update translation templates
- tests: Add a reuse flag test for the 'incus image import'
- incusd/instance/qemu: Set instance path ownership on startup
- api: instance_console_screenshot
- incusd/instance/qmp: Add Screendump command
- incusd/response: Allow overrriding Content-Type in FileResponse
- incusd/instance: Add ConsoleScreenshot to VM interface
- incusd/instance/qemu: Implement ConsoleScreenshot
- incusd/instance_console: Add screenshot support to console API
- doc/rest-api: Refresh swagger YAML
- incusd/task: Fix wait group logic (more entries than running tasks)
- incusd/instance: Add ETag function
- incusd/instance/qemu: Fix random ordering in ETag
- incusd/instance/lxc: Fix random ordering in ETag
- incusd: Use new ETag instance function
- api: image_import_alias
- client: Set X-Incus-aliases on image imports
- incusd/image: Allow passing alias list through X-Incus-aliases
- doc/rest-api: Refresh swagger YAML
- incusd/image: Fix context for alias add
- incusd/image: Handle all alias cases
- Makefile: Use fga for model conversion
- incusd/auth: Introduce EntitlementCanViewSensitive
- incusd/api_10: Use EntitlementCanViewSensitive
- incusd/auth/openfga: Introduce server-wide read-only access
- incusd/auth/openfga: Rebuild model
- incusd/auth/openfga: Migrate public permissions
- incusd/auth: Implement ApplyPatch
- incusd/auth/fga: Change model refresh logic to rely on patches
- incusd/patches: Add auth patch logic
- incusd/patches: Skip patches until their assigned stage
- doc/authorization: Remove outdated OpenFGA model description
- tests: Tweak openfga test
- incusd/migrate: Set CreationDate during custom volume snapshot copy with refresh
- incusd/storage: Add CreatedAt during custom volume copy with refresh
- tests: Update copy with refresh test
- doc/instance/properties: Add missing instance properties
- incusd/daemon_storage: Ensure corect symlinks for images/backups
- incusd/storage/lvm: Handle newer LVM
- doc/sphinx: Upgrade MyST
- doc/manpage: Tweak manpage synopsis rendering
- incusd/storage/lvm: Require 512-bytes physical block size for VM images
- incus: Improve instance and remote names completion
- incusd: Fill ExpiryDate and remove LastUsedDate in volumeSnapshotToProtobuf
- incusd/device/tpm: Wait for swtpm to be ready
- incus: Improve completion for
file push
andfile pull
- incusd/auth/tls: Restrict config access to non-admin
- incusd/storage: Handle default disk size in GetInstanceUsage
- incus: Improve completion for
file create
- incus: Improve completion for
file delete
- incus: Improve completion for
file edit
- incus: Improve completion for
file mount
- incus: Fix completion for
profile copy
- doc/installing: Update Fedora instructions
- incus: Add a function to complete image fingerprints
- incus: Add completion for
image alias
subcommands - incusd/daemon: Skip non-PKI issued trusted certificates when in PKI mode
- incusd/cluster: Update tests for change to trustedCerts
- tests: Validate all non-PKI certs are blocked in PKI mode
- incus: Fix completion for
image alias create
- doc/network_forwards: Split configuration into own table
- util: Improve readability with early return
- incusd/db: Improve readability with eraly return
- incus/top: Ignore CPU idle time
- incus: Display the alias expansion when execution of an alias fails
- i18n: Update translation templates
- util: code structure error handling
- incusd/db: do not shadow Go builtin function
- lint: disallow restricted licenses in go-licenses
- incus: Fix alias arguments handling
- incus/file: Expand setOwnerMode
- incus/file/push Use SFTP client instead of file API
- incusd/instance/qemu: Set CLOEXEC for TPM sockets
- incusd/patches: Run auth patches on all servers
- incusd/auth/openfga: Get rid of applyPatches
- incusd/auth/openfga: Force OpenFGA update on initial config and patching
- incus: Clarify device override syntax
- i18n: Update translation templates
- incusd/auth/openfga: refresh model before applying patches
- internal/scriptlet: Fix typo
- incusd/scriptlet: refactor marshal
- incusd/scriptlet: Refactor log
- incusd/scriptlet: Add authorization scriptlet
- incusd/auth: Refactor drivers
- incusd/config: Add scriptlet authorization key
- incusd/auth: Add authorization scriptlet driver
- incusd/daemon: Handle authorization scriptlet reset
- incusd/auth: Comment exported methods and types
- incusd/scriptlet: Add project and instance authorization getters
- doc: Update configs
- api: authorization_scriptlet
- doc/authorization: Add authorization scriptlet
- tests: Authorization scriptlet
- doc: add openSUSE installation instructions
- incusd/scriptlet: Rename prefixAuthorization to nameAuthorization
- incusd/scriptlet: Add function checks in scriptlet validation
- client/oci: Add debug logging for subprocess commands
- incusd/daemon_images: Fix error string typo for OCI connect errors
- incusd/scriptlet: Add function args checks in scriptlet validation
- incus/project: Fix get-current for default (unset) project
- Translated using Weblate (Japanese)
- incusd: Add support for '--force' flag
- cmd/console: Add '--force' flag
- shared/api: Add Force field to InstanceConsolePost
- client: Check 'console_force' API extenstion
- api: Add console_force extension
- doc/rest-api: Refresh swagger YAML
- i18n: Update translation templates
- internal/cmd: Have RenderTable take in an io.Writer
- incus: Update for RenderTable
- incus-simplestreams: Update for RenderTable
- incusd: Update for RenderTable
- incusd: Cleanup in cmdClusterListDatabase
- doc/reference/network_bridge: Add missing backsticks for variable escaping
- incusd/instance/lxc: Skip instances without idmap allocation yet
- incusd/cluster: Skip project restrictions during join
- shared/ask: Add AskPassword/AskPasswordOnce to Asker
- shared/ask: Fix redefinition of the built-in types
- cmd/incus: Use AskPasswordOnce from asker
- incusd/storage/drivers/common: Truncate/Discard ahead of sparse write
- inucsd: Add additional check to Cancel method for ConsoleShow operation
- incusd/instance_console: Remove redundant (and unsafe) write
- incus/console: Make sure we leave the console in a clean state
- incusd/instance_console: Don't fail on failure to write reset sequence
- client: Improve SFTP performance
- incusd/main_forkfile: Improve SFTP performance
- incusd/network/ovn: Return ErrTooMany when getting multiple records
- incusd/network/ovn: Clear all existing records
- gomod: Update dependencies
- incusd/instance_post: Expand profiles in scriptlet context
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.8.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 6.7 リリースのお知らせ¶
2024/11/15
はじめに ¶
Incus チームは、Incus 6.7 のリリースのアナウンスができてうれしいです!
このリリースは、スタンドアロンユーザーから、小規模なホームラボを実行するユーザー、大規模のクラスターユーザーまで、すべてのユーザー向けの機能と改良を加えた、非常にバランスの取れたリリースです。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能¶
Incus の Web インターフェースへの簡単なアクセス ¶
ユーザーが Incus の Web UI にアクセスする方法についての不満が頻繁に発生していました。
これは、Incus が初期状態ではネットワークをまったくリッスンせず、ネットワークをリッスンするように設定したあとは、HTTPS 経由でのみリッスンし、中央の OpenID Connect 認証サーバーがある環境で実行していない限りは、TLS クライアントを通してのみ認証されるからです。
確かに動作させることはできますが、通常は次のような手順になります:
1) Incus がネットワークをリッスンするようにする
2) Web ブラウザーから Incus へアクセスする
3) 証明書の警告を無視する
4) ブラウザー内からクライアント証明書を生成する
5) Incus CLI を通して公開鍵を信頼する
6) 公開鍵+秘密鍵のペアをユーザー証明書としてブラウザーにインポートする
7) ブラウザーをリロードし、そのユーザー証明書で正しく認証されることを期待する
今では、同じセキュリティをほぼ確保しながら、これらすべてを大幅に簡素化した代替手段があります。それは、incus webui
を実行するだけです。
このコマンドを実行すると、Incus クライアントツールは小さな HTTP ウェブサーバーを、ループバックデバイスのランダムなポートで実行します。このwebサーバーは、システム上の他のユーザーやソフトウェアが許可なく Incus とやりとりをするのを防ぐためのユニークなトークンにアクセスが制限されています。正しいトークンが提示されると、クライアントツールと同じ資格情報を使用して、Incus サーバーにプロキシーされます。
クラスターの自動リバランシング ¶
Incus クラスターは VM のライブマイグレーションをサポートし、非常に柔軟なスケジューリング・配置ロジックと、サーバーがダウンしたときの自動修復を備えているため、次のロジックのピースは、クラスターの自動リバランシングの機能を追加することでした。
これが可能になりました。次のいくつかの構成キーで設定できます:
cluster.rebalance.batch controls
は、1 ラウンドで再配置するインスタンス数cluster.rebalance.cooldown
は、インスタンスを再度移動できるようになるまでの待機時間を制御しますcluster.rebalance.interval
は、インスタンスの再配置を検討する頻度を制御しますcluster.rebalance.threshold
は、2 つのサーバー間のリバランスをトリガーするのに必要な負荷の見積もり量の差(パーセント単位)を制御します
Incus はクラスター内のそれぞれのサーバーのスコアを効果的に計算し、スコアがもっとも高いサーバーと低いサーバーを比較します。差がしきい値を超えると、2 つのサーバー間でインスタンス数を調整します。
スコアは現時点では、システム上の CPU 数に合わせて調整された 1 分間のロードアベレージと使用可能なメモリー量に基づいています。
ライブマイグレーションでは仮想マシンのみが移動され、プロジェクト内で適用される設定と制約の両方ですべてのマイグレーション要件を満たしているときだけ移動されます。
ドキュメント: https://linuxcontainers.org/incus/docs/main/howto/cluster_manage/#cluster-re-balancing
OCI コンテナの DHCP 更新¶
Incus で OCI コンテナを実行する場合のよくある問題は、ネットワーク構成に関係した問題です。OCI コンテナは一般的に、自身でネットワーク設定を行わず、起動時に完全に設定されたネットワークスタック(アドレス、ルート、DNS)を見つけることを期待します。
これを実現するために、Incus はインスタンスの初期化段階で、小さな DHCP クライアントを実行し、ネットワークを設定しています。しかし、これは 1 回限りのプロセスであり、DHCP リースが更新されないときに、DNS レコードが期限切れになるなどの問題が発生していました。
Incus 6.7 以降は、DHCP クライアントがバックグラウンドでコンテナに参加し、これらの問題を防ぐために、リースの更新を行えるようになりました。
部分的なインスタンスとボリュームの更新 ¶
Incus インスタンスのバックアップでよく使われる機能は、copy --refresh
を使うことです。これにより、Incus はソースとターゲットのインスタンスを効果的に比較し、現在の状態を同期する前に、欠けているスナップショットをターゲットに転送します。
これは非常にうまく機能しますが、バックアップサーバーでクリーンアップを実行してから、これらのスナップショットの一部を削除する方が適切な場合もあります。残念ながら次の更新で、保持する意味がない古いスナップショットであっても、削除したものが戻ってきてしまいます。
解決策の 1 つは、もちろんソースのスナップショットを削除することです。しかし、ソースがそれらのスナップショットを保持し、実質的にバックアップサーバーよりもたくさんの履歴を保持し続けている場合があります。
これに対応するため、新しい --refresh-exclude-older
フラグが追加されました。このフラグを --refresh
と一緒に与えると、最新の共有スナップショットが検索され、それ以降に作成されたスナップショットのみが転送され、実質的にターゲット上で欠落している古いスナップショットは無視されます。
カラムの設定とフォーマット、更新頻度が設定できるようになった incus top
¶
incus top
は --format
と --columns
をサポートするたくさんのコマンドの仲間に加わり、レンダリング方法とレンダリング対象をカスタマイズできるようになりました。
さらに、表示を更新する頻度を設定する --refresh
も使えるようになりました。
OVN ネットワーク上での DHCP アドレスの範囲のサポート ¶
ipv4.dhcp.ranges
設定オプションが OVN ネットワークにも適用されるようになりました。
これにより、ネットワークサブネットの一部のみを動的 IP 割当に使い、残りを固定 IP 割当や、他の用途に予約できるようになります。
物理ネットワークの親デバイスの変更¶
physical
タイプの管理ネットワーク上の親プロパティの値を変更できるようになりました。これにより、物理ネットワークが再構成されたり、物理ネットワークインターフェースが交換されたりしたときに必要になる可能性がある、OVN アップリンクネットワークの別のデバイスへの移動ができるようになりました。
QEMU スクリプトレットの追加の QMP ヘルパー ¶
QEMU スクリプトレットで、いくつかの追加関数が利用できるようになりました。
これには、run_qmp
の便利なラッパーである新しい run_command
が含まれており、簡単なコマンドを簡単に実行できます。
同様に、次のコマンドの簡単なラッパーがあります:
blockdev_add
blockdev_del
chardev_add
chardev_change
chardev_remove
device_add
device_del
netdev_add
netdev_del
object_add
object_del
qom_get
qom_list
qom_set
QEMU QMP コマンドの新しいログファイル ¶
仮想マシン上で、新しいログファイルである qemu.qmp.log
が利用できるようになりました。Incus と QEMU 間のほとんどのやりとりのログを保存します。
root@castiana:~# incus list v1 +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ | v1 | RUNNING | 10.178.240.4 (enp5s0) | fd42:8384:a6f8:63a0:216:3eff:fe4d:5cad (enp5s0) | VIRTUAL-MACHINE | 0 | +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ root@castiana:~# cat /var/log/incus/v1/qemu.qmp.log [2024-11-15T13:11:52-05:00] QUERY: {"execute":"query-cpus-fast"} [2024-11-15T13:11:52-05:00] REPLY: {"return": [{"thread-id": 443303, "props": {"core-id": 0, "thread-id": 0, "node-id": 0, "socket-id": 0}, "qom-path": "/machine/unattached/device[0]", "cpu-index": 0, "target": "x86_64"}]} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"netdev_add","arguments":{"fds":"/dev/net/tun.0:/dev/net/tun.1","id":"incus_eth0","type":"tap","vhost":true,"vhostfds":"/dev/vhost-net.0:/dev/vhost-net.1"}} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"device_add","arguments":{"addr":"00.0","bootindex":"1","bus":"qemu_pcie4","driver":"virtio-net-pci","id":"dev-incus_eth0","mac":"00:16:3e:4d:5c:ad","mq":"on","netdev":"incus_eth0","vectors":"6"}} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"blockdev-add","arguments":{"aio":"native","cache":{"direct":true,"no-flush":false},"discard":"unmap","driver":"host_device","filename":"/dev/fdset/0","locking":"off","node-name":"incus_root","read-only":false}} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"device_add","arguments":{"bootindex":"0","bus":"qemu_scsi.0","channel":"0","drive":"incus_root","driver":"scsi-hd","id":"dev-incus_root","lun":"1","serial":"incus_root"}} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"system_reset"} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"set-action","arguments":{"panic":"pause","reboot":"shutdown","shutdown":"poweroff"}} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"cont"} [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} [2024-11-15T13:11:52-05:00] QUERY: {"execute":"query-status"} [2024-11-15T13:11:52-05:00] REPLY: {"return": {"status": "running", "running": true}}
配置スクリプトレットの get_instances_count
コマンド ¶
配置スクリプトレットに、新たに get_instances_count
関数を追加しました。
これを使用して、プロジェクト・ロケーションの組み合わせ内でのインスタンスの合計数や、トータルのインスタンスの合計数を簡単にカウントできます。また、完全に作成が完了しているインスタンスだけでなく、現在作成中のインスタンスを含めることもできます。
この追加の一部として、スクリプトレットに対して提供される候補リストにも小さな変更が加えられました。候補リストは、保持しているインスタンスの合計数に基づいて(もっとも使用頻度が低いものから高いものまで)ソートされるようになりました。
incus admin sql
内で --format
オプションのサポート ¶
incus admin sql
コマンドで、通常使える --format
オプションがサポートされるようになりました。
これで、単一の SQL カラムをクエリしたとき、--format=csv
を使うと、スクリプトで使える形式で生の値を取得できるので特に便利です。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- doc: Correct name of macvlan modes
- incusd/device/nic: Correct name of macvlan modes
- fix: fix slice init length
- internal/instance: fix live update VM's limits.memory configuration when use a percentage value
- incusd/instance/lxc: Remove restrictions on /run
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Dutch)
- incus-simplestreams list -f json: output field names. fixes lxc#1308
- incus-agent: Add timeout for DNS query
- incusd/db/profiles: Support config caching
- incusd: Update calls to profile ToAPI
- incusd/cluster/profiles: Fix import shadowing
- incusd/instance/qemu: Don't fail on console retrival issue
- incusd/network: Make IsUsed configurable
- incusd/network: Update for IsUsed argument
- incusd/network/physical: Fix typo
- incusd/network/physical: Handle changes in parent value
- incus: Fix display of current project in projects list
- incus/admin/sql: Add support for
--format
- i18n: Update translation templates
- incusd/instance/common: Cleanup volatile on device add failure
- incusd/internal/server/instance/drivers: Add support for Chimera Linux edk2 pkg file names
- shared: Move internal "revert" library into shared
- incusd/network/bgp: Only advertise networks with BGP configuration
- incusd/cluster: Fix resource data caching
- incusd/cluster: Actually use YAML for resources cache
- shared: Update import path for "revert" library
- incusd/instance/lxc: Simplify idmapSize
- incusd/instance/lxc: Simplify findIdmap
- incusd/isntance/lxc: Respect restrict.idmap.size on un-isolated containers
- incusd/instance/lxc: Refactor findIdmap
- incusd/instance/lxc: Fix off by one idmap check
- shared: Move internal "ask" library into shared
- shared: Update import path for "ask" library
- shared: Add godoc comment for NewAsker
- doc/network/resolved: Add disabling DNSSEC and DNSOverTLS
- incusd/device/nic/bridged: Handle invalid configuration
- doc/explenation/instances: Update for application containers
- doc/howto/instances_create: Add an example of application container
- doc: Add Kubernetes to wordlist
- incusd/storage_volumes_snapshots: Respect pattern on manual creation
- tests: Add test for custom storage volume snapshots pattern
- incusd/main_forknet: Port DHCP client to nclient4
- incusd/main_forknet: Attach to the container PID namespace
- incusd/main_forknet: Handle background renewals
- shared/cgo: Add setproctitle
- incusd/main_forknet: Set process title
- doc/installing: Update for Chimera Linux
- shared/cgo: Don't use strlcpy
- incus/top: Fix usage
- shared/util: Add OpenBrowser
- incus/remote/proxy: Add token authentication
- incusd/api: Only expose UI if index.html exists
- incus: Add webui command
- i18n: Update translation templates
- incusd/scriptlet: Make set_target fail with invalid members
- tests: Update for scriptlet placement error handling
- incusd/instance/qmp: Make Run public
- incusd/scriptlet: Add useful QMP functions
- doc/ref/instance_options: Mention QEMU raw QMP commands
- incusd/network/ovn: Add support to ipv4.dhcp.ranges
- api: instances_scriptlet_get_instances_count
- incusd/scriptlet/instances: Fix error messages
- incusd/db/instances: Add GetInstancesCount
- incusd/scriptlet/instances: Add get_instances_count
- doc/cluster/placement: Add get_instances_count
- incusd/db/node: Sort members in GetCandidateMembers
- incusd/instances: Rely on candidateMembers being sorted
- incusd/db/node: Remove unused GetNodeWithLeastInstances
- incusd/db/node: Update tests to use GetCandidateMembers
- internal/server: Log QMP interaction to a file
- incusd/instance/qemu: Log QEMU command line
- tests: Update instance placement tests for new ordering
- incusd/instance_logs: Update log file list
- incusd/network/ovn/sb: Only monitor required tables
- incusd/network/ovn: Implement OVN SB event handlers
- incusd/instance/qmp: Handle disabling log file
- incusd/instance/qemu: Don't use QMP log for feature checks
- incusd/instance/lxc: Fix LXCFS per-instance path
- doc/idmap: Clarify subuid/subgid configuration
- incusd/instance/qmp: Fix logging with no log file
- client: Add a GetOIDCTokens() method
- cmd/project: Add get-current to show current project
- tests: Add get-current to show current project
- i18n: Update translation templates
- incus/file/create: Use SFTP client instead of file API
- internal/instance: Allow 0 as value to limits.cpu.nodes
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (French)
- internal/linux: Add NetlinkInterfaces
- incus-agent: Use NetlinkInterfaces
- incus/top: Add additional flags
- i18n: Update translation templates
- gomod: Update dependencies
- incus/monitor: Include location in cluster logging
- incusd/instance: Add ResourceUsage
- incusd/scriptlet/instance: Use ResourceUsage
- api: cluster_rebalance
- incusd/cluster/config: Add cluster re-balance configuration keys
- incusd/instance/config: Add volatile re-balance configuration key
- doc: Update configs
- incusd: Add cluster rebalance task
- incusd/internal: Add rebalance endpoint
- doc/cluster: Add mention of re-balancing
- api: custom_volume_refresh_exclude_older_snapshots
- shared/api: Add RefreshExcludeOlder to InstanceSource and StorageVolumeSource
- client: Add RefreshExcludeOlder flag to StoragePoolVolumeCopyArgs and InstanceCopyArgs
- incus: Adding refresh-exclude-older flag to 'copy' and 'storage volume copy'
- incusd/migration: Add refresh-exclude-older flag
- internal: Adding refresh-exclude-older flag implementation
- i18n: Update translation templates
- doc/rest-api: Refresh swagger YAML
- incus/top: Fix gofmt
- incusd/instance/drivers: Make Export return a pointer to metadata
- incusd/images: Update for changes to Export
- incusd/instances/publish: Fix base metadata
- incusd/bgp: Don't add duplicates
- incusd/network/bgp: Only skip BGP if unconfigured and not on OVN
- incusd/network: Move loadBalancerBGPSetupPrefixes to OVN driver
- incusd/network/ovn/sb: Add CheckLoadBalancerOnline
- incusd/network/ovn/nb: Add GetLoadBalancer and GetLoadBalancersByStatusUpdate
- incusd/network/ovn: Add load-balancer health event handler
- incusd/network/ovn: Don't advertise offline load-balancers on startup
- shared/subprocess: Allow overriding Cwd
- incusd/device/tpm: Fix handling of long instance names
- incusd/instance/qemu: Don't take over operations on console retrieval
- incusd/instance_post: Provide target project to relocation scriptlet
- incusd/cluster/request: Add new internal user-agent
- incusd/instances_post: Don't re-run placement on internal requests
- incusd/api: Handle new user agent
- incusd/instance_post: Pass in internal user agent during relocation
- incusd/instance/qemu: Don't overtake operations on console retrieval
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.7.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 6.6 リリースのお知らせ¶
2024/10/03
はじめに ¶
Incus チームは、Incus 6.6 のリリースのアナウンスができてうれしいです!
Linux Plumbers Conference と、関連するイベントに出張したことで、リリースはそれほど忙しくありませんでした。
しかし、退屈なリリースからはほど遠いリリースです。通常のバグフィックスとパフォーマンスの改善に加え、多数の仮想マシンに対するすばらしい機能追加、クラスター化 LVM のサポートの改良、incus-migrate の改良、多数のネットワーク機能が追加されています。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
仮想マシンの OS 情報 ¶
Incus VM エージェントが拡張され、仮想マシンについての詳細を追加で取得できるようになりました。
stgraber@dakara:~$ incus info v1 Name: v1 Status: RUNNING Type: virtual-machine Architecture: x86_64 PID: 3753543 Created: 2024/09/24 10:02 EDT Last Used: 2024/10/03 11:29 EDT Started: 2024/10/03 11:29 EDT Operating System: OS: Ubuntu OS Version: 24.04.1 LTS (Noble Numbat) Kernel Version: 6.10.11-zabbly+ Hostname: v1 FQDN: v1 Resources: Processes: 35 Disk usage: root: 1.02GiB CPU usage: CPU usage (in seconds): 4 Memory usage: Memory (current): 374.78MiB Network usage: enp5s0: Type: broadcast State: UP Host interface: tap84ebf5ff MAC address: 00:16:3e:75:89:6e MTU: 1500 Bytes received: 3.13kB Bytes sent: 1.30kB Packets received: 27 Packets sent: 12 IP addresses: inet: 172.17.250.94/24 (global) inet6: 2602:fc62:c:250:216:3eff:fe75:896e/64 (global) inet6: fe80::216:3eff:fe75:896e/64 (link) lo: Type: loopback State: UP MTU: 65536 Bytes received: 5.92kB Bytes sent: 5.92kB Packets received: 80 Packets sent: 80 IP addresses: inet: 127.0.0.1/8 (local) inet6: ::1/128 (local)
コンテナではエージェントは実行しておらず、コンテナのファイルシステムから直接情報を取得するのは安全ではない可能性があるため、この情報は、現時点では仮想マシンでのみ利用可能です。
仮想マシンのコンソールヒストリー ¶
コンテナのコンソールアクセスは、対話的なアクセス(incus console
)と、非対話的なテキストログ(incus console --show-log
)の両方が利用でき、常に非常に柔軟に使えます。
しかし仮想マシンでは、QEMU がコンソールを対話的デバイスに送信すると同時にリングバッファーに記録できなかったため、少し制限された状況でした。
しかし、誰がコンソールに接続しているかどうかによって、QEMU が対話的バックエンドとリングバッファーを切り替えることで、機能させる方法を見つけました。
その結果、incus console --show-log
が仮想マシンでも動作するようになりました。
stgraber@dakara:~$ incus console --show-log v1 BdsDxe: loading Boot0006 "Ubuntu" from HD(1,GPT,B7DD04C0-15CE-482C-A6AC-7278FDA10CF6,0x800,0x32000)/\EFI\ubuntu\shimx64.efi BdsDxe: starting Boot0006 "Ubuntu" from HD(1,GPT,B7DD04C0-15CE-482C-A6AC-7278FDA10CF6,0x800,0x32000)/\EFI\ubuntu\shimx64.efi rootfs: clean, 58918/6393600 files, 1074908/13081339 blocks Ubuntu 24.04.1 LTS v1 ttyS0 v1 login:
クラスター化された LVM ボリュームグループの作成機能 ¶
Incus は、ここ数回のリリースでクラスター化された LVM をサポートしてきました。しかしこれまでは、共有ボリュームグループをユーザーが前もって作っておく必要がありました。
このリリースで、Incus から共有ブロックデバイスを直接指定し、ボリュームグループを作成できるようになりました。
root@server01:~# incus storage create demo-lvm lvmcluster source=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_incus_demo--shared --target server01 Storage pool demo-lvm pending on member server01 root@server01:~# incus storage create demo-lvm lvmcluster source=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_incus_demo--shared --target server02 Storage pool demo-lvm pending on member server02 root@server01:~# incus storage create demo-lvm lvmcluster source=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_incus_demo--shared --target server03 Storage pool demo-lvm pending on member server03 root@server01:~# incus storage create demo-lvm lvmcluster source=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_incus_demo--shared --target server04 Storage pool demo-lvm pending on member server04 root@server01:~# incus storage create demo-lvm lvmcluster Storage pool demo-lvm created
incus-migrate
の QCOW2 と VMDK サポート ¶
スタンドアローンの incus-migrate
ツールが、既存の QCOW2 と VMDK ベースの仮想マシンをインポートできるようになりました。これは、変換を処理するシステム上で、qemu-img
が利用可能であることに依存します。
root@dakara:~# incus-migrate The local Incus server is the target [default=yes]: Would you like to create a container (1) or virtual-machine (2)?: 2 Project to create the instance in [default=default]: Name of the new instance: foo Please provide the path to a disk, partition, or qcow2/raw/vmdk image file: /home/stgraber/demo/rhel9.qcow2 Does the VM support UEFI booting? [default=yes]: Does the VM support UEFI Secure Boot? [default=yes]: Instance to be created: Name: foo Project: default Type: virtual-machine Source: /home/stgraber/demo/rhel9.qcow2 Source format: qcow2 Additional overrides can be applied at this stage: 1) Begin the migration with the above configuration 2) Override profile list 3) Set additional configuration options 4) Change instance storage pool or volume size 5) Change instance network Please pick one of the options above [default=1]: Converting image "/home/stgraber/demo/rhel9.qcow2" to raw format before importing Instance foo successfully created
設定可能な macvlan モード ¶
これまで macvlan のモードは、常に bridged
に固定されていました。
これをカスタマイズできるようになり、vepa
、passthru
、private
など他のモードも使えるようになりました。
stgraber@dakara:~$ incus create images:ubuntu/24.04 c1 Creating c1 stgraber@dakara:~$ incus config device add c1 eth0 nic nictype=macvlan parent=enp35s0 mode=private name=eth0 Device eth0 added to c1 stgraber@dakara:~$ incus start c1
ロードバランサーのヘルス情報 ¶
最近、OVN ロードバランサーにヘルスモニタリングが追加されたため、API をさらに拡張してヘルス情報も公開することが理にかなっています。
root@server01:~# incus network load-balancer show default 172.31.254.50 description: "" config: healthcheck: "true" backends: - name: c1 description: "" target_port: "" target_address: 10.104.61.10 - name: c2 description: "" target_port: "" target_address: 10.104.61.11 ports: - description: "" protocol: tcp listen_port: "80" target_backend: - c1 - c2 - description: "" protocol: tcp listen_port: "22" target_backend: - c1 - c2 listen_address: 172.31.254.50 location: "" root@server01:~# incus network load-balancer info default 172.31.254.50 Backend health: c1 (10.104.61.10): - tcp/80: online - tcp/22: offline c2 (10.104.61.11): - tcp/80: offline - tcp/22: online
OVN ネットワークの外部インターフェース ¶
特定のサーバー上の外部物理インターフェースを、仮想 OVN ネットワークに接続できるようになりました。これにより、物理ネットワークと仮想ネットワーク間のギャップを埋められます。
root@server01:~# incus network set bar bridge.external_interfaces=foo --target server02 root@server01:~# incus network info bar Name: bar MAC address: 00:16:3e:e6:b6:10 MTU: 1422 State: up Type: broadcast IP addresses: inet 10.179.82.1/24 (link) inet6 fd42:3f01:28ef:4257::1/64 (link) Network usage: Bytes received: 0B Bytes sent: 0B Packets received: 0 Packets sent: 0 OVN: Chassis: server01 Logical router: incus-net25-lr root@server01:~# ovn-nbctl lsp-list incus-net25-ls-int e7070089-c979-4bc1-b6f2-1f63008af44b (incus-net25-external-n2-foo) 65eba7f1-e150-4dce-b054-180e389e4d58 (incus-net25-ls-int-lsp-router)
クラスターの退避・リストアの並列化 ¶
クラスターの退避とリストアは、特に多数のインスタンスを実行しているクラスターでは、かなり長いプロセスになる可能性があります。
これを改善するために、このプロセスを自動的に並列化するようになりました。
影響を限定的にするために、これはかなり慎重に行われます。16 CPU スレッドごとに追加の並列の移行が追加されるだけです。そのため、512 スレッドを備えた強力なサーバーでも、同時に移動するのは 32 インスタンスだけです。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incus/network: Fix capitalization in network list
- i18n: Update translation templates
- incusd/storage/drivers/lvm: Cache VG extent size
- incusd/instance/qemu: Always re-generate the nvram symlink
- incusd/network/ovn: LSP dynamic allocation can't be done per protocol
- incusd/instance/qemu: Set O_DIRECT when passing in FDs
- Translated using Weblate (French)
- incusd/apparmor: Only initialize with the daemon
- incusd/instance/qemu: Make O_DIRECT conditional on directCache
- incusd/instance/qemu: Force threads I/O mode for unsafe/writeback
- incusd/instance/qemu: Move away from deprecated fd: syntax
- doc: Fix network load-balancer typo
- incusd/network/ovn: Fix group of load-balancer config keys
- doc: Update metadata
- incusd/apparmor: Add sys_rawio for QEMU 9.1
- doc: Fix limits.memory default value unit
- incusd/storage/zfs: Make sure the zvol is a block device
- incusd/apparmor: Don't attempt unloading profiles when apparmor is disabled
- internal/instance: Fix unit for limits.memory
- doc: Update metadata
- Added translation using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- shared/archive: Add VMDK images to list of supported formats
- doc/installing: Add Rocky Linux 9
- cmd/incus-migrate: Report detected source format when importing VM image
- incus/storage_volume: Fix snapshot listing
- i18n: Update translation templates
- Added translation using Weblate (Indonesian)
- internal/server/instance/drivers: Disable 9p and vsock for Windows VMs
- cmd/incus-migrate: Convert qcow2 and vmdk images to raw format before importing
- doc: List image formats supported by incus-migrate
- scripts: fix empty-incus.sh instances delete
- incusd/network/ovn: Properly handle lack of a protocol on LB checker
- doc/installing: Add link to Arch Wiki for Incus
- internal/server/instance/drivers: Cleanup spice socket when VM stops
- internal/server/instance/drivers: Switch default backend for QEMU console to ringbuf
- incus/console: Add completion
- internal/server/instance/drivers/qmp: Add commands for reading a ringbuf and swaping backends for chardevs
- internal/server/instance/drivers: Implement ConsoleLog() for qemu driver
- internal/server/instance/drivers: Add functions to switch console's backend
- cmd/incusd: Allow VMs to pull console history similar to containers
- cmd: Properly handle
--project
in error messages - i18n: Update translation templates
- incusd/project: Don't fail project deletion on authorizer
- incusd/project: Don't fail project rename on authorizer
- incus-user: Handle existing network
- incusd/networks: Return HTTP Conflict on existing network
- incusd/networks: Apply project restrictions to list of network names
- incusd/auth/tls: Allow access to inherited resources
- instance/config: Add @startup to documentation
- doc: Update metadata
- shared/validate: Better validate simple CPU limits
- incusd/operations: Fix operation cancelation
- incusd/storage_volumes: Handle rename of volumes with sub-paths
- incusd/storage/utils: Only show actual errors in growFileSystem
- internal/server/instance/drivers: Don't return an error if console log file doesn't exist
- incusd/instance/qemu: Properly plumb I/O limits
- incusd/apparmor: Allow all mounts in unprivileged containers
- cleanup: Replace use of os.IsNotExist(err) with errors.Is(err, fs.ErrNotExist)
- incusd/network: Allow to use
dns.search
when only IPv4 is enabled - incusd/apparmor: Remove nosymfollow check (unused)
- doc: add notes for Nvidia gpu usage when installing in OpenSUSE
- api: instances_state_os_info
- shared/api: Add OSInfo to InstanceState
- doc/rest-api: Refresh swagger YAML
- cmd/incus-agent: Populate OS information when returning instance state
- cmd/incus: Print OS info from state, if available
- i18n: Update translation templates
- tests: Don't over-provision test volume
- Translated using Weblate (German)
- cmd/incus-migrate: Don't copy converted VM image
- incusd/instance_console: Check result of type assertion
- incusd/images: Fix image access through secret
- doc: add prerequisites section for building documentation
- Translated using Weblate (German)
- api: network_load_balancer_state
- shared/api: Add NetworkLoadBalancerState
- incusd/network/ovn/sb: Add GetServiceHealth
- incusd/network: Add LoadBalancerState
- incusd/network/load-balancer: Add API for state
- doc/rest-api: Refresh swagger YAML
- client: Add GetNetworkLoadBalancerState
- incus/network_load_balancer: Add info command
- i18n: Update translation templates
- incusd: Only emit image-created if an image was actually created
- incusd/instances: Call placement scriptlet when target specified
- internal/server/instance/drivers/qmp: Ensure that the device passed to RingbufRead() is a ring buffer
- internal/server/instance/drivers: Don't return an error if VM's console device isn't a ringbuf
- internal/server/instance/drivers: Don't conflict with live migration operation
- incus/alias: Handle quoted values
- incus/alias: Stable sorting of alias names
- incusd/instance/qemu: Fix issues with old NVRAM
- incusd/device/nic: Add configuration for macvlan mode
- doc/devices/nic: Add mode for macvlan devices
- api: instance_nic_macvlan_mode
- alpine linux enable edge repositories
- cmd/incusd: gateway parameter wasn't actually used anywhere
- cmd/incusd: Run cluster evacuate and restore in parallel
- formatting: Move goroutines to their own functions
- Translated using Weblate (German)
- internal/instance: Allows the VM's limits.memory configuration to be set to a percentage value
- incusd/network/ovn: Fix CIDR size check
- incusd/instance/lxc: Mount /run if the path exists
- doc: Add uncomment to the word list
- incus/file/delete: Use SFTP client instead of file API
- incus/file/delete: Add --force flag
- i18n: Update translation templates
- doc/network/resolved: Fix systemd unit
- internal/instance: Fix doc for boot.host_shutdown_action
- doc: Update metadata
- client: Capture original OCI image identifier
- incus/file/delete: Cache the SFTP client
- shared/subprocess: Add TryRunCommandAttemptsDuration() which allows the caller to specify the number of attempts and duration between each attempt
- internal/server/storage/drivers: Add support for creating shared VGs
- doc: Incus can now create a shared VG directly
- api: storage_lvm_cluster_create
- Translated using Weblate (Indonesian)
- incusd/network/ovn: Allow adding external interfaces to an OVN network
- doc/network/ovn: Add description for bridge.external_interfaces parameter
- api: network_ovn_external_interfaces
- incusd/network: De-duplicate external interfaces validation
- gomod: Update dependencies
- incusd/instance/qemu: Simplify console switching
- incusd/instance/qemu: Handle existing console connections
- incusd/instance/qemu: Fix shutdown race
- doc/devices/proxy: Fix incorrect bind= example
- incusd/network/bridge: Bring up external interfaces
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.6.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues