News¶
LXD 5.10 リリースのお知らせ¶
13th of January 2023
はじめに ¶
LXD チームは LXD 5.10 のリリースをお知らせできることにとてもワクワクしています!
2023 年の最初のリリースは、チームが 2 週間の休暇を楽しんだため、少し軽めのリリースになっています。来月のリリースは、2023 年に実装されるより大きな機能のいくつかを紹介する予定です。
これは LXD 5.10 がつまらないということではありません。データベースのパフォーマンスを最大限引き出すための継続的な取り組みと、今後の機能のための準備作業に加え、品質向上と十分な数のバグフィックスが行われています。
Enjoy!
新機能とハイライト ¶
インスタンスのドキュメントの作り直し ¶
インスタンスのドキュメントを、新しいスタイルのドキュメントにマッチするように再構成しました。一般的な処理を実行するための手順や、様々なデバイスタイプに関する個別のページに分割しました。
これにより、ドキュメントの閲覧が簡単になるとともに、各ページへのリンクも大幅に簡単になります。
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/instances/
サーバーのドキュメントの作り直し ¶
サーバーのドキュメントについても、いくつか再構成をはじめました。サーバーのドキュメントに関しては、ドキュメントの LXD の管理セクションを整理する作業が残っています。しかし、このリリースで整理されたサブセクションとナビゲーションを持つ、よりよい構造のメインページをご覧いただけます。
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/server/
Grafana ダッシュボード上のネットワークの円グラフ ¶
LXD の Grafana ダッシュボードは、トップのインスタンスを特定するすばらしい方法です。
これまでは、CPU、メモリー、ディスクのトップ 5 インスタンスをカバーするグラフがありました。
今回、ユーザーからの要望で、ネットワークの利用状況についてもカバーするようになりました。送信トラフィック、受信トラフィック、送信パケット、受信パケットの上位を示す 4 つの新しいグラフを追加しました。
ダッシュボードは、LXD のソースリポジトリーの https://github.com/lxc/lxd/blob/master/grafana/LXD.json から直接ダウンロードできます。
もしくは、Grafana から直接取得できます(ID 15726): https://grafana.com/grafana/dashboards/15726-lxd/
NIC デバイスの送信キューの長さが設定可能に ¶
新たに veth ベースの nic
デバイスで queue.tx.length
という設定が利用できるようになりました。
これは、この機能の使用が NIC タイプが bridged
、p2p
、routed
のいずれかを使うコンテナに限定されるということです。
この新たな設定項目は、ネットワークインターフェースの txqueuelen
を設定できます。これは、パケットのキューイングに関係したレイテンシーの問題に遭遇した場合に役に立つ可能性があり、キューの長さを減らして低遅延な動作を強制するか、逆にキューの長さを増やしてスループットを向上させるために使えます。
すべての変更点(翻訳なし)¶
このリリースでの完全な変更点のリストは次の通りです:
すべてのChangeLogを見る
- lxd/storage/ceph: Remove osd map timeout
- doc/instances: small clarifications to the snapshot documentation
- doc/devices: Sort macvlan NIC device options in table
- doc/cloud-init: add info about merging user-data and vendor-data
- doc/instances: clarify misleading description for
linux.sysctl.*
- doc/initialization: add page for
lxd init
- doc/installing: quick cleanup of headings
- doc/preseed: move the content from preseed.md to the init page
- doc/init: clean up documentation of the preseed file initialization
- doc/storage: add links to MicroCeph
- doc/clustering: add links and instructions for MicroCloud
- doc: add MicroCeph and MicroCloud to wordlist
- lxd/instance/drivers/qmp: Don't mask unexpected monitor response errors with sentinel
- doc/security: move to a separate section
- doc/security: clean up section
- doc/configuration: remove Configuration section
- lxd/db/images: Updates GetImagesFingerprints to use transactions
- lxd/db/images: Updates GetImageAliases to use transactions
- lxd/db/images: Updates GetImageAlias to use transaction
- lxd/db/images: Updates DeleteImageAlias to use transactions
- lxd/db/images: Updates CreateImageAlias to use transactions
- lxd/db/images: Updates UpdateImageAlias to use transaction
- lxd/db/images: Updates CreateImage to use transaction context
- lxd/db/db/internal/test: Update image tests
- lxd/util/http: Update EtagCheck to return api.StatusError with http.StatusPreconditionFailed
- lxd/images: Updates imagesPost to use single transaction
- lxd/images: Updates doImagesGet to use transactions
- lxd/images: Updates imagesGet to use doImagesGet
- lxd/images: Updates doImageGet to use transactions
- lxd/images: Updates imageGet to use doImageGet
- lxd/images: Updates imageAliasesPost to use single transaction
- lxd/images: Updates imageAliasesGet to use single transaction
- lxd/images: Updates imageAliasGet to use single transaction
- lxd/images: Updates imageAliasDelete to use single transaction
- lxd/images: Updates imageAliasPut to use single transaction
- lxd/images: Updates imageAliasPatch to use a single transaction
- lxd/images: Updates imageAliasPost to use a single transaction
- lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetImagesFingerprints
- lxd/instance/instance/utils: Updates ResolveImage to use transaction
- lxd/instance/drivers/driver/qemu: Show actual qemu path in checkFeatures
- lxd/instance/drivers/driver/qemu: Remove -bios flag from qemu feature check invocation
- lxd/instance/drivers/driver/qemu: Extract stderr output from qemu during checkFeatures
- lxd/instance/drivers/driver/qemu: Add -no-user-config to qemu invocation in checkFeatures
- lxd/instances/post: Remove profile loading from createFromImage
- lxd/instances/post: Remove profile loading from createFromNone
- lxd/instances/post: Remove profile loading from createFromMigration
- lxd/instances/post: Use correct error quoting in createFromMigration
- lxd/instances/post: Remove profile loading from createFromCopy and clusterCopyContainerInternal
- lxd/instances/post: Centralise profile validation and loading in instancesPost
- lxd/instance/instance/utils: Removes fetchInstanceDatabaseObject function
- lxd/instance/instance/utils: Updates SuitableArchitectures to accept optional source instance
- lxd/instances/post: instance.SuitableArchitectures usage
- lxd/instances/post: Moves local clustered check earlier
- lxd/instances/post: Move target group check into initial transaction
- lxd/instances/post: Pass request context into DB transaction
- lxd/instances/post: Don't shadow err in instancesPost
- lxd/instances/post: Keep related error checking together in instancesPost
- lxd/instances/post: Move InstanceType and Source instance logic earlier in instancesPost
- lxd/instances/post: Use instance.ValidName in instancesPost
- lxd/instances/post: Remove duplicated instance name check in createFromImage
- lxd/instances/post: Update createFromImage to use req.Type for image type
- lxd/instances/post: Don't load target project again in createFromImage
- lxd/instance: Fix error quoting in instanceCreateFromImage
- lxd/instance/instance/utils: Updates ResolveImage to use a transaction
- lxd/instance/instance/utils: Updates SuitableArchitectures to accept a source image reference
- lxd/instance: Updates instanceCreateFromImage to accept a source image directly
- lxd/db/db/internal/test: tx.GetCachedImageSourceFingerprint usage
- lxd/db/images: Updates GetCachedImageSourceFingerprint to use transaction
- lxd/daemon/images: tx.GetCachedImageSourceFingerprint usage
- lxd/instances/post: Update createFromImage to accept image info and alias directly
- lxd/instances/post: Updates instancesPost to resolve image profiles early
- lxd: Move to current bakery version
- lxd-migrate: Move to current bakery version
- client: Move to current bakery version
- lxc: Move to current bakery version
- test/macaroon-identity: Move to current bakery version
- tests: Update godeps.list
- gomod: Update dependencies
- lxd/instance/drivers/driver/qemu: Update architectureSupportsUEFI to add arch argumnent
- lxd/instance/drivers/driver/qemu: Update checkFeatures to add -bios flag for UEFI architectures
- lxd/instance: Improve logging in autoCreateInstanceSnapshots
- lxd-migrate: Fix usage string
- doc: fix version conflicts for doc tools
- lxd/storage/drivers/driver/zfs: Improve error when existing zpool isn't empty
- lxd/storage/s3/miniod: Wait 10s for minio process to start
- doc/lxd-migrate: add information about updating the configuration
- lxd/instance/drivers: Don't fail Start if renaming old log file doesn't exist
- lxd/storage/backend/lxd: Improve bucket errors
- forksyscall: ensure that parent mount is dependent mount
- lxd/storage/drivers/driver/btrfs/utils: Fix getQGroup to suport BTRFS >= 6.0.1
- lxd/storage/s3/miniod: Wait for config to be available before considering ready
- forksyscall: avoid double MS_MOVE
- lxd/db/query/dump: Correctly generate CREATE TABLE statement
- lxd/db/query/dump: Correctly escape single quote and \n and \r
- lxd/db/query/dump/test: Fix dump tests
- lxd/db/warnings: Store warning times in UTC
- gomod: Update github.com/shirou/gopsutil/v3
- lxc/init: Fix --no-profiles flag
- test: Adds test for lxc init --no-profiles
- lxd/instance/drivers/driver/qemu: Add qemuMachineType function
- lxd/instance/drivers/driver/qemu/config/test: Fix architecture tests
- lxd/instance/drivers/driver/qemu/config/test: Fix whitespace
- lxd/instance/drivers/driver/qemu: Adds -machine type argument to checkFeatures
- lxd/network add function to get txqlen
- lxd/instances/post: Move cluster member targetting checks higher up
- lxd/instances/post: Use architecture from source image in request
- lxd/instances/post: Remove logger.Debugf usage
- lxd/instances/post: Rework cluster member targetting logic
- lxd/instances/post: Only check project instance creation permissions on initial cluster member
- lxd/instances/post: Send notification header when redirection create request to different cluster member
- lxd/db/node: Adds GetCandidateMembers function
- lxd/db/node: Reworks GetNodeWithLeastInstances to accept list of candidate members
- lxd/db/node/test: Update tx.GetNodeWithLeastInstances tests
- lxd/instances/post: Split generation of candidate cluster members from selection of member with fewest instances
- lxd/api/cluster: tx.GetNodeWithLeastInstances usage
- lxd/ip add function to set txqlen
- grafana: add top network usage graphs
- fix dead lock bug
- lxd/instance/drivers: Fixes delete of ephemeral VM on stop
- gomod: Update dependencies
- lxd/instance/instance/utils: Updates SuitableArchitectures to return api.StatusError for bad requests
- lxd/instance/instance/utils: Accept db.ClusterTx in SuitableArchitectures
- lxd/instances/post: Move instance.SuitableArchitectures and tx.GetCandidateMembers into existing transaction
- lxd/db/node: Skip pending nodes in GetCandidateMembers
- lxd/db/node: Modified GetCandidateMembers to accept list of all cluster members
- lxd: tx.GetCandidateMembers usage
- lxd/project/permissions: Removes unused tx argument from CheckClusterTargetRestriction
- lxd: project.CheckClusterTargetRestriction usage
- lxd/instances/post: Reject use of target parameter when not clustered in instancesPost
- lxd/instances/post: Allow targeting all cluster groups if project restricted.cluster.groups is empty
- lxd/instances/post: Check manually targeted cluster member belongs to one of restricted.cluster.groups
- lxd/db/node: Updates GetNodeWithLeastInstances to return NodeInfo
- lxd/db/node/test: tx.GetNodeWithLeastInstances usage
- lxd/api/cluster: Updates evacuateClusterMember tx.GetNodeWithLeastInstances usage
- lxd/instances/post: Updates instancesPost tx.GetNodeWithLeastInstances usage
- test: Update cluster targeting tests
- test: Restructure test_clustering_membership to be less flaky
- test: Lower boot.host_shutdown_timeout during clustering evacuation tests
- lxd/api/cluster: Improve logging in evacuateClusterMember
- lxd/db: Changed snapshot sort from date to datetime
- lxd/api: Add support for serving the UI
- doc: Fix broken cloud-init doc links
- lxd/db/instances: Sort snapshots by creation time and then ID in GetInstanceSnapshotsNames and GetNextInstanceSnapshotIndex
- lxd/info: Use snapshot order from server in instanceInfo
- lxd/db/storage/volumes: Order by volume snapshot creation date first in GetStoragePoolVolume
- doc/networks: add instructions for attaching a network to an instance
- doc/server: struture the server options page
- doc/server: split up configuration table
- doc/server: update links to point to more specific sections
- doc/server: clean up configuration options
- lxd/device Add support for setting txqueuelen on veth based NICs
- test: Add test for setting txqueuelen of nic bridged device
- api: Adds txqueuelen api description
- lxd/instances/post: Reduce scope of target member and group variables
- lxd/instances/post: Updates comments
- lxd/db/node: Make NodeInfo.ToAPI more efficient when called multiple times
- lxd/db/node: Improve GetNodeMaxVersion comment
- lxd/api/cluster: Updates member functions to use modified ToAPI function
- lxd/api/cluster: Consistent error quoting
- lxd/db/node: Don't run unnecessary query for getting offline threshold in GetCandidateMembers
- lxd: tx.GetCandidateMembers usage
- lxd/db/node/test: Updated tx.GetCandidateMembers usage
- lxd/api/cluster: Fixes clusterNodesPost API description
- doc/rest-api: Refresh swagger YAML
- gomod: Update dependencies
- i18n: Update translations from weblate
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のようにして使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc
LXD 5.9 リリースのお知らせ¶
12th of December 2022
はじめに ¶
LXD チームは LXD 5.9 のリリースをお知らせできることにとてもワクワクしています!
このリリースが 2022 年の最後のリリースになるでしょう。
楽しい休日をお過ごしください。2023 年にお会いできることを楽しみにしています!
今年最後のリリースということで、開発サイクルも 3 週間と短く、そのほとんどをバグフィックスとパフォーマンスの改善に費やしました。1 年を締めくくるのにふさわしいものになりました!
Enjoy!
新機能とハイライト ¶
ネットワークゾーンのプロジェクト機能 ¶
これまでのリリースでは、ネットワークゾーン(DNS)は features.networks
と結びついており、プロジェクトごとの DNS ゾーンを取得するために、事実上 OVN を使用する必要がありました。
これは現在、新たに features.networks.zones
に分割され、features.networks
を使わない環境でもプロジェクトごとのゾーンを使えるようになりました。共有ネットワークを扱う場合、そのネットワークは複数のゾーンを指定できます(カンマ区切り)。各ゾーンは所属するプロジェクトのレコードのみを含むことになるでしょう。
すべての変更点(翻訳なし) ¶
このリリースでの完全な変更点のリストは次の通りです:
すべてのChangeLogを見る
- lxd/network/driver/bridge: Remove unnecessary query for server name in Leases
- lxd: Fix use of inst.Project() in logs with inst.Project().Name
- lxd/api/metrics: Fix race condition on map access in metricsGet
- lxd/instance/drivers/driver/qemu: Fix blockNodeName to use base64 raw URL format
- lxd/instance/post: Prevent moving instance to invalid (or empty) name
- lxd/db: Fix default profile assigment on image creation in the default project
- lxd/db/cluster: Fix the comment for InitProjectWithoutImages function
- lxd/main: Fix that change project "features.images" to "false" didn't add the project default profile to images from "default" project
- lxd/instance/drivers: Restrict CPU hotplugging
- lxd/instance/drivers: Fix CPU hotplug check
- lxd/instance/drivers: Handle unset limits.cpu
- tests: Add test for correct default profile assigment to images in projects with "features.images=false"
- lxd/device/tpm: Expose tpmrm to the container
- doc: allow returning traffic in DOCKER-USER custom chain
- scripts/bash/lxd-client: fix autocompletion not working
- lxd/util: Skip cephobject in AvailableStorageDrivers
- lxd/apparmor/archive: Fix image unpack apparmor profile in archiveProfile
- lxd/daemon/storage: Improve errors in daemonStorageValidate
- lxd/api/1.0: Improve errors in doApi10Update
- lxd/storage/drivers/volume: Use roundVolumeBlockFileSizeBytes in ConfigSizeFromSource
- test: Add test for custom volume image unpack
- lxd/storage/drivers/volume: Update Test_Volume_ConfigSizeFromSource tests
- lxd/device/nic: Add hwaddr key to liblxc NIC config
- lxd/containers: Fix error handling on stop/shutdown
- lxd/containers: release the liblxd instance if raw.lxc is invalid
- lxd/fsmonitor/drivers/driver/fsnotify: Switch away from github.com/fsnotify/fsnotify package
- lxd/device/device/utils/unix/events: Adds event action to error log in unixRunHandlers
- lxd/device/unix/common: Detect missing source device in unixDeviceAttributes
- lxd/fsmonitor/drivers/common: Clean file paths for handler registrations
- lxd/fsmonitor/drivers/interface: Adds Name() to definition
- lxd/fsmonitor/drivers/driver/inotify: Renames fsnotify driver to inotify
- lxd/fsmonitor/drivers/driver/fanotify: Adds Name() function
- lxd/fsmonitor/drivers/load: Rename fsnotify to inotify
- lxd/fsmonitor/load: Use inotify instead of fsnotify
- Replace "the the" with "the"
- lxd/main/forkdns: Replace github.com/fsnotify/fsnotify with k8s.io/utils/inotify
- lxd/main/forkdns: Wrap error and don't include newline in returned error
- gomod: Adds k8s.io/utils
- lxd/device/device/utils/unix/events: Only call filepath.Clean once in unixRegisterHandler
- lxd/device/device/utils/unix/events: Don't use logger.Debugf in unixRegisterHandler
- config: Fix inconsistency with acme.agree_tos option
- lxc/init: Improve cmdInit device override to work nicely with --storage and --network flags
- lxd/utils: Improve error in parseDeviceOverrides
- i18n: Update translation templates
- lxd/storage/drivers/interface: Add roundVolumeBlockSizeBytes definition to Driver interface
- lxd/storage/drivers/driver/common: Move roundVolumeBlockSizeBytes to common driver
- lxd/storage/drivers: pool driver roundVolumeBlockSizeBytes usage
- lxd/storage/drivers/utils: Removes unused roundVolumeBlockFileSizeBytes function
- lxd/storage/drivers/driver/lvm: Overrides roundVolumeBlockSizeBytes function
- lxd/network/network/utils: Adds filter support to UsedByInstanceDevices
- lxd/network/driver/bridge: Updates Leases to use UsedByInstanceDevices
- lxd/network/driver/ovn: Update Leases to use UsedByInstanceDevices
- lxd: Remove nictype checks for ovn
- qemu: Add more feature checks
- qemu: Check CPU hotplug support using features not architectures
- drivers: Issue log message when instance type is operational
- lxd/network/driver/common: Adds netType var and moves Type() to common
- lxd/network/driver: Removes per-driver Type() function
- lxd/network/network/load: Ensure LoadByType initialises netType variable
- lxd/network/network/utils: Adds network type to NIC connected to network logic
- lxd/device/nic/bridged: Update checkAddressConflict to use UsedByInstanceDevices
- lxd/device/nic/ovn: Pass network type to UsedByInstanceDevices
- lxd/network/driver/bridge: Pass network type to UsedByInstanceDevices
- lxd/network/driver/ovn: Pass network type to UsedByInstanceDevices
- lxd/network/driver/common: Pass network type to UsedBy
- lxd/networks: Pass network type to network.UsedBy
- test: Add timeout to interactive edit commands
- test: check LXC driver version instead of QEMU's
- test: image short fingerprints are 12 chars long
- test: use
grep
instead ofcat | grep
- doc/instances: clean up devices overview section
- doc/devices: clean up docs for
none
device type - doc/devices: sort tables for
nic
device type alphabetically - test: use
awk
instead ofawk | awk
- test: use
awk
instead ofgrep | cut
- ceph: Drop unnecessary volume.block.* config keys
- Makefile: optimize
find
call - Makefile: check
test/extras/*.sh
using shellcheck - test/extras: shellcheck fixes
- shared/subprocess/testscript/signal.sh: lookup signal name to trap
- doc: simplify markdown error postprocessing
- doc: move trap before preprocessing
- doc: silence
command -v
's output - lxd/project/permissions: Use consistent quoting in errors
- lxd/project/permissions: Improve error wrapping
- lxd/storage/volumes: Pass request context to transaction
- lxd/instance/put: Use request context for transaction
- lxd/storage/volumes: Don't check project limits when doing a volume snapshot restore
- lxd/network/driver/bridge: Only include downstream OVN virtual router addresses for network's project in Leases
- lxd/network/driver/bridge: Add network's own gateway IPs to Leases list
- lxd/network/driver/ovn: Add network's own gateway IPs to Leases list
- lxd/device/proxy: Simplify check in validateConfig
- doc: add link to Running in production YouTube video
- api: Adds projects_networks_zones extension
- doc: Adds features.networks.zones project feature and updates networks dns.zone.forward setting
- doc: Update network zones howto with multiple forward zones info
- lxd/db/cluster/update: Patch to add features.networks.zones=true to any project that has features.networks=true
- lxd/db/cluster/projects: Reworks project features info and adds features.networks.zone feature
- lxd/db/migration: Switch to using cluster.ProjectFeatures in importPreClusteringData
- lxd/db/cluster/open: ProjectFeatures usage
- lxd/api/project: cluster.ProjectFeatures usage in projectsPost
- lxd/api/project: Use cluster.ProjectFeatures in projectChange
- lxc/project: Adds features.networks.zones support to cmdProjectList
- lxd/project/project: Clarifies comment on NetworkProject
- lxd/project/project: Adds NetworkZoneProjectFromRecord and NetworkZoneProject functions
- lxd-user/lxd: Enable features.networks.zones project feature by default for user projects
- lxd/api/project: Add validation for features.networks.zones
- lxd/network/zones: Make network zones belong to their effective network zone project
- lxd/network/zones: Use current method of generating API URLs
- lxd/network/zone/zone: Update usedBy to handle networks having multiple zones
- lxd/network/driver: Update validatation of network forward zone key
- lxd/db/network/zones: Rename GetNetworkZones to GetNetworkZonesByProject
- lxd/network/zones: GetNetworkZonesByProject usage
- lxd/network/zone/reverse: Update reverse function to take net.IP
- lxd/network/zone/zone: Update Content to handle networks supporting multiple forward zones
- lxd/db/network/zones: Removes unused GetNetworksForZone function
- i18n: Update translation templates
- test: Update tests to check for network zones project views
- docs: Added snap version directory for local remotes
- lxd/network/zones: Use project.NetworkZoneProject in networkZonesGet
- lxd/apparmor: fix AppArmor profile for qemu-img
- lxd/db/generate/db/method: Add generic struct fetching functions
- lxd/db/cluster/warnings.mapper: Update generated code
- lxd/main/forkdns: Updates serversFileMonitor to only watch for inotify.InMovedTo event
- test: Don't use temporary pid files for forkdns
- test: Simulate what LXD does when building forkdns servers.conf
- test: kill -9 forkdns processes to ensure they are killed
- test: Make network zones more strict
- doc/howto/cluster/manage: Adds
--cohort="+"
to snap refresh command - lxd/instance/drivers/driver/qemu: Use errors.Is in renderState
- lxd/instance/drivers/driver/qemu: Adds non-agent metrics fallback in Metrics
- lxd/instance/drivers/driver/qemu: Use shared.IsTrueOrEmpty in agentMetricsEnabled
- client/connection: Don't use logger.Debugf
- lxd/api/metrics: Correctly size slice of project names in projectNames
- lxd/api/metrics: Use request context for DB transaction
- lxd/api/metrics: Get internal metrics using existing DB transaction in metricsGet
- lxd/api/metrics: Move duplicated code into invalidProjects function
- lxd/locking/lock: Adds context support to Lock
- lxd: locking.Lock usage
- lxd/api/metrics: Use multiple OR filters to avoid calling InstanceList multiple times
- lxd/query: Only repeat query as plain request for JSON decode errors in cmdQuery
- lxd/api/metrics: Use locking.Lock with timeout in metricsGet
- lxd/api/metrics: Limit concurrency of instance metrics building in metricsGet
- lxd/api/metrics: Pre-allocate newMetrics map to right size
- lxd/db/instances: Adds context argument to InstanceList
- lxd: InstanceList with context usage
- lxd/api/metrics: Pass request context to InstanceList in metricsGet
- lxd/endpoints/vsock: Update VsockAddress to return net.Addr interface
- lxd/instance/drivers/driver/qemu: Fix nested VMs in getAgentConnectionInfo
- lxd/instance/drivers/driver/qemu: Don't generate agent.conf if no host vsock info in generateConfigShare
- lxd/device/nic: Use api.NetworkStatusUnavailable constant
- lxd/resources/network: Ignore errors from ethtoolAddPortInfo
- doc/devices: clean up docs for
nic
device type - doc/devices: sort tables alphabetically
- doc/devices: clean up docs for
disk
device type - doc/devices: clean up docs for
gpu
device type - doc/devices: clean up docs for
infiniband
device type - doc/devices: clean up docs for
pci
device type - doc/devices: clean up docs for
proxy
device type - doc/devices: clean up docs for
tpm
device type - doc/devices: clean up docs for
unix-block
device type - doc/devices: clean up docs for
unix-char
device type - doc/devices: clean up docs for
unix-hotplug
device type - doc/devices: clean up docs for
usb
device type - doc/devices: document device option override at creation
- doc/devices: fix doc on how to use a specific VF as a NIC
- lxd/migrate/instance: Don't use multi-sync when using optimized transfer mode
- lxd/storage/drivers: Make using volSrcArgs.{MultiSync|FinalSync} with MigrateVolume an error
- lxd/storage/drivers/driver/zfs/volumes: Remove unused multi-sync logic from migrateVolumeOptimized
- lxd/instance/drivers: Improve pool name change check error
- lxd/storage/drivers/driver/zfs/volumes: Use deferred option for deleting temporary snapshots
- test: Force stop containers in migration tests
- lxd/storage/drivers/utils: Use consistent error quoting in TryUnmount
- lxd/storage/drivers/driver/zfs/volumes: Use existing dataset var in UnmountVolume
- lxd/api/1.0: Move wait for server to be ready out of doApi10UpdateTriggers
- lxd/api/1.0: Explicitly use context.Background() in api10Put and doApi10Update
- lxd/api/1.0: Use request context in doApi10Update when validating request
- lxd/api/1.0: Use contextual logging
- lxd/storage: Disable io_uring on ZFS
- lxd/instance/drivers/qmp/commands: Updates SendFile to use Go's JSON encoder
- lxd/instance/drivers/qmp/commands: Adds CloseFile function
- lxd/instance/drivers/driver/qemu: Fix macvlan NICs losing connectivity on LXD restart
- lxd/instance/drivers/qmp/commands: Adds QueryCPUs function
- lxd/instance/drivers/driver/qemu: Fix multi-queue NIC support in addNetDevConfig
- lxd/device/nic/sriov: Fix nicSRIOV to pass VF MAC address to VM if not specified
- lxd/instance/drivers/driver/qemu: Improve MAC parse error in writeNICDevConfig
- lxd/apparmor: fix AppArmor instance_qemu profile
- lxd/migrate/instance: Consider RBD transfer non-optimised
- doc/instances: clean up docs for instance properties
- doc/instances: reorder instance options docs
- doc/instances: fix links to instance options
- doc/instances: add how-to guide for creating snapshots
- lxd/storage/drivers/driver/ceph/volumes: Don't expect multi-sync for live optimized transfer in CreateVolumeFromMigration
- lxd/storage/drivers/driver/ceph/volumes: Don't allow multi-sync for optimized transfer in MigrateVolume
- Revert "lxd/migrate/instance: Consider RBD transfer non-optimised"
- doc/instances: clean up instance options
- doc/snapshots: add information about snapshot pattern format
- doc/instances: clean up unit reference
- doc/instances: move Override QEMU configuration
- doc/instances: clean up QEMU override section
- lxd/storage/drivers/interface: Make HasVolume return an error
- lxd/storage/backend/lxd: b.driver.HasVolume usage
- lxd/storage/backend/lxd: Check storage pool is ready before checking usage
- lxd/storage/drivers/driver/btrfs/volumes: HasVolume usage
- lxd/storage/drivers/driver/ceph: HasVolume usage
- lxd/storage/drivers/driver/cephfs: HasVolume usage
- lxd/storage/drivers/driver/common: HasVolume usage
- lxd/storage/drivers/driver/dir: HasVolume usage
- lxd/storage/drivers/driver/lvm: HasVolume usage
- lxd/storage/drivers/driver/mock: HasVolume usage
- lxd/storage/drivers/driver/zfs: Renames checkDataset to datasetExists
- lxd/storage/drivers/generic/vfs: Updates genericVFSHasVolume to return an error
- lxd/storage/drivers/driver/ceph: Adds placeholder volume exists check for Mount
- lxd/storage/drivers/driver/ceph/volumes: Updates hasVolume to return an error
- lxd/storage/drivers/driver/ceph: Adds 10s timeout to GetVolumeUsage and rbdMapVolume
- lxd/instance/drivers/qmp: Adds SetAction function
- lxd/instance/drivers/driver/qemu: Set reboot action to shutdown
- lxd/instance/drivers: Ignore in-use unmount errors on instance stop
- i18n: Update translations from weblate
- gomod: Update dependencies
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のようにして使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc
LXD 5.8 リリースのお知らせ¶
18th of November 2022
はじめに ¶
LXD チームは LXD 5.8 のリリースをお知らせできることにとてもワクワクしています!
ここ数週間、LXD チーム全体がミーティングのためにプラハに出張していたため、今回もかなり軽めのリリースになりました。
それでも、このリリースに間に合うように、かなりエキサイティングな機能とパフォーマンスの改良を実現できました。
Enjoy!
新機能とハイライト ¶
VM での CPU ホットプラグ ¶
仮想マシンの limits.cpu
の値を稼働中に更新できるようになりました。
これにより、仮想マシンへの CPU のホットプラグとホットリムーヴができるようになりました。
stgraber@castiana:~$ lxc launch images:ubuntu/22.04/cloud v1 --vm Creating v1 Starting v1 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes stgraber@castiana:~$ lxc config set v1 limits.cpu=2 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 - - - - no stgraber@castiana:~$ lxc exec v1 -- bash root@v1:~# echo 1 > /sys/bus/cpu/devices/cpu1/online exit stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 0 0 1 3:3:3:0 yes stgraber@castiana:~$ lxc config set v1 limits.cpu=1 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes stgraber@castiana:~$ stgraber@castiana:~$ lxc launch images:ubuntu/22.04/cloud v1 --vm Creating v1 Starting v1 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes stgraber@castiana:~$ lxc config set v1 limits.cpu=2 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 - - - - no stgraber@castiana:~$ lxc exec v1 -- bash root@v1:~# echo 1 > /sys/bus/cpu/devices/cpu1/online exit stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 0 0 1 3:3:3:0 yes stgraber@castiana:~$ lxc config set v1 limits.cpu=1 stgraber@castiana:~$ lxc exec v1 -- lscpu -e -a CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes stgraber@castiana:~$
init と launch 時のデバイスのオーバーライド ¶
lxc launch
と lxc init
のときに、特定のデバイスをオーバーライドできるようになりました。
これは、カスタムルートディスクのサイズを設定するときに特に便利です。
stgraber@castiana:~$ lxc launch images:ubuntu/22.04 u1 -d root,size=20GiB Creating u1 Starting u1 stgraber@castiana:~$ lxc exec u1 -- df -h / Filesystem Size Used Avail Use% Mounted on rpool/lxd/containers/u1 21G 327M 20G 2% / stgraber@castiana:~$
ボリュームの作成日の記録 ¶
カスタムストレージボリュームに作成日が追加されました。
stgraber@castiana:~$ lxc storage volume create default foo Storage volume foo created stgraber@castiana:~$ lxc storage volume show default foo config: {} description: "" name: foo type: custom used_by: [] location: none content_type: filesystem project: default created_at: 2022-11-18T16:49:36.857660311Z
これにより、インスタンスやイメージに対して行われていることと同じように、マイグレーションや更新処理のときに役に立つ追加情報が提供されます。
すべての変更点 ¶
このリリースでの完全な変更点のリストは次の通りです:
すべてのChangeLogを見る
- doc: Clarify that remote token expiry default to no expiry
- doc: Add missing expires_at field to token structs
- lxd/db/operationtype: Rename to RemoveExpiredTokens
- lxd: Remove auto removal of cluster join tokens
- lxd: Add tasks for expired token removal
- shared/api/init: Add exported preseed structs
- lxd/main/init/preseed: Update usages
- shared/version/api: Update api extensions
- lxd/device: Continue if device is nil
- lxc: Extend image filtering
- lxd/network/driver/ovn: Get dynamically allocated IPs from OVN switch port even if not using DHCP
- shared/cert: Add GenerateTrustCertificate to shared package
- lxd/cluster/connect: Update usages
- lxd/cluster/connect: Use 409 error for existing trusted cert
- test/suites: Unset join_token_expiry when done
- test/suites: Increase join_token_expiry to 10 seconds
- doc/authentication: clarify expiration of cluster join tokens
- lxd/api/internal: Only cancel shutdown wait if forced
- lxd/operations: Simplify waitForOperations
- lxd/daemon: Remove unnecessary log message in Stop
- lxc init: Fix usage line in the help output
- doc/instances: restructure content
- doc/instances: quick clean-up of content
- i18n: Update translation templates
- lxd/device/nic/bridged: Relax duplicate instance name check
- test: Update check for bridged NIC duplicate instance DNS name
- api: Adds storage_volumes_created_at extension
- shared/api/storage/pool/volume: Adds CreatedAt field to StorageVolume and StorageVolumeSnapshot structs
- lxd/db/cluster: Adds creation_date column to storage_volumes and storage_volumes_snapshots table
- lxd/db/storage/volume/snapshots: Comment and error improvements to CreateStorageVolumeSnapshot
- lxd/db/storage/volume/snapshots: Adds creationDate argument to CreateStorageVolumeSnapshot
- lxd/db/storage/volume/snapshots: Clarify projectName argument in CreateStorageVolumeSnapshot
- lxd/db/storage/volumes: Clarify projectName argument in CreateStoragePoolVolume
- lxd/db/storage/volumes: Comment and error improvements to CreateStoragePoolVolume
- lxd/db/storage/volumes: Adds creationDate argument to CreateStoragePoolVolume
- lxd/storage/utils: Adds creationDate argument to VolumeDBCreate
- lxd: Update storage volume tests
- lxd/storage/utils: Adds creationDate argument to VolumeDBCreate
- lxd/db/storage/volumes: Updates GetStoragePoolVolumesWithType to populate creation date
- lxd/db/storage/volumes: Updates GetStoragePoolVolumeWithID to populate creation date
- lxd/db/storage/volumes: Updates GetStoragePoolVolumes to populate creation date
- lxd/db/storage/volumes: Updates GetLocalStoragePoolVolumeSnapshotsWithType to populate creation date
- lxd/db/storage/volumes: Updates GetCustomVolumesInProject to populate creation date
- lxd/db/storage/volume/snapshots: Updates GetStorageVolumeSnapshotWithID to populate creation date
- lxd/db/storage/volume/snapshots: Updates GetExpiredStorageVolumeSnapshots to populate creation date
- lxd/storage/backend/lxd: Use instance's creation date for storage volume creation date in CreateInstance
- lxd/storage/backend/lxd: Updates CreateInstanceFromBackup to populate creation date
- lxd/storage/backend/lxd/patches: Updates patchMissingSnapshotRecords with VolumeDBCreate usage
- lxd/storage/backend/lxd: Use new instance to populate creation date in CreateInstanceFromCopy
- lxd/storage/backend/lxd: Use source snapshot for creation date in RefreshCustomVolume
- lxd/storage/backend/lxd: Use source snapshot for creation date in RefreshInstance
- lxd/storage/backend/lxd: Use new instance for creation date in CreateInstanceFromImage
- lxd/storage/backend/lxd: Use new instance for creation date in CreateInstanceFromMigration
- lxd/storage/backend/lxd: Use new instance for creation date in CreateInstanceSnapshot
- lxd/storage/backend/lxd: Populate creation date in EnsureImage
- lxd/storaga/backend/lxd: Populate creation date in CreateCustomVolume
- lxd/storage/backend/lxd: Populate creation date in CreateCustomVolumeFromCopy
- lxd/storage/backend/lxd: Populate creation date in CreateCustomVolumeFromMigration
- lxd/storage/backend/lxd: Populate creation date in ImportCustomVolume
- lxd/storage/backend/lxd: Populate creation date in CreateCustomVolumeSnapshot
- lxd/storage/backend/lxd: Populate creation date in GenerateInstanceBackupConfig
- lxd/storage/backend/lxd: Populate creation date in ImportInstance
- lxd/storage/backend/lxd: Populate creation date in CreateCustomVolumeFromBackup
- lxc/storage/volume: Adds Created output to cmdStorageVolumeInfo
- lxd/storage/volumes/snapshot: Add creation date to the API output
- test: Add storage volume creation date tests
- shared/netutils/network/linux/cgo: Don't call net.InterfaceByIndex in NetnsGetifaddrs
- lxd/instance/instance/interface: Allow passing host interface info into Render* functions
- lxd/instance/drivers/driver/lxc: Update Render functions to allow receiving list of host interface info
- lxd/instance/drivers/driver/qemu: Render* function interface updates
- lxd/instance: Update Render* function usage
- lxd/main/forknet: netutils.NetnsGetifaddrs usage
- lxc: Adds util to parse device overrides.
- lxc: Use device override parser in lxc copy.
- lxd/instance/instance/interface: Adds hostInterfaces argument to Metrics
- lxd/instance/drivers: Updated Metrics implementation to accept hostInterfaces argument
- lxd/api/metrics: inst.Metrics usage
- Add resolv.conf location under WSL
- doc: remove intro sentence for configuration
- lxc: Fetch profiles and apply device overrides on init/launch.
- po: Updates pot files.
- doc/clustering: clarify that you should remove offline members
- shared/validate: Add CPU set validator
- shared: Use validator function for limits.cpu
- suites/basic: Adds test for overriding device config on init.
- lxd: Sets Location field to hostname for GET /1.0 in devlxd API.
- lxd/instances/lxc: Fix build on MIPS
- doc/instances: add instructions on managing instances
- doc/instances: move QEMU config howto to configuration section
- doc/instances: make titles more consistent
- doc/instances: add instructions for configuring instances
- doc/instances: update Live update column
- doc/instances: update Profiles documentation
- lxd/storage/pools: Initialize pool config if nil
- devlxd: Do not return devlxd info if turned off
- lxd/instance/drivers: Add function to get agent connection info
- lxd/instance/drivers: Use getAgentConnectionInfo()
- lxd/instance/drivers: Add function to store connection info
- lxd/instance/drivers: Notify lxd-agent about devlxd early
- lxd-agent: Add function to store connection info
- client/util: Use ConnectionArgs.Proxy with unix socket client
- lxd-agent: Return correct error when querying devlxd
- lxd-agent: Start devlxd before calling systemd-notify
- lxd: Remove shadowed variable name.
- scripts/bash/lxd-client: Add missing file mount sub-command
- doc: add SFTP to the wordlist
- doc/instances: add instructions for accessing files
- lxd: Check LXD ready state before changing instance
- lxd/network/driver/bridge: Adds MTU DHCP option when using fan mode
- shared/api: Add devlxd structs
- lxd/instance/drivers/qmp: Add function to query hotpluggable CPUs
- lxd/instance/drivers: Add function to hot-(un)plug CPUs
- lxd: Use shared devlxd structs
- lxd-agent/api: Use shared devlxd structs
- doc/instances: add instructions for running commands and logging on
- doc: fix broken link
- test/suites/sql: safe grep usage
- lxd/device/tpm: Handle TPM devices in profiles
- doc/projects: add YouTube video
- doc/migration: add YouTube video
- doc: the location is set in responses from GET /1.0 in devlxd API
- workflows: update package definitions only once
- workflows: use apt-get instead of apt to avoid a warning
- shared/api: fix typos s/cerated/created/
- doc/rest-api: Refresh swagger YAML
- doc: add a reminder to run "make update-api" in contributing doc
- lxd/init: Use strict checking for preseed
- test/lint: Check that doc/rest-api.yaml is kept up to date
- workflows: sort package list and remove duplicated "libdqlite-dev"
- doc: Fix configuration directory in remotes.md
- build(deps): bump actions/dependency-review-action from 2 to 3
- lxd/instances: Comment clarification
- lxd/fsmonitor/drivers/driver/fanotify: Add context to getEvents
- lxd/instances: Limit shutdown concurrency to number of instances or number of CPU cores (which ever is less)
- lxd/daemon: Removes duplicated Stopping instances logging
- test: Increase lxc_remote timeout to 120s
- doc/instances: add example for filtering by location
- lxd/migrate: Remove uneccessary error log entry in migrationSourceWs.Connect
- shared/tcp/tcp/timeout/user: Improve error message in SetUserTimeout
- shared/tcp/tcp/timeouts: Adds userTimeout argument to SetTimeouts
- client: tcp.SetTimeouts default larger user timeout usage
- lxd: tcp.SetTimeouts default larger user timeout usage
- lxd/cluster/gateway: tcp.SetTimeouts usage keeping original 30s timeout
- lxd/storage/backend/lxd: Update DeleteImage to not use GetImageFromAnyProject
- lxd/acme: Switch to github.com/go-acme/lego/v4
- Update gomod
- lxd/devlxd: Populate NIC device hwaddr field from volatile in devlxdDevicesGet
- test: Fix delay in lxd shutdown during devlxd test
- devlxd-client: Adds devices support
- test: Adds devlxd NIC devices hwaddr check
- doc/security: add YouTube link
- lxd/api: Improve top level 404 log message
- lxd/instance/operationlock: Adds instance initiated concept to InstanceOperation
- lxd/instance/drivers: Fixes container initiated instance-shutdown lifecycle event
- lxd/instance/drivers: Drop unnecessary line
- lxd/instance/drivers: Set CPU QEMU template depending on pinning
- lxc/instance/drivers: Dynamically add CPUs on start
- lxd/instance/drivers: Allow CPU hotplugging for VMs
- api: Add cpu_hotplug extension
- doc: Mention limits.cpu live update for VMs
- lxd/storage/utils: Adds generic CompareSnapshots function and type
- lxd/instance/instance/utils: Removes unused CompareSnapshots function
- lxd/instance: Updates instanceCreateAsCopy to use storagePools.CompareSnapshots
- lxd/migrate/instance: Update migrationSink.Do to use storagePools.CompareSnapshots
- lxd/migrate/instance: Remove unused migrationCompareSnapshots
- lxd/storage/backend/lxd: Updates RefreshCustomVolume to use CompareSnapshots
- lxd/instance/instance/utils: Return nil error on success in LoadFromBackup
- lxd/api/internal: Return explicit nil instance on error in internalContainerHookLoadFromReference
- lxd/migrate/storage/volumes: Updates migrationSink.DoStorage to use storagePools.CompareSnapshots
- lxd/migrate/storage/volumes: Removes unused migrationStorageCompareSnapshots
- test: Updates migration tests now that migrating custom volumes uses creation date comparison
- test: Reduce "shellcheck disable=SC2034" usage
- lxd/device/disk: Fix attaching cephfs volumes to VMs
- lxd/cluster/resolve: Don't convert not found error in ResolveTarget to internal server error
- lxc/storage/volume: Fix copying storage volume to a remote from a cluster member
- lxd/storage/drivers/driver/zfs/volumes: Allow zfs.blocksize to control volblocksize
- lxd/storage/utils: Improve error and comment in VolumeDBCreate
- gomod: Update dependencies
- i18n: Update translations from weblate
- gomod: Fix minio build
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のようにして使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc
LXD 5.7 リリースのお知らせ¶
21st of October 2022
はじめに ¶
LXD チームは LXD 5.7 のリリースをお知らせできることにとてもワクワクしています!
今回は軽めのリリースですが、すばらしい小さな追加と多数のバグ修正がなされています。
Enjoy!
新機能とハイライト ¶
ACME / Let's Encrypt サポート ¶
LXD は HTTP ベースの検証をサポートする ACME 互換プロバイダー経由で、自身の証明書を自動的に発行できるようになりました。
もっとも良く知られているプロバイダーは Let's Encrypt です。
設定面では、この機能は新しいいくつかの設定キーを使って使います:
acme.ca_url
acme.domain
acme.email
acme.agree_tos
ほとんどのユーザーは acme.domain
と acme.agree_tos
を設定するだけでセットアップができるでしょう。
ネットワーク面で、この機能を使うための要件がいくつかあります。
検証は HTTP 経由で行われます。この検証は、acme.domain
で設定したサーバーが 80 番と 443 番ポートの両方をパブリックにリッスンする必要があります。80 番ポートはすべてのトラフィックを HTTPS 経由で同じ URL にリダイレクトするように設定されている必要があります。そして 443 番ポートは LXD に到達する必要があります。
ドキュメントには、これを行う HAProxy の基本的な設定が含まれています。
https://linuxcontainers.org/lxd/docs/master/authentication/#tls-server-certificate
ドキュメント : https://linuxcontainers.org/lxd/docs/master/server/
仕様 : https://discuss.linuxcontainers.org/t/lxd-acme-support-for-server-certificate/15142
Cloud-init の検証 ¶
cloud-init ユーザーの多くは、設定を YAML で渡します。しかし今まで、LXD は事前の検証なしで cloud-init にそのデータをそのまま渡していました。
今回、3 つの cloud-init の設定すべてが検証され、この状況が変わりつつあります:
cloud-init.network-config
cloud-init.user-data
cloud-init.vendor-data
ユーザーとベンダーのデータについては、LXD は #cloud-config
タイプであるときだけ、有効な YAML であるかどうかをチェックします。他のデータタイプについては、チェックなしでそのまま通過させます。
LXD は実際の Netplan や Cloud-init の設定を検証するわけではなく、現時点では YAML が適切に展開できるかどうかを検証するだけであることに注意すべきです。cloud-init と netplan で公式の JSON スキーマや同様のものがが簡単に利用できるようになった時点で、これらのチェックを拡張し、データ自体も確認するようにします。
内部メトリクス ¶
これまで、LXD のメトリクス API はインスタンスリソースの使用メトリクスに限定されていました。
このリリースで、多数の内部メトリクスについても導入しました:
lxd_go_alloc_bytes_total
lxd_go_alloc_bytes
lxd_go_buck_hash_sys_bytes
lxd_go_frees_total
lxd_go_gc_sys_bytes
lxd_go_goroutines
lxd_go_heap_alloc_bytes
lxd_go_heap_idle_bytes
lxd_go_heap_inuse_bytes
lxd_go_heap_objects
lxd_go_heap_released_bytes
lxd_go_heap_sys_bytes
lxd_go_lookups_total
lxd_go_mallocs_total
lxd_go_mcache_inuse_bytes
lxd_go_mcache_sys_bytes
lxd_go_mspan_inuse_bytes
lxd_go_mspan_sys_bytes
lxd_go_next_gc_bytes
lxd_go_other_sys_bytes
lxd_go_stack_inuse_bytes
lxd_go_stack_sys_bytes
lxd_go_sys_bytes
lxd_operations_total
lxd_uptime_seconds
これらは、多くの Go の内部メモリー割り当てと goroutine メトリクスに加えて、デーモンの稼働時間や実行中のバックグラウンド操作数などの LXD 特有のメトリクスもいくつかカバーしています。
クラスター加入用トークンの有効期限 ¶
クラスター加入用トークンは LXD のデータベースへのアクセスが許可されるため非常に強力です。
このため、短時間で有効期限切れになるのは理にかなってます。
これまで、LXD が再起動したときに有効期限が切れていましたが、これは非常に予測が難しいため、実際の有効期限もサポートするようになりました。
VM へのプロキシーデバイスのホットプラグ ¶
仮想マシンのプロキシーデバイスは、単純な NAT だけに制限されています。
この制限があるので、ホットプラグを許可しない理由はなく、仮想マシンに対するポートリダイレクションを簡単に追加できます。
すべての変更点(翻訳なし)¶
このリリースでの完全な変更点のリストは次の通りです:
すべてのChangeLogを見る
- doc: split the "doc" target into setup and building
- doc: set up linkcheck and exceptions
- doc: fix links that the link checker regards as broken
- lxd-agent: Only unblock systemd once /dev/lxd/sock is started
- doc: add linkchecker to the GitHub actions
- doc: update IRC link
- lxd/apparmor/instance: allow reading /proc/pid/cpuset
- tests: Respect LXD_SHIFTFS_DISABLE
- doc/metrics: add
lxd_cpu_effective_total
to the list of metrics - lxd/cgroup/abstraction: Update GetIOStats to be more flexible
- lxd/events: Ensure internal listener is only running once
- lxd/cluster/config: Set default values for loki config keys
- docs: Added snap version directory for global remotes
- test: Fix manual shifting protection tests by disabling kernel shifting
- lxd/apparmor: apparmor profile for qemu-img
- lxd: Replace readyChan with waitReady canceller
- lxd: Improve comments
- lxd/api: Don't serve API requests that cause volume mounts until daemon is fully started
- lxd/daemon: Don't wrap line
- lxd/daemon: Move Ready function into init function
- lxd/storage/s3/miniod/miniod: Expose minio start up error to client
- lxd: Only load all instances once during init()
- lxd/instance/drivers/driver/qemu: Dont offer VM support if /dev/vsock is missing
- lxd/device/proxy: Allows hot plugging proxy device (in nat mode) for VMs
- doc/header: update to new menu style for linuxcontainers.org
- shared/validate: Add IsCloudInitUserData and IsYAML
- shared/instance: Validate cloud-init config keys
- Allow forwarded traffic to the lxd bridge for proxy nat devices
- lxd/network/network/utils: Exports UsedByInstanceDevices
- lxd/network/driver/ovn: UsedByInstanceDevices usage
- lxd/device/nic/ovn: Add duplicate static address check
- lxd/network/driver/ovn: Adds parseRouterIntPortIPv4Net and parseRouterIntPortIPv6Net functions
- lxd/network/driver/ovn: Fix typo in Leases
- lxd/network/driver/ovn: Use isInUseByDevice in Leases
- Add client.Operation.WaitContext
- Use WaitContext in client.operation.Wait
- lxd/storage_volumes: Fix API documentation
- lxd/instance_backup: Fix bad swagger data
- lxd/instance_snapshot: Fix bad swagger data
- doc/rest-api: Refresh swagger YAML
- lxd/migration: update proto bindings
- lxd: use go-criu/crit for dump statistics
- lxd/migration: remove stats protobuf definitions
- doc/server: update Loki config
- lxd/storage/drivers/driver/zfs: Don't fail Mount if policy cannot be applied to existing datasets
- lxd/network/openvswitch/ovn: Update LogicalSwitchPortSetDNS to accept IPs for DNS records directly
- lxd/network/driver/ovn: Updated client.LogicalSwitchPortSetDNS usage
- lxd/network/driver/ovn: Renames InstanceDevicePortSetup and InstanceDevicePortDelete
- lxd/device/nic/ovn: InstanceDevicePortStart and InstanceDevicePortStop usage
- lxd/network/driver/ovn: Adds getDHCPv4Reservations function
- lxd/network/driver/ovn: Build DHCPv4 reservation list during setup
- lxd/network/openvswitch/ovn: Adds LogicalSwitchDHCPv4RevervationsSet and logicalSwitchParseExcludeIPs functions
- lxd/network/openvswitch/ovn: Adds LogicalSwitchDHCPv4RevervationsGet function
- lxd/network/openvswitch/ovn: Updates LogicalSwitchPortDeleteDNS and logicalSwitchPortDeleteDNSAppendArgs to optionally clear DNS names but leave entry
- lxd/network/driver/ovn: Updates client.LogicalSwitchPortDeleteDNS usage
- lxd/network/openvswitch/ovn: Check for non-empty DNS UUID in LogicalSwitchPortCleanup
- lxd/network/driver/ovn: Adds InstanceDevicePortAdd and InstanceDevicePortRemove functions
- lxd/device/nic/ovn: Wire up InstanceDevicePortAdd and InstanceDevicePortRemove
- lxd/network/driver/ovn: Ensures DHCPv4 reservation exists if needed in InstanceDevicePortStart
- doc/header: use color variables to support dark theme
- client: move from io/ioutil to io and os packages
- lxc: move from io/ioutil to io and os packages
- lxc-to-lxd: move from io/ioutil to io and os packages
- lxd/apparmor: move from io/ioutil to io and os packages
- lxd/archive: move from io/ioutil to io and os packages
- lxd/backup: move from io/ioutil to io and os packages
- lxd/cgroup: move from io/ioutil to io and os packages
- lxd/cluster: move from io/ioutil to io and os packages
- lxd/db: move from io/ioutil to io and os packages
- lxd/device: move from io/ioutil to io and os packages
- lxd/dnsmasq: move from io/ioutil to io and os packages
- lxd/endpoints: move from io/ioutil to io and os packages
- lxd/instance/drivers: move from io/ioutil to io and os packages
- lxd/migration: move from io/ioutil to io and os packages
- lxd/network: move from io/ioutil to io and os packages
- lxd/resources: move from io/ioutil to io and os packages
- lxd/rsync: move from io/ioutil to io and os packages
- lxd/seccomp: move from io/ioutil to io and os packages
- lxd/storage/drivers: move from io/ioutil to io and os packages
- lxd/storage: move from io/ioutil to io and os packages
- lxd/sys: move from io/ioutil to io and os packages
- lxd/template: move from io/ioutil to io and os packages
- lxd/util: move from io/ioutil to io and os packages
- lxd: move from io/ioutil to io and os packages
- lxd-agent: move from io/ioutil to io and os packages
- lxd-benchmark/benchmark: move from io/ioutil to io and os packages
- lxd-migrate: move from io/ioutil to io and os packages
- lxd-user: move from io/ioutil to io and os packages
- shared: move from io/ioutil to io and os packages
- test: move from io/ioutil to io and os packages
- scripts/bash/lxd-client: Add missing network sub-commands
- lxd/storage/drivers/driver/zfs: Fix incorrect mount dataset policy error check
- lxd/apparmor/qemuimg: Fix QemuImg when using symlinks
- lxd/storage/utils: Fix error in ImageUnpack
- lxd/apparmor/qemuimg: Fix qemuImgProfileTpl policy to support snap
- doc/linting: fix failures about indentation for unordered lists
- lxd/vsock: Add ContextID()
- lxd-agent: Restart server on CID change
- lxd-agent: Fix imports
- lxd/instance/drivers/driver/qemu: comment typo
- lxd-agent: Fix filesystem metrics
- lxd/endpoints: Unexport clusterAddress to avoid confusion
- lxd/state/state: Add LocalConfig to State
- lxd/daemon: Add localConfig to Daemon struct
- lxd/api/1.0: Update daemon localConfig variable on config update
- lxd/api/cluster: Update daemon localConfig when it changes in DB
- lxd/cluster: Use state.LocalConfig.ClusterAddress()
- lxd/cluster: Update tests to populate state.LocalConfig
- lxd: Use d.State().LocalConfig.ClusterAddress
- lxd/node/config/test: Remove use of node.ClusterAddress
- lxd/patches: Remove use of node.ClusterAddress
- lxd/cluster/gateway: Adds state to Gateway
- lxd/cluster/heartbeat: g.state().LocalConfig.ClusterAddress() usage
- lxd/daemon: Pass State to gateway
- lxd/api/cluster: d.State().LocalConfig.ClusterAddress() usage
- lxd/node/config: Removes unused ClusterAddress function
- lxd/cluster: Removed serverCert from NewGateway as can be accessed from state
- lxd/daemon: NewGateway usage
- lxd/instance/instance/utils: Update ValidDevices signature
- lxd/instance/drivers/load: Updates validDevices to accept local and expanded config
- lxd/profiles: instance.ValidDevices usage
- lxd/instance/drivers: instance.ValidDevices usage
- lxd/instance/drivers: Handle device.ErrUnsupportedDevType when loading device
- lxd/cluster/heartbeat: Ensure state.LocalConfig is available in heartbeat
- lxd/api/1.0: s.LocalConfig.HTTPSAddress usage
- lxd/api/cluster: Consistent naming of local config variables in clusterPutBootstrap
- lxd/instances/put: Use local cluster address for local cluster member identification in instancesPut
- lxd/network/driver/bridge: Use local cluster address for local cluster member identification in HandleHeartbeat
- lxd/cluster: Consistent naming of local config variables
- lxd/daemon: Consistent naming of local config variables
- lxd/api/cluster: s.LocalConfig.HTTPSAddress usage
- lxd/certificates: d.State().LocalConfig.HTTPSAddress() usage
- lxd/main/activateifneeded: Remove usage of node.HTTPSAddress
- lxd/node/config/test: Remove usage of HTTPAddress
- lxd/node/config: Remove HTTPSAddress function
- lxd/init: Remove unnecessary duplicate network load request in initDataNodeApply
- lxd/api/cluster: Fixes clusterCertificatePut to use tx.GetNodes to get all members
- lxd: Allow API paths without version
- lxd/cluster/config: Add ACME config keys
- lxd/cluster: Use consistent members terminology when using tx.GetNodes
- lxd/api/cluster: Use consistent members terminology when using tx.GetNodes
- lxd/db/db: Use consistent members terminology when using tx.GetNodes
- lxd/instances/put: Use consistent members terminology when using tx.GetNodes
- lxd/network/driver/ovn: Use consistent members terminology when using tx.GetNodes
- lxd: Use consistent members terminology when using tx.GetNodes
- lxd/api/internal: Only use backup file to instantiate instance if DB not available
- lxd/instance/operationlock: Adds ActionDelete constant
- lxd/instance/drivers: Create operation lock in Delete
- client/lxd/images: Updates CreateImage to stream files from disk to server
- lxd/instance/drivers/driver/common: Sort snapshots by ID if creation datetime matches
- lxd/instance/exec: Use cancel.Canceller instead of context
- lxd/instance/exec: Fix comment typo
- lxd/instance/exec: Convert attachedChildIsDead channel to cancel.Canceller
- shared/netutils/network/linux: Update WebsocketExecMirror to support the channel returned from context.Done()
- lxd/events/connections: Use time.NewTicker in Reader
- lxd/migrate: Don't shadow error in Connect
- client/lxd: Set TCP timeout options in rawWebsocket
- lxd/instance/exec: Adds TCP and application level keepalives and timeouts to each websocket
- client/lxd/instances: Don't modify err in rawSFTPConn when getting underlying TCP connection
- doc/storage: add video links
- Update gomod
- lxd/db/operationtype: Add RenewServerCertificate
- lxd/network/driver/bridge: Don't set BridgeVLANSetDefaultPVID on network start
- lxd/device/nic/bridged: Only remove non-zero default PVID in setupNativeBridgePortVLANs
- lxd/ip/link: Simplify self/master options in bridge vlan management functions
- lxd/device/nic/bridged: link.BridgeVLANDelete and link.BridgeVLANAdd usage
- lxd/acme: Add acme package
- shared/cert: Add function to get CertInfo from bytes
- lxd: Add updateClusterCertificate function
- lxd: Add ACME support
- lxd/api: Add ACME endpoint
- lxd: Run server certificate renewal on config change
- api: Add acme extension
- doc: Add acme config keys
- test: Add test for certificate reversion in clusters
- doc: Add ACME
- doc/authentication: add http-{301,403} backends to HAProxy example
- shared/version: Fix regression in useragent string
- lxd/db/warningtype: Add UnableToUpdateClusterCertificate
- lxc/file: Fix symlink following in cmdFilePull
- lxd/metrics: Add internal metrics
- lxd: Add internal metrics
- lxd: Add warning if cluster certificate cannot be updated
- test: Check warning of cluster certificate test
- doc/server: alpha sort the config namespace list
- doc/server: add
network
andstorage
to the config namespace list - api: Add internal_metrics API extension
- .sphinx: Add
goroutines
anduptime
to wordlist - doc/clustering: create new structure
- doc/clustering: move content into new pages
- doc/clustering: move content out of old page
- doc/clustering: reorder content in About clustering
- doc/clustering: whitespace changes
- lxd/main/interactive: Remove user facing "node" references
- lxd-agent/exec: Improve support for detect fork exec errors
- lxd/instance/drivers/driver/common: Adds ErrExecCommandNotFound and ErrExecCommandNotExecutable constants
- lxd/instance/drivers/driver/lxc/cmd: Updates Wait to convert special exit statuses into errors
- lxd/instance/drivers/driver/qemu/cmd: Updates Wait to convert special exit statuses into errors
- lxd/instance/exec: Improve logging
- lxd/exec: Set c.global.ret to exit status even on error in cmdExec.Run
- lxd/main: Exit with custom exit status even on error
- lxd/instance/exec: Ensure that non-interactive commands still return status code on error in instanceExecPost
- lxd/list: Fixes filtering of raw input in showInstances
- lxc/list: Rename container references to instance references
- doc/api-extensions:
/1.0
doesn't accept a trailing "/" - doc/clustering: clean up "About clustering"
- doc/clustering: clean up "How to form a cluster"
- doc/clustering: clean up "How to manage a cluster"
- doc/clustering: clean up "How to recover a cluster"
- doc/clustering: clean up "How to manage instances in a cluster"
- doc/clustering: clean up "How to configure storage"
- doc/clustering: clean up "Cluster member configuration"
- doc/clustering: clean up "How to configure networks"
- doc/clustering: clean up "How to set up cluster groups"
- doc: Update metrics
- doc/explanation: Fix reference to metrics page
- lxd/device/nic: Adds nicCheckDNSNameConflict function
- lxd/device/nic: Adds case insensitive instance name conflict check for bridged and ovn NICs
- test: Fix bridged NIC tests to accomodate duplicate instance name detection
- doc/rest-api: Add missing Ready state
- doc: add a link to the development process YouTube video
- lxd/main/init/interactive: Export cluster token decode helper
- Rename GetSnapshotExpiry to GetExpiry
- shared/util: Allow seconds in GetExpiry
- lxd/cluster/config: Add cluster.join_token_expiry
- lxd: Add expiry date to cluster join token
- lxd: Check expiry date of cluster join token
- lxd/db/operationtype: Add RemoveExpiredClusterJoinTokens
- lxd: Add cluster task to remove expired cluster join tokens
- doc: Add cluster.join_token_expiry
- shared/api: Add expiry date to ClusterMemberJoinToken
- lxc: Show expiry date in
lxc cluster list-tokens
- api: Add cluster_join_token_expiry API extension
- i18n: Update translations
- test/suites: Test cluster token expiry
- lxd/cluster/config: Add
core.remote_token_expiry
- doc: Add
core.remote_token_expiry
- lxd: Add expiry date to remote token meta data
- lxd: Check expiry date of remote add tokens
- shared/api: Add expiry date to CertificateAddToken
- lxc: Show expiry date in
lxc config trust list-tokens
- test/suites: Test remote token expiry
- api: Add remote_token_expiry API extension
- i18n: Update translations from weblate
- gomod: Update dependencies
- lxd/instance/drivers/driver/qemu: Remove incorrect comment about handle caching in getAgentClient
- lxd/instance/drivers/driver/qemu: Do not attempt to mount & unmount in generateAgentCert
- lxd/instance/drivers/driver/qemu: Make sure instance is running before trying file operations in FileSFTPConn
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のようにして使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc
LXD 5.6 リリースのお知らせ¶
23rd of September 2022
はじめに ¶
LXD チームは LXD 5.6 のリリースをお知らせできることにとてもワクワクしています!
LXD を使ってコンテナや仮想マシンを実行しているか、クラスタリングとプロジェクトを使っているかどうかに関わらず、このリリースはあらゆる面で改良されている、色々なことがある LXD リリースです。
Enjoy!
新機能とハイライト ¶
Grafana Loki サポート ¶
LXD はログメッセージやライフサイクルイベントを、中央の Grafana Loki サーバーに送ることができるようになりました。今回の初期実装は HTTP の Basic 認証をサポートしており、ラベルとして送られるフィールドに関してある程度の柔軟性があります。
仕様 : https://discuss.linuxcontainers.org/t/lxd-stream-lifecycle-and-log-events-to-loki/14992
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/server/
ローカルストレージプール上のオブジェクトストレージ ¶
LXD 5.5 での Ceph を使ったストレージバケットの初期実装に続き、このリリースでは機能が拡張され、他のストレージドライバーすべてで動作するようになりました。
これはローカルストレージドライバーから直接 S3 互換 API を提供できる MinIO project の素晴らしい成果にもとづいています。
仕様 : https://discuss.linuxcontainers.org/t/lxd-object-storage-s3-api/14579
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/howto/storage_buckets/
仮想マシンでの Infiniband サポート ¶
コンテナと仮想マシンが同じように動くようにするための作業が続いています。今回は LXD VM に Infiniband のサポートを追加しました。
これは、infiniband
デバイスタイプを使うことでコンテナと同様に動作します。physical
と sriov
の両方をサポートします。この場合 SR-IOV が機能するためには、システム上で IOMMU が有効になっており、Mellanox ドライバーで "unprobed" の状態のままの SR-IOV バーチャルファンクションが多数存在していることを確認する必要があります。
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/instances/#type-infiniband
プロジェクト内での制限されたネットワークアクセス ¶
LXD のプロジェクトで設定できるオプションや制限の数はまだ増えています。今回は新たに restricted.networks.access
を追加しました。このオプションは管理ネットワークをカンマ区切りのリストで指定します。
設定した場合、制限されたプロジェクトはこれらのネットワークの使用とリストのみを許可します。この機能は特にネットワークとして ovn
を使っていないけれども、プロジェクトごとに 1 つのネットワークを分離して使っているような環境で特に有用です。
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/projects/
instance-ready
ライフサイクルイベント ¶
LXD 5.5 で、/dev/lxd ゲスト API を通してトリガーできる、新たにインスタンスの状態として READY
を導入しました。LXD 5.6 では、新たに instance-ready
ライフサイクルイベントを追加しました。これはインスタンスが利用可能状態になったときに発行されます。
有効な CPU の総数を示すメトリック ¶
最後に、新たなメトリックを LXD のメトリクス API に追加しました。
lxd_cpu_effective_total
は、インスタンスで利用できる CPU の総数をレポートします。これは CPU の使用率を正確に計算するのに役立ちます。
すべての変更点(翻訳なし) ¶
このリリースでの完全な変更点のリストは次の通りです:
すべてのChangeLogを見る
- Doc: Fix typo in howto/storage_backup
- gomod: Update dependencies
- Makefile: Pin xgettext-go to working version
- doc: backquote true and NO_PROXY in doc/server.md
- doc: backquote mac in doc/api-extensions.md
- doc: backquote instance types in events.md
- doc: backqoute cloud-init in doc/cloud-init.md
- Doc: replace Pongo with Pongo2 in doc/image-handling.md
- doc: Capitalize fuse to FUSE in doc/instances.md
- doc: Capitalize candid in doc/api-extensions.md
- doc: Use more backquotes in documents
- doc: Capitalize MAC filtering in doc/instances.md
- doc: Improve uses of backquotes in documents
- Doc: update using backquotes by review suggestions
- lxd/instance/drivers: Adds storage pool to instance-created lifecycle context.
- doc: Correct typo in cephobject.radosgw.endpoint*
- lxd: Correct typo in cephobject.radosgw.endpoint*
- test: Correct typo in cephobject.radosgw.endpoint*
- lxd/db/cluster/update: Adds patch to correct typo in cephobject.radosgsw.endpoint*
- doc: Note AIO requirement
- lxd/db/generate/db/stmt: Add braces around WHERE clause
- lxd/db/cluster/devices: Add Filter structs to Config/Devices
- lxd/db/generate/db/parse: Generate queries with multiple filters
- lxd/db/cluster/mapper: Update generated code
- lxd/instance/instancetype/instance/type: Add instancetype.Filter
- lxd: Remove usage of empty filter structs
- doc/storage: small cleanup to the storage bucket documentation
- doc/storage: group the pool/volume/bucket information
- doc: remove FAQ about live migration
- api: Adds storage_buckets_create_credentials extension
- lxd-generate: Catch 'type' and change to 'entityType'.
- lxd/db/cluster/schema: Apply schema patch version for bucket config typo fix
- doc/migration: add link to lxd-migrate tutorial on Discourse
- doc/upgrading: clarify database updates
- doc/storage/btrfs: add YouTube link
- doc/storage/lvm: add YouTube link
- client: Update CreateStoragePoolBucket to return create-time admin key
- lxc/storage/bucket: Display generated admin key in cmdStorageBucketCreate
- lxd/storage/buckets: Generate admin key on bucket creation
- test: Update storage buckets tests to check for initial credentials
- i18n: Update translation templates
- doc/rest-api: Refresh swagger YAML
- doc/storage: make navigation titles more consistent
- lxd/storage/buckets: Handle missing URL in storagePoolBucketsGet
- api: metric: lxd_cpu_seconds_total: fix help text, floats
- lxd/db/generate/db/method: Fix external package support
- lxd/db/generate/db/stmt: Add joinon tag
- lxd/db/generate/db/stmt: Don't allow joins and leftjoins at the same time
- lxd/db/generate/db/stmt: Use joinon tag for ID query generation
- lxd-generate: Adds method to get table and column from join config.
- lxd-generate: Use join table in order by clause.
- lxd-generate: Use join table config in create statement subselect.
- lxd-generate: Use join table config in update statement subselect.
- lxd-generate: Updates whereClause to use join config.
- lxd/db/generate: Use joinTable
- lxd: Change project rename response to operation in swagger.
- doc: Regenerate swagger.
- lxd/storage/buckets: Detect missing bucket URL in storagePoolBucketGet
- lxd/storage/utils: Improve errors
- lxd/storage/utils: Return explicit nil on error in VolumeDBGet
- lxd/storage/utils: Prevent using VolumeDBCreate to create bucket volume records
- lxd/storage/drivers/volume: Adds VolumeTypeBucket type
- lxd/storage/drivers/interface: Use Volume type for bucket functions
- lxd/storage/drivers/driver/common: Updates bucket functions to accept Volume type
- lxd/storage/drivers/driver/cephobject/buckets: Use consistent minio s3 client context names
- lxd/storage/drivers/driver/cephobject: Improved comments
- lxd/storage/drivers/driver/cephobject/buckets: Updates to use Volume type for bucket config
- lxd/storage/utils: Adds BucketDBCreate and BucketDBDelete functions
- lxd/storage/backend/lxd: Switch to using Volume for buckets
- lxd/storage/backend/lxd: Removes unused GetBucket
- lxd/storage/drivers/bucket: Removes unused Bucket type
- doc/requirements: correct statement about AIO
- lxd/cgroup: Add GetEffecticeCPUs
- lxd/metrics: Add lxd_cpu_effective_total
- api: metrics_cpu_effective_total
- lxd/db/storage/buckets: Allow cross-pool bucket listing in GetStoragePoolBuckets
- lxd/storage/buckets: tx.GetStoragePoolBuckets usage
- lxd/storage/storage: tx.GetStoragePoolBuckets usage
- lxd/storage/drivers/driver/zfs: Adds ensureInitialDatasets function
- lxd/storage/drivers/driver/cephobject/buckets: Ensure context cancel is run after revert.Fail
- doc: improve systemd-resolved integration by adding stop command
- doc: resolvectl status doesn't require sudo
- doc: remove sentence about disk support for VMs
- doc/network: add note that static leases require MAC as identifier
- doc/storage/volumes: add
--all-projects
to documentation - lxd/apparmor: Deref compress commands
- shared/api/event/lifecycle: Add instance ready constant
- lxd/lifecycle: Add InstanceReady lifecycle event
- lxd/devlxd: Send InstanceReady lifecycle event
- doc/events: Add instance-ready lifecycle event
- test: Test InstanceReady lifecycle event
- doc: add configuration and script for markdownlint
- doc: add a target for running markdownlint
- doc: add an action to run markdownlint on the docs
- doc: fix markdown errors for MD022
- doc: fix markdown errors for MD004-MD007
- doc: fix markdown errors for MD034
- doc: fix markdown errors for MD032
- doc: fix markdown errors for MD012
- doc: fix markdown errors for MD031
- doc: fix markdown errors for MD027
- doc: do not use emphasis
- doc: fix markdown errors for MD026
- doc: fix markdown errors for MD038
- doc: fix markdown errors for MD010
- doc: fix markdown errors for MD038
- doc: fix markdown errors for MD002
- lxd/device: Support physical infiniband for VMs
- doc: add related links to the start page
- test: Add 60s timeout to lxc commands
- test: Add clean up of storage buckets in kill_lxd
- scripts/empty-lxd.sh: Add emptying of storage buckets
- test: Allow automatic removal of loop devices in deconfigure_loop_device
- lxd/db/networks: Removes unused NetworkNodes function
- lxd/db/storage/pools: Removes unused StoragePoolNodes function
- lxd/instance/drivers/driver/lxc: Removes profiles argument from lxcLoad
- lxd/instance/drivers/driver/common: Removes profiles argument from expandConfig
- lxd/instance/drivers/driver/qemu: Removes profiles argument from qemuLoad
- lxd/instance: Removes profiles argument from load
- lxd: instance.Load usage
- lxd/profiles/utils: instance.Load usage in doProfileUpdateInstance
- lxd-agent/server: Log original error during write error in createCmd
- lxd/daemon: Log original error during write error in createCmd
- lxd/operations/websocket: Don't return close errors in Render
- lxd/instance/drivers: Change common.Project from string to api.Project type
- lxd/instance: Updates instance load functions to accept api.Project
- lxd/device/disk: instance.Load usage
- lxd/project/permissions: Update AllowSnapshotCreation to accept api.Project
- lxd/instance: instance.Load and project.AllowSnapshotCreation usage
- lxd/instance/snapshot: project.AllowSnapshotCreation usage
- lxd/instances: instance.Load usage
- lxd/storage/backend/lxd: instance.Load usage
- lxd/storage/utils: Updates VolumeUsedByProfileDevices to pass api.Project to callback function
- lxd/storage/volumes/utils: storagePools.VolumeUsedByProfileDevices and instance.Load usage
- lxd/profiles/utils: Updates profile management functions to load projects
- lxd/profiles/utils: Fix incorrect handling of error in doProfileUpdate
- lxd/storage/volumes/snapshot: project.AllowSnapshotCreation usage
- lxd/storage/volumes: instance.Load usage
- lxd/project/project: Updates ProfileProject to return effective api.Project info
- lxd/profiles: project.ProfileProject usage
- lxd/project/project: Updates NetworkProject to return requested project's info
- lxd/networks: NetworkProject usage
- lxd/project/project: Align StorageBucketProject with StorageVolumeProject return values
- lxd/storage/buckets: project.StorageBucketProject usage
- lxd/instance: Change Project() to return api.Project
- lxd/instance: inst.Project() usage
- lxd/device/disk: inst.Project() usage
- lxd/device/proxy: inst.Proxy() usage
- lxd/device: inst.Project() usage
- lxd/backup: inst.Project() usage
- lxd/seccomp: inst.Project() usage
- lxd/maas: inst.Project() usage
- lxd/lifecycle: inst.Project() usage
- lxd/network: inst.Project() usage
- lxd/storage/backend/lxd: inst.Project() usage
- lxd/apparmor: inst.Project() usage
- lxd: inst.Project() usage
- lxc-to-lxd: Handle linux32 and linux64 arch personalities
- doc/network/bgp: add some clarifications to the BGP docs
- doc/metrics: add a list of provided metrics
- lxd/instance/drivers/driver/qemu: Adds support for multi-queue macvlan NICs in VMs
- lxd/backup: Add Profiles field do Config struct
- lxd/storage: Add profiles to backup data
- lxd/db/generate/db/parse: Add ParseStmt
- lxd/db/generate/db/stmt: Parse 'objects' directive result to create 'objects-by'
- lxd/db/cluster/instance/profiles: Add 'objects' directive for instance_profiles and certificate_projects
- lxd/db/generate/README: Add lxd-generate README
- lxd/db/cluster/mapper: Update generated code
- doc/migration: Document lxc-to-lxd tool
- api: Adds projects_networks_restricted_access extension
- doc/projects: Documents restricted.networks.access
- lxd/api/project: Adds restricted.networks.access
- lxd/project/project: Adds NetworkAllowed function
- lxd/network: Uses project.NetworkAllowed to check access to networks
- lxd/networks: Prevent creation of managed networks not accessible by project
- doc/storage/dir: add link to the YouTube video
- lxd/project/permissions: Updates checkRestrictions to check NICs against restricted.networks.access setting
- test: Updates project restrictions tests to check for restricted.networks.access setting
- lxd/apparmor: allow rw access to /sys/fs/bpf
- api: Adds storage_buckets_local extension
- shared/util: Adds HTTPSStorageBucketsDefaultPort constant
- lxd/endpoints: StorageBucketsServer listener
- lxd/api/1.0: Updates doApi10UpdateTriggers to handle core.storage_buckets_address
- scripts/bash/lxd-client: Adds core.storage_buckets_address
- lxd/node/config: Adds core.storage_buckets_address support
- lxd/storage/s3/types: Add S3 types
- lxd/storage/s3/headers: Adds AuthorizationHeaderAccessKey function
- lxd/storage/s3/policy: Adds policy generator
- lxd/storage/s3/miniod: Adds miniod package
- gomod: Adds github.com/minio/madmin-go
- lxd/db/storage/buckets: Adds GetStoragePoolLocalBucket function
- lxd/db/storage/buckets: Adds GetStoragePoolLocalBucketByAccessKey function
- lxd/db/storage/buckets: Uses GetStoragePoolLocalBucketByAccessKey in CreateStoragePoolBucketKey and UpdateStoragePoolBucketKey
- lxd/storage/pool/interface: Adds ActivateBucket
- lxd/storage/pool/interface: Adds GetBucketURL definition
- lxd/storage/backend/mock: Adds ActivateBucket
- lxd/storage/backend/mock: Adds GetBucketURL
- lxd/storage/backend/lxd: Implements local bucket support
- lxd/storage/drivers: Renames BucketURL to GetBucketURL for consistency
- lxd/storage/drivers/driver/dir: Add bucket support
- lxd/storage/drivers/driver/lvm: Add bucket support
- lxd/storage/drivers/driver/btrfs: Add bucket support
- lxd/storage/drivers/driver/zfs: Add bucket support
- lxd/storage/buckets: Use pool.GetBucketURL()
- lxd/api: Adds storageBucketsServer
- lxd/daemon: Initialise StorageBucketsServer listener in init
- lxd/daemon: Shutdown minio processes during Stop
- doc: Updates docs for local storage bucket support
- test: Update storage buckets tests
- lxd/db/generate/db/mapping: Add field-to-sql clause conversion helpers
- lxd/db/generate/db/stmt: Rework statement generation
- lxd/db/cluster/nodes: Generate ID statement for nodes
- lxd/db/cluster/snapshots: Remove 'via' tag and replace with 'joinon' tag
- lxd/db/cluster/mapper: Update generated code
- lxd/db/generate/db/stmt: Expect full database package path in arguments
- lxd/db/generate/db/stmt: Fallback to database package for parsing existing variables
- lxd/db/generate/README: Update lxd-generate README
- lxd/network/driver/bridge: Consider a dnsmasq start failure as a network start failure
- lxd/warnings: Fix
lxc warning show
- doc: move live migration content
- doc: cosmetic changes
- lxc/config/default: Change DefaultConfig to a function
- lxc/config: DefaultConfig usage
- test: Add tests to check for
lxc warning show
functionality - doc/migration: clarify how to enable live migration for VMs
- GetAllXattr: handle overlay filtering
- lxd/db: Remove GetLocalStoragePoolVolumes and storagePoolVolumesGet functions
- lxd/db/storage/pools: Removes GetStoragePoolVolume
- lxd/storage/utils: Updates VolumeDBGet to return *db.StorageVolume and use tx.GetStoragePoolVolume
- lxd/storage/backend/lxd: Replace b.state.DB.Cluster.GetLocalStoragePoolVolume with VolumeDBGet usage
- lxd/api/internal: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/cluster/connect: Replace s.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/daemon/storage: Replace s.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/db/storage/volume/snapshots: Replace c.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/db/storage/volumes: Replace c.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/device/disk: Replace d.state.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/storage/pool/load: Replace state.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/storage/volumes: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/storage/volumes/backup: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/storage/volumes/snapshot: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/storage/volumes/state: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
- lxd/db/storage/volumes: Removes inefficient storagePoolVolumeGetType and associated functions
- lxd/db: Removes storageVolumeIDsGet and storagePoolVolumeReplicateIfCeph
- lxd/db/generate/db/mapping: Use 'join' tag to deduce column name
- lxd/db/generate/db/mapping: Override joined column name with 'joinon' tag
- lxd/storage/s3/miniod: Use a sub-directory for minio on storage volume
- shared/subprocess/proc: Adds context support
- shared/subprocess/manager: Removes redundant error return value from NewProcessWithFds
- lxd/archive/archive: subprocess usage
- lxd/device: subprocess usage
- lxd/instance/drivers/driver/qemu: subprocess usage
- lxd/network/driver/bridge: subprocess usage
- lxd/apparmor/archive: Use non-deferenced outputPath to derive profile name in archiveProfile
- gomod: Updates dependencies
- shared/logger/log: Don't modify the global logrus standard logger
- shared/util/linux: Update GetAllXattr implementation using github.com/pkg/xattr
- gomod: Adds github.com/pkg/xattr
- shared/idmap/idmapset/linux: Improve errors in doUidshiftIntoContainer
- shared/idmap/idmapset/linux: Go vet fixes in doUidshiftIntoContainer
- lxd: Fix calls to inst.Project().Name when used in fmt.Sprintf and related functions
- Makefile: Fix shellcheck version detection
- Makefile: Use same pinned version of golangci-lint as github workflows
- lxd/db/generate/db/method: Use QueryRowContext for one-row queries
- lxd/db/cluster/mapper: Update generated code
- lxd/db/query/objects: Include context in db query helpers
- lxd/db/generate/db/method: Pass context to query helpers
- lxd/db/cluster/mapper: Update generated code
- lxd: Pass transaction ctx through to query helpers
- lxd/test: Update tests
- lxd/db/db: Include context in node Transaction
- lxd: Update node.Transaction usages
- lxd: Pass node transaction ctx to query helpers
- lxd/db/schema/schema: Add context to schema updates
- lxd/firewall/drivers/drivers/nftables: Pass rules via stdin rather than as command arguments
- lxd/networks: Don't log all networks initialized if they weren't yet
- gomod: go mod tidy
- lxd/networks: Start deferred networks depending on physical interfaces before logical ones
- lxd/storage/backend/lxd: Log pool names in Mount and Unmount
- lxd/db/query/retry: Don't log not found errors in Retry
- lxd/network/openvswitch/ovn: Check that the chassis is a member of the correct chassis group in ChassisGroupChassisDelete
- lxd/db/images: Adds project support to UpdateImageLastUseDate
- lxd/db/images: Adds project and custom last used date support to SetImageCachedAndLastUseDate
- lxd/db/images: Make CreateImage project argument and explicit string type
- lxd/images: d.db.Cluster.SetImageCachedAndLastUseDate usage
- lxd/daemon/images: d.db.Cluster.SetImageCachedAndLastUseDate usage
- lxd/daemon/images: Ensure cached property is maintained when using existing image from another project
- lxd/instance: s.DB.Cluster.UpdateImageLastUseDate usage
- test/README: Use backticks for test env var options
- test/README: Clarify options which enable tests
- test/README: Removes unused LXD_SKIP_STATIC
- test: Adds LXD_SKIP_TESTS env var option
- lxd/db: Replace usage of QueryRow with QueryRowContext
- lxd/db: Add context arg to more tx methods
- lxd/db: Replace tx.Query with tx.QueryContext
- lxd: Pass transaction ctx to QueryContext
- lxd/patches: Use context.TODO for db patch calls to query helpers
- lxd/test: Update tests
- lxd/db/generate/db/method: Remove superfluous error check for Get
ID - lxd/db/cluster/mapper: Update generated code
- lxd/device: Support sr-iov infiniband for VMs
- doc/instances: Add VM to supported instance types for infiniband devices
- build(deps): bump actions/checkout from 2 to 3
- build(deps): bump actions/setup-go from 2 to 3
- doc/performance: create new pages
- doc/performance: move content from production setup
- shared/osarch: Improve 32bit arm handling
- shared/validate/validate: Add IsX509Certificate validator
- shared/validate/validate: Remove List validators
- lxd/network/driver/physical: Update usages
- lxd/network/driver/physical: Fix ipv4.routes validation
- lxd/storage/drivers/driver/dir/volumes: Don't allow creating a volume that already exists on disk
- lxd/storage/backend/lxd: Delete local volume if bucket creation fails
- lxd/storage/drivers/volume: Create bucket local storage volumes using same permissions as custom volumes
- lxd/storage/s3/miniod/miniod: Run MinIO as LXD's unprivilged user
- lxd/storage/backend/lxd: miniod.EnsureRunning usage
- doc: update footer to display correctly
- test: Adds LXD_REQUIRED_TESTS support
- test: Updates test_storage_buckets to check for minio command
- lxd/device/device/common: Fix project name in device logger
- doc/security: edit information about name leakage
- doc/performance: clean up information about txqueuelen
- doc/performance: clean up page about production setup server settings
- doc/performance: move production setup page
- doc/metrics: make part of the Metrics documentation reusable
- doc/performance: update the performance tuning information
- doc/spellcheck: add benchmarking to wordlist
- Drop
replace
directive in go.mod - Update gomod
- client: Handle nil args in CopyImage
- doc/performance: add how-to guide for benchmarking
- doc/lxc-to-lxd: update installation command
- doc/storage: add information about special custom volumes
- doc/storage: add link to YouTube video about storage volumes
- doc/storage: add links between storage documentation
- doc/instance API: add link to YouTube video
- lxd/events: Add simpleListenerConnection
- lxd/cluster/config: Add Loki config keys
- lxd/events: Remove closed listeners
- lxd/events: Add internal listener
- lxd/daemon: Add internal event listener to Daemon
- Update gomod
- lxd/loki: Support Loki server
- lxd: Support Loki server
- doc/server: Add Loki config
- api: Add loki API extension
- i18n: Update translations from weblate
- gomod: Update dependencies
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のようにして使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc
Older news¶
- 19th of August 2022
- 19th of August 2022
- 25th of July 2022
- 24th of June 2022
- 26th of May 2022
- 28th of April 2022
- 4th of April 2022
- 14th of March 2022
- 12th of February 2022
- 3rd of February 2022
- 15th of January 2022
- 10th of December 2021
- 6th of November 2021
- 26th of October 2021
- 1st of October 2021
- 3rd of September 2021
- 6th of August 2021
- 17th of July 2021
- 9th of July 2021
- 14th of June 2021
- 4th of June 2021
- 7th of May 2021
- 6th of May 2021
- 10th of April 2021
- 5th of March 2021
- 5th of February 2021
- 2nd of February 2021
- 8th of January 2021
- 11th of December 2020
- 12th of November 2020
- 22nd of October 2020
- 16th of October 2020
- 18th of September 2020
- 29th of August 2020
- 14th of August 2020
- 12th of August 2020
- 31st of July 2020
- 1st of July 2020
- 25th of June 2020
- 5th of June 2020
- 8th of May 2020
- 21st of April 2020
- 31st of March 2020
- 20th of March 2020
- 6th of March 2020
- 13th of February 2020
- 30th of January 2020
- 16th of January 2020
- 2nd of October 2019
- 6th of September 2019
- 9th of August 2019
- 11th of July 2019
- 21st of June 2019
- 17th of June 2019
- 9th of May 2019
- 5th of April 2019
- 6th of March 2019
- 7th of February 2019
- 8th of January 2019
- 12th of December 2018
- 22nd of November 2018
- 9th of November 2018
- 11th of October 2018
- 11th of September 2018
- 21st of August 2018
- 14th of August 2018
- 27th of July 2018
- 22nd of June 2018
- 5th of June 2018
- 15th of May 2018
- 2nd of April 2018
- 20th of December 2017
- 15th of November 2017
- 19th of October 2017
- 17th of October 2017
- 19th of September 2017
- 22nd of August 2017
- 25th of July 2017
- 27th of June 2017
- 30th of May 2017
- 11th of May 2017
- 25th of April 2017
- 20th of March 2017
- 8th of March 2017
- 2nd of March 2017
- 28th of February 2017
- 24th of February 2017
- 20th of February 2017
- 16th of February 2017
- 15th of February 2017
- 26th of January 2017
- 24th of January 2017
- 20th of December 2016
- 24th of November 2016
- 24th of November 2016
- 24th of November 2016
- 24th of November 2016
- 23rd of November 2016
- 22nd of November 2016
- 25th of October 2016
- 5th of October 2016
- 5th of October 2016
- 4th of October 2016
- 27th of September 2016
- 14th of September 2016
- 16th of August 2016
- 15th of August 2016
- 28th of June 2016
- 30th of May 2016
- 16th of May 2016
- 11th of April 2016
- 6th of April 2016
- 31st of March 2016
- 28th of March 2016
- 23rd of March 2016
- 21st of March 2016
- 16th of March 2016
- 11th of March 2016
- 7th of March 2016
- 2nd of March 2016
- 23rd of February 2016
- 18th of February 2016
- 10th of February 2016
- 26th of January 2016
- 19th of January 2016
- 4th of January 2016
- 21st of December 2015
- 8th of December 2015
- 24th of November 2015
- 10th of November 2015
- 27th of October 2015
- 14th of October 2015
- 25th of September 2015
- 15th of September 2015
- 1st of September 2015
- 18th of August 2015
- 4th of August 2015
- 21st of July 2015
- 7th of July 2015
- 23rd of June 2015
- 9th of June 2015
- 26th of May 2015
- 12th of May 2015
- 29th of April 2015
- 28th of April 2015
- 14th of April 2015
- 7th of April 2015
- 24th of March 2015
- 17th of March 2015
- 10th of March 2015
- 27th of February 2015
- 13th of February 2015