API 拡張
以下の変更は 1.0 API が確定した後に LXD API に導入されました。
それらの変更は全て後方互換であり、 GET /1.0/
の api_extensions
を
見ることでクライアントツールにより検出可能です。
storage_zfs_remove_snapshots
storage.zfs_remove_snapshots
というデーモン設定キーが導入されました。
値の型は boolean でデフォルトは false です。 true にセットすると、スナップショットを 復元しようとするときに必要なスナップショットを全て削除するように LXD に 指示します。
ZFS でスナップショットの復元が出来るのは最新のスナップショットに限られるので、 この対応が必要になります。
container_host_shutdown_timeout
boot.host_shutdown_timeout
というコンテナー設定キーが導入されました。
値の型は integer でコンテナーを停止しようとした後 kill するまでどれだけ 待つかを LXD に指示します。
この値は LXD デーモンのクリーンなシャットダウンのときにのみ使用されます。 デフォルトは 30s です。
container_stop_priority
boot.stop.priority
というコンテナー設定キーが導入されました。
値の型は integer でシャットダウン時のコンテナーの優先度を指示します。
コンテナーは優先度レベルの高いものからシャットダウンを開始します。
同じ優先度のコンテナーは並列にシャットダウンします。デフォルトは 0 です。
container_syscall_filtering
コンテナー設定キーに関するいくつかの新しい syscall が導入されました。
security.syscalls.blacklist_default
security.syscalls.blacklist_compat
security.syscalls.blacklist
security.syscalls.whitelist
使い方は configuration.md を参照してください。
auth_pki
これは PKI 認証モードのサポートを指示します。
このモードではクライアントとサーバは同じ PKI によって発行された証明書を使わなければなりません。
詳細は security.md を参照してください。
container_last_used_at
GET /1.0/containers/<name>
エンドポイントに last_used_at
フィールドが追加されました。
これはコンテナーが開始した最新の時刻のタイムスタンプです。
コンテナーが作成されたが開始はされていない場合は last_used_at
フィールドは
1970-01-01T00:00:00Z
になります。
etag
関連性のある全てのエンドポイントに ETag ヘッダのサポートが追加されました。
この変更により GET のレスポンスに次の HTTP ヘッダが追加されます。
- ETag (ユーザーが変更可能なコンテンツの SHA-256)
また PUT リクエストに次の HTTP ヘッダのサポートが追加されます。
- If-Match (前回の GET で得られた ETag の値を指定)
これにより GET で LXD のオブジェクトを取得して PUT で変更する際に、 レースコンディションになったり、途中で別のクライアントがオブジェクトを 変更していた (訳注: のを上書きしてしまう) というリスク無しに PUT で 変更できるようになります。
patch
HTTP の PATCH メソッドのサポートを追加します。
PUT の代わりに PATCH を使うとオブジェクトの部分的な変更が出来ます。
usb_devices
USB ホットプラグのサポートを追加します。
https_allowed_credentials
LXD API を全てのウェブブラウザで (SPA 経由で) 使用するには、 XHR の度に 認証情報を送る必要があります。それぞれの XHR リクエストで "withCredentials=true" とセットします。
Firefox や Safari などいくつかのブラウザは
Access-Control-Allow-Credentials: true
ヘッダがないレスポンスを受け入れる
ことができません。サーバがこのヘッダ付きのレスポンスを返すことを保証するには
core.https_allowed_credentials=true
と設定してください。
image_compression_algorithm
この変更はイメージを作成する時 (POST /1.0/images
) に compression_algorithm
というプロパティのサポートを追加します。
このプロパティを設定するとサーバのデフォルト値 (images.compression_algorithm
) をオーバーライドします。
directory_manipulation
LXD API 経由でディレクトリを作成したり一覧したりでき、ファイルタイプを X-LXD-type ヘッダに付与するようになります。 現状はファイルタイプは "file" か "directory" のいずれかです。
container_cpu_time
この拡張により実行中のコンテナーの CPU 時間を取得できます。
storage_zfs_use_refquota
この拡張により新しいサーバプロパティ storage.zfs_use_refquota
が追加されます。
これはコンテナーにサイズ制限を設定する際に "quota" の代わりに "refquota" を設定する
ように LXD に指示します。また LXD はディスク使用量を調べる際に "used" の代わりに
"usedbydataset" を使うようになります。
これはスナップショットによるディスク消費をコンテナーのディスク利用の一部と みなすかどうかを実質的に切り替えることになります。
storage_lvm_mount_options
この拡張は storage.lvm_mount_options
という新しいデーモン設定オプションを
追加します。デフォルト値は "discard" で、このオプションにより LVM LV で使用する
ファイルシステムの追加マウントオプションをユーザーが指定できるようになります。
network
LXD のネットワーク管理 API 。
次のものを含みます。
/1.0/networks
エントリーに "managed" プロパティを追加- ネットワーク設定オプションの全て (詳細はconfiguration.md を参照)
POST /1.0/networks
(詳細は RESTful API を参照)PUT /1.0/networks/<entry>
(詳細は RESTful API を参照)PATCH /1.0/networks/<entry>
(詳細は RESTful API を参照)DELETE /1.0/networks/<entry>
(詳細は RESTful API を参照)- "nic" タイプのデバイスの
ipv4.address
プロパティ (nictype が "bridged" の場合) - "nic" タイプのデバイスの
ipv6.address
プロパティ (nictype が "bridged" の場合) - "nic" タイプのデバイスの
security.mac_filtering
プロパティ (nictype が "bridged" の場合)
profile_usedby
プロファイルを使用しているコンテナーをプロファイルエントリーの一覧の used_by フィールド として新たに追加します。
container_push
コンテナーが push モードで作成される時、クライアントは作成元と作成先のサーバ間の プロキシとして機能します。作成先のサーバが NAT やファイアウォールの後ろにいて 作成元のサーバと直接通信できず pull モードで作成できないときにこれは便利です。
container_exec_recording
新しい boolean 型の "record-output" を導入します。これは /1.0/containers/<name>/exec
のパラメータでこれを "true" に設定し "wait-for-websocket" を fales に設定すると
標準出力と標準エラー出力をディスクに保存し logs インタフェース経由で利用可能にします。
記録された出力の URL はコマンドが実行完了したら操作のメタデータに含まれます。
出力は他のログファイルと同様に、通常は 48 時間後に期限切れになります。
certificate_update
REST API に次のものを追加します。
- 証明書の GET に ETag ヘッダ
- 証明書エントリーの PUT
- 証明書エントリーの PATCH
container_exec_signal_handling
クライアントに送られたシグナルをコンテナー内で実行中のプロセスにフォワーディング
するサポートを /1.0/containers/<name>/exec
に追加します。現状では SIGTERM と
SIGHUP がフォワードされます。フォワード出来るシグナルは今後さらに追加される
かもしれません。
gpu_devices
コンテナーに GPU を追加できるようにします。
container_image_properties
設定キー空間に新しく image
を導入します。これは読み取り専用で、親のイメージのプロパティを
含みます。
migration_progress
転送の進捗が操作の一部として送信側と受信側の両方に公開されます。これは操作のメタデータの "fs_progress" 属性として現れます。
id_map
security.idmap.isolated
, security.idmap.isolated
,
security.idmap.size
, raw.id_map
のフィールドを設定できるようにします。
network_firewall_filtering
ipv4.firewall
と ipv6.firewall
という 2 つのキーを追加します。
false に設置すると iptables の FORWARDING ルールの生成をしないように
なります。 NAT ルールは対応する ipv4.nat
や ipv6.nat
キーが true に
設定されている限り引き続き追加されます。
ブリッジに対して dnsmasq が有効な場合、 dnsmasq が機能する (DHCP/DNS) ために必要なルールは常に適用されます。
network_routes
ipv4.routes
と ipv6.routes
を導入します。これらは LXD ブリッジに
追加のサブネットをルーティングできるようにします。
storage
LXD のストレージ管理 API 。
これは次のものを含みます。
GET /1.0/storage-pools
-
POST /1.0/storage-pools
(詳細は RESTful API を参照) -
GET /1.0/storage-pools/<name>
(詳細は RESTful API を参照) POST /1.0/storage-pools/<name>
(詳細は RESTful API を参照)PUT /1.0/storage-pools/<name>
(詳細は RESTful API を参照)PATCH /1.0/storage-pools/<name>
(詳細は RESTful API を参照)-
DELETE /1.0/storage-pools/<name>
(詳細は RESTful API を参照) -
GET /1.0/storage-pools/<name>/volumes
(詳細は RESTful API を参照) -
GET /1.0/storage-pools/<name>/volumes/<volume_type>
(詳細は RESTful API を参照) -
POST /1.0/storage-pools/<name>/volumes/<volume_type>
(詳細は RESTful API を参照) -
GET /1.0/storage-pools/<pool>/volumes/<volume_type>/<name>
(詳細は RESTful API を参照) POST /1.0/storage-pools/<pool>/volumes/<volume_type>/<name>
(詳細は RESTful API を参照)PUT /1.0/storage-pools/<pool>/volumes/<volume_type>/<name>
(詳細は RESTful API を参照)PATCH /1.0/storage-pools/<pool>/volumes/<volume_type>/<name>
(詳細は RESTful API を参照)-
DELETE /1.0/storage-pools/<pool>/volumes/<volume_type>/<name>
(詳細は RESTful API を参照) -
全てのストレージ設定オプション (詳細は configuration.md を参照)
file_delete
/1.0/containers/<name>/files
の DELETE メソッドを実装
file_append
X-LXD-write
ヘッダを実装しました。値は overwrite
か append
のいずれかです。
network_dhcp_expiry
ipv4.dhcp.expiry
と ipv6.dhcp.expiry
を導入します。 DHCP のリース期限を設定
できるようにします。
storage_lvm_vg_rename
storage.lvm.vg_name
を設定することでボリュームグループをリネームできるようにします。
storage_lvm_thinpool_rename
storage.thinpool_name
を設定することで thinpool をリネームできるようにします。
network_vlan
macvlan
ネットワークデバイスに vlan
プロパティを新たに追加します。
これを設定すると、指定した VLAN にアタッチするように LXD に指示します。 LXD はホスト上でその VLAN を持つ既存のインタフェースを探します。 もし見つからない場合は LXD がインタフェースを作成して macvlan の親として 使用します。
image_create_aliases
POST /1.0/images
に aliases
フィールドを新たに追加します。イメージの
作成/インポート時にエイリアスを設定できるようになります。
container_stateless_copy
POST /1.0/containers/<name>
に live
という属性を新たに導入します。
false に設定すると、実行状態を転送しようとしないように LXD に伝えます。
container_only_migration
container_only
という boolean 型の属性を導入します。 true に設定すると
コンテナーだけがコピーや移動されるようになります。
storage_zfs_clone_copy
ZFS ストレージプールに storage_zfs_clone_copy
という boolean 型のプロパティを導入します。
false に設定すると、コンテナーのコピーは zfs send と receive 経由で行われる
ようになります。これにより作成先のコンテナーは作成元のコンテナーに依存しないように
なり、 ZFS プールに依存するスナップショットを維持する必要がなくなります。
しかし、これは影響するプールのストレージの使用状況が以前より非効率的になる
という結果を伴います。
このプロパティのデフォルト値は true です。つまり明示的に "false" に設定
しない限り、空間効率の良いスナップショットが使われます。
unix_device_rename
path
を設定することによりコンテナー内部で unix-block/unix-char デバイスをリネーム
できるようにし、ホスト上のデバイスを指定する source
属性が追加されます。
path
を設定せずに source
を設定すると、 path
は source
と同じものとして
扱います。 source
や major
/minor
を設定せずに path
を設定すると
source
は path
と同じものとして扱います。ですので、最低どちらか 1 つは
設定しなければなりません。
storage_rsync_bwlimit
ストレージエンティティを転送するために rsync が起動される場合に
rsync.bwlimit
を設定すると使用できるソケット I/O の量に上限を
設定します。
network_vxlan_interface
ネットワークに tunnel.NAME.interface
オプションを新たに導入します。
このキーは VXLAN トンネルにホストのどのネットワークインタフェースを使うかを 制御します。
storage_btrfs_mount_options
btrfs ストレージプールに btrfs.mount_options
プロパティを導入します。
このキーは btrfs ストレージプールに使われるマウントオプションを制御します。
entity_description
これはエンティティにコンテナー、スナップショット、ストレージプール、ボリュームの ような説明を追加します。
image_force_refresh
既存のイメージを強制的にリフレッシュできます。
storage_lvm_lv_resizing
これはコンテナーの root ディスクデバイス内に size
プロパティを設定することで
論理ボリュームをリサイズできるようにします。
id_map_base
これは security.idmap.base
を新しく導入します。これにより分離されたコンテナー
に map auto-selection するプロセスをスキップし、ホストのどの uid/gid をベース
として使うかをユーザーが指定できるようにします。
file_symlinks
これは file API 経由でシンボリックリンクを転送するサポートを追加します。 X-LXD-type に "symlink" を指定できるようになり、リクエストの内容はターゲットの パスを指定します。
container_push_target
POST /1.0/containers/<name>
に target
フィールドを新たに追加します。
これはマイグレーション中に作成元の LXD ホストが作成先に接続するために
利用可能です。
network_vlan_physical
physical
ネットワークデバイスで vlan
プロパティが使用できるようにします。
設定すると、 parent
インタフェース上で指定された VLAN にアタッチするように
LXD に指示します。 LXD はホスト上でその parent
と VLAN を既存のインタフェース
で探します。
見つからない場合は作成します。
その後コンテナーにこのインタフェースを直接アタッチします。
storage_images_delete
これは指定したストレージプールからイメージのストレージボリュームを ストレージ API で削除できるようにします。
container_edit_metadata
これはコンテナーの metadata.yaml と関連するテンプレートを
/1.0/containers/<name>/metadata
配下の URL にアクセスすることにより
API で編集できるようにします。コンテナーからイメージを発行する前にコンテナーを
編集できるようになります。
container_snapshot_stateful_migration
これは stateful なコンテナーのスナップショットを新しいコンテナーにマイグレート できるようにします。
storage_driver_ceph
これは ceph ストレージドライバを追加します。
storage_ceph_user_name
これは ceph ユーザーを指定できるようにします。
instance_types
これはコンテナーの作成リクエストに instance_type
フィールドを追加します。
値は LXD のリソース制限に展開されます。
storage_volatile_initial_source
これはストレージプール作成中に LXD に渡された実際の作成元を記録します。
storage_ceph_force_osd_reuse
これは ceph ストレージドライバに ceph.osd.force_reuse
プロパティを
導入します。 true
に設定すると LXD は別の LXD インスタンスで既に使用中の
osd ストレージプールを再利用するようになります。
storage_block_filesystem_btrfs
これは ext4 と xfs に加えて btrfs をストレージボリュームファイルシステムとして サポートするようになります。
resources
これは LXD が利用可能なシステムリソースを LXD デーモンに問い合わせできるようにします。
kernel_limits
これは nofile
でコンテナーがオープンできるファイルの最大数といったプロセスの
リミットを設定できるようにします。形式は limits.kernel.[リミット名]
です。
storage_api_volume_rename
これはカスタムストレージボリュームをリネームできるようにします。
external_authentication
これは Macaroons での外部認証をできるようにします。
network_sriov
これは SR-IOV を有効にしたネットワークデバイスのサポートを追加します。
console
これはコンテナーのコンソールデバイスとコンソールログを利用可能にします。
restrict_devlxd
security.devlxd コンテナー設定キーを新たに導入します。このキーは /dev/lxd インタフェースがコンテナーで利用可能になるかを制御します。 false に設定すると、コンテナーが LXD デーモンと連携するのを実質無効に することになります。
migration_pre_copy
これはライブマイグレーション中に最適化されたメモリ転送をできるようにします。
infiniband
これは infiniband ネットワークデバイスを使用できるようにします。
maas_network
これは MAAS ネットワーク統合をできるようにします。
デーモンレベルで設定すると、 "nic" デバイスを特定の MAAS サブネットに アタッチできるようになります。
devlxd_events
これは devlxd ソケットに websocket API を追加します。
devlxd ソケット上で /1.0/events に接続すると、 websocket 上で イベントのストリームを受け取れるようになります。
proxy
これはコンテナーに proxy
という新しいデバイスタイプを追加します。
これによりホストとコンテナー間で接続をフォワーディングできるようになります。
network_dhcp_gateway
代替のゲートウェイを設定するための ipv4.dhcp.gateway ネットワーク設定キーを 新たに追加します。
file_get_symlink
これは file API を使ってシンボリックリンクを取得できるようにします。
network_leases
/1.0/networks/NAME/leases API エンドポイントを追加します。 LXD が管理する DHCP サーバが稼働するブリッジ上のリースデータベースに問い合わせできるように なります。
unix_device_hotplug
これは unix デバイスに "required" プロパティのサポートを追加します。
storage_api_local_volume_handling
これはカスタムストレージボリュームを同じあるいは異なるストレージプール間で コピーしたり移動したりできるようにします。
operation_description
全ての操作に "description" フィールドを追加します。
clustering
LXD のクラスタリング API 。
これは次の新しいエンドポイントを含みます (詳細は RESTful API を参照)。
GET /1.0/cluster
-
UPDATE /1.0/cluster
-
GET /1.0/cluster/members
-
GET /1.0/cluster/members/<name>
POST /1.0/cluster/members/<name>
DELETE /1.0/cluster/members/<name>
次の既存のエンドポイントは以下のように変更されます。
POST /1.0/containers
新しい target クエリパラメータを受け付けるようになります。POST /1.0/storage-pools
新しい target クエリパラメータを受け付けるようになりますGET /1.0/storage-pool/<name>
新しい target クエリパラメータを受け付けるようになりますPOST /1.0/storage-pool/<pool>/volumes/<type>
新しい target クエリパラメータを受け付けるようになりますGET /1.0/storage-pool/<pool>/volumes/<type>/<name>
新しい target クエリパラメータを受け付けるようになりますPOST /1.0/storage-pool/<pool>/volumes/<type>/<name>
新しい target クエリパラメータを受け付けるようになりますPUT /1.0/storage-pool/<pool>/volumes/<type>/<name>
新しい target クエリパラメータを受け付けるようになりますPATCH /1.0/storage-pool/<pool>/volumes/<type>/<name>
新しい target クエリパラメータを受け付けるようになりますDELETE /1.0/storage-pool/<pool>/volumes/<type>/<name>
新しい target クエリパラメータを受け付けるようになりますPOST /1.0/networks
新しい target クエリパラメータを受け付けるようになりますGET /1.0/networks/<name>
新しい target クエリパラメータを受け付けるようになります
event_lifecycle
これはイベント API に lifecycle
メッセージ種別を新たに追加します。
storage_api_remote_volume_handling
これはリモート間でカスタムストレージボリュームをコピーや移動できるようにします。
nvidia_runtime
コンテナーに nvidia_runtime
という設定オプションを追加します。これを true に
設定すると NVIDIA ランタイムと CUDA ライブラリーがコンテナーに渡されます。
container_mount_propagation
これはディスクデバイス種別に "propagation" オプションを新たに追加します。 これによりカーネルのマウントプロパゲーションの設定ができるようになります。
container_backup
コンテナーのバックアップサポートを追加します。
これは次のエンドポイントを新たに追加します (詳細は RESTful API を参照)。
GET /1.0/containers/<name>/backups
-
POST /1.0/containers/<name>/backups
-
GET /1.0/containers/<name>/backups/<name>
POST /1.0/containers/<name>/backups/<name>
-
DELETE /1.0/containers/<name>/backups/<name>
-
GET /1.0/containers/<name>/backups/<name>/export
次の既存のエンドポイントは以下のように変更されます。
POST /1.0/containers
新たな作成元の種別backup
を受け付けるようになります
devlxd_images
コンテナーに security.devlxd.images
設定オプションを追加します。これに
より devlxd 上で /1.0/images/FINGERPRINT/export
API が利用可能に
なります。 nested LXD を動かすコンテナーがホストから生のイメージを
取得するためにこれは利用できます。
container_local_cross_pool_handling
これは同じ LXD インスタンス上のストレージプール間でコンテナーをコピー・移動 できるようにします。
proxy_unix
proxy デバイスで unix ソケットと abstract unix ソケットの両方のサポートを
追加します。これらは unix:/path/to/unix.sock
(通常のソケット) あるいは
unix:@/tmp/unix.sock
(abstract ソケット) のようにアドレスを指定して
利用可能です。
現状サポートされている接続は次のとおりです。
TCP <-> TCP
UNIX <-> UNIX
TCP <-> UNIX
UNIX <-> TCP
proxy_udp
proxy デバイスで udp のサポートを追加します。
現状サポートされている接続は次のとおりです。
TCP <-> TCP
UNIX <-> UNIX
TCP <-> UNIX
UNIX <-> TCP
UDP <-> UDP
TCP <-> UDP
UNIX <-> UDP
clustering_join
これにより GET /1.0/cluster がノードに参加する際にどのようなストレージプールと ネットワークを作成する必要があるかについての情報を返します。また、それらを作成する 際にどのノード固有の設定キーを使う必要があるかについての情報も返します。 同様に PUT /1.0/cluster エンドポイントも同じ形式でストレージプールとネットワークに ついての情報を受け付け、クラスタに参加する前にこれらが自動的に作成されるようになります。
proxy_tcp_udp_multi_port_handling
複数のポートにトラフィックをフォワーディングできるようにします。フォワーディングは
ポートの範囲が転送元と転送先で同じ (例えば 1.2.3.4 0-1000 -> 5.6.7.8 1000-2000
)
場合か転送元で範囲を指定し転送先で単一のポートを指定する
(例えば 1.2.3.4 0-1000 -> 5.6.7.8 1000
) 場合に可能です。
network_state
ネットワークの状態を取得できるようになります。
これは次のエンドポイントを新たに追加します (詳細は RESTful API を参照)。
GET /1.0/networks/<name>/state
proxy_unix_dac_properties
これは抽象的 unix ソケットではない unix ソケットに gid, uid, パーミションのプロパティを追加します。
container_protection_delete
security.protection.delete
フィールドを設定できるようにします。 true に設定すると
コンテナーが削除されるのを防ぎます。スナップショットはこの設定により影響を受けません。
proxy_priv_drop
proxy デバイスに security.uid と security.gid を追加します。これは root 権限を 落とし (訳注: 非 root 権限で動作させるという意味です)、 Unix ソケットに接続する 際に用いられる uid/gid も変更します。
pprof_http
これはデバッグ用の HTTP サーバを起動するために、新たに core.debug_address オプションを追加します。
このサーバは現在 pprof API を含んでおり、従来の cpu-profile, memory-profile と print-goroutines デバッグオプションを置き換えるものです。
proxy_haproxy_protocol
proxy デバイスに proxy_protocol キーを追加します。これは HAProxy PROXY プロトコルヘッダ の使用を制御します。
network_hwaddr
ブリッジの MAC アドレスを制御する bridge.hwaddr キーを追加します。
proxy_nat
これは最適化された UDP/TCP プロキシを追加します。設定上可能であれば プロキシ処理は proxy デバイスの代わりに iptables 経由で行われるように なります。
network_nat_order
LXD ブリッジに ipv4.nat.order
と ipv6.nat.order
設定キーを導入します。
これらのキーは LXD のルールをチェイン内の既存のルールの前に置くか後に置くかを
制御します。
container_full
これは GET /1.0/containers
に recursion=2 という新しいモードを導入します。
これにより状態、スナップショットとバックアップの構造を含むコンテナーの全ての構造を
取得できるようになります。
この結果 "lxc list" は必要な全ての情報を 1 つのクエリで取得できるように なります。
candid_authentication
これは新たに candid.api.url 設定キーを導入し core.macaroon.endpoint を 削除します。
backup_compression
これは新たに backups.compression_algorithm 設定キーを導入します。 これによりバックアップの圧縮の設定が可能になります。
candid_config
これは candid.domains
と candid.expiry
設定キーを導入します。
前者は許可された/有効な Candid ドメインを指定することを可能にし、
後者は macaroon の有効期限を設定可能にします。 lxc remote add
コマンドに
新たに --domain
フラグが追加され、これにより Candid ドメインを
指定可能になります。
nvidia_runtime_config
これは nvidia.runtime と libnvidia-container ライブラリーを使用する際に追加の いくつかの設定キーを導入します。これらのキーは nvidia-container の対応する 環境変数にほぼそのまま置き換えられます。
- nvidia.driver.capabilities => NVIDIA_DRIVER_CAPABILITIES
- nvidia.require.cuda => NVIDIA_REQUIRE_CUDA
- nvidia.require.driver => NVIDIA_REQUIRE_DRIVER
storage_api_volume_snapshots
ストレージボリュームスナップショットのサポートを追加します。これらは コンテナースナップショットのように振る舞いますが、ボリュームに対してのみ 作成できます。
これにより次の新しいエンドポイントが追加されます (詳細は RESTful API を参照)。
GET /1.0/storage-pools/<pool>/volumes/<type>/<name>/snapshots
-
POST /1.0/storage-pools/<pool>/volumes/<type>/<name>/snapshots
-
GET /1.0/storage-pools/<pool>/volumes/<type>/<volume>/snapshots/<name>
PUT /1.0/storage-pools/<pool>/volumes/<type>/<volume>/snapshots/<name>
POST /1.0/storage-pools/<pool>/volumes/<type>/<volume>/snapshots/<name>
DELETE /1.0/storage-pools/<pool>/volumes/<type>/<volume>/snapshots/<name>
storage_unmapped
ストレージボリュームに新たに security.unmapped
という設定を導入します。
true に設定するとボリューム上の現在のマップをフラッシュし、以降の idmap のトラッキングとボリューム上のリマッピングを防ぎます。
これは隔離されたコンテナー間でデータを共有するために使用できます。 この際コンテナーを書き込みアクセスを要求するコンテナーにアタッチした 後にデータを共有します。
projects
新たに project API を追加します。プロジェクトの作成、更新、削除ができます。
現時点では、プロジェクトは、コンテナー、プロファイル、イメージを保持できます。そして、プロジェクトを切り替えることで、独立した LXD リソースのビューを見せられます。
candid_config_key
新たに candid.api.key
オプションが使えるようになります。これにより、エンドポイントが期待する公開鍵を設定でき、HTTP のみの Candid サーバを安全に利用できます。
network_vxlan_ttl
新たにネットワークの設定に tunnel.NAME.ttl
が指定できるようになります。これにより、VXLAN トンネルの TTL を増加させることができます。
container_incremental_copy
新たにコンテナーのインクリメンタルコピーができるようになります。--refresh
オプションを指定してコンテナーをコピーすると、見つからないファイルや、更新されたファイルのみを
コピーします。コンテナーが存在しない場合は、通常のコピーを実行します。
usb_optional_vendorid
名前が暗示しているように、コンテナーにアタッチされた USB デバイスの
vendorid
フィールドが省略可能になります。これにより全ての USB デバイスが
コンテナーに渡されます (GPU に対してなされたのと同様)。
snapshot_scheduling
これはスナップショットのスケジューリングのサポートを追加します。これにより
3 つの新しい設定キーが導入されます。 snapshots.schedule
, snapshots.schedule.stopped
,
そして snapshots.pattern
です。スナップショットは最短で 1 分間隔で自動的に
作成されます。
container_copy_project
コピー元のコンテナーの dict に project
フィールドを導入します。これにより
プロジェクト間でコンテナーをコピーあるいは移動できるようになります。
clustering_server_address
これはサーバのネットワークアドレスを REST API のクライアントネットワーク
アドレスと異なる値に設定することのサポートを追加します。クライアントは
新しい cluster.https_address
設定キーを初期のサーバのアドレスを指定するために
に設定できます。新しいサーバが参加する際、クライアントは参加するサーバの
core.https_address
設定キーを参加するサーバがリッスンすべきアドレスに設定でき、
PUT /1.0/cluster
API の server_address
キーを参加するサーバが
クラスタリングトラフィックに使用すべきアドレスに設定できます (server_address
の値は自動的に参加するサーバの cluster.https_address
設定キーに
コピーされます)。
clustering_image_replication
クラスタ内のノードをまたいだイメージのレプリケーションを可能にします。 新しい cluster.images_minimal_replica 設定キーが導入され、イメージの リプリケーションに対するノードの最小数を指定するのに使用できます。
container_protection_shift
security.protection.shift
の設定を可能にします。これによりコンテナーの
ファイルシステム上で uid/gid をシフト (再マッピング) させることを防ぎます。
snapshot_expiry
これはスナップショットの有効期限のサポートを追加します。タスクは 1 分おきに実行されます。
snapshots.expiry
設定オプションは、1M 2H 3d 4w 5m 6y
(それぞれ 1 分、2 時間、3 日、4 週間、5 ヶ月、6 年)といった形式を取ります。
この指定ではすべての部分を使う必要はありません。
作成されるスナップショットには、指定した式に基づいて有効期限が設定されます。
expires\_at
で定義される有効期限は、API や lxc config edit
コマンドを使って手動で編集できます。
有効な有効期限が設定されたスナップショットはタスク実行時に削除されます。
有効期限は expires\_at
に空文字列や 0001-01-01T00:00:00Z
(zero time)を設定することで無効化できます。
snapshots.expiry
が設定されていない場合はこれがデフォルトです。
これは次のような新しいエンドポイントを追加します(詳しくは RESTful API をご覧ください):
PUT /1.0/containers/<name>/snapshots/<name>
snapshot_expiry_creation
コンテナー作成に expires\_at
を追加し、作成時にスナップショットの有効期限を上書きできます。
network_leases_location
ネットワークのリースリストに "Location" フィールドを導入します。 これは、特定のリースがどのノードに存在するかを問い合わせるときに使います。
resources_cpu_socket
ソケットの情報が入れ替わる場合に備えて CPU リソースにソケットフィールドを追加します。
resources_gpu
サーバリソースに新規にGPU構造を追加し、システム上で利用可能な全てのGPUを一覧表示します。
resources_numa
全てのCPUとGPUに対するNUMAノードを表示します。
kernel_features
サーバの環境からオプショナルなカーネル機能の使用可否状態を取得します。
id_map_current
内部的な volatile.idmap.current
キーを新規に導入します。これはコンテナーに
対する現在のマッピングを追跡するのに使われます。
実質的には以下が利用可能になります。
volatile.last\_state.idmap
=> ディスク上の idmapvolatile.idmap.current
=> 現在のカーネルマップvolatile.idmap.next
=> 次のディスク上の idmap
これはディスク上の map が変更されていないがカーネルマップは変更されている (例: shiftfs) ような環境を実装するために必要です。
event_location
API イベントの世代の場所を公開します。
storage_api_remote_volume_snapshots
ストレージボリュームをそれらのスナップショットを含んで移行できます。
network_nat_address
これは LXD ブリッジに ipv4.nat.address
と ipv6.nat.address
設定キーを導入します。
これらのキーはブリッジからの送信トラフィックに使うソースアドレスを制御します。
container_nic_routes
これは "nic" タイプのデバイスに ipv4.routes
と ipv6.routes
プロパティを導入します。
ホストからコンテナーへの nic への静的ルートが追加できます。
rbac
RBAC (role based access control; ロールベースのアクセス制御) のサポートを追加します。 これは以下の設定キーを新規に導入します。
- rbac.api.url
- rbac.api.key
- rbac.api.expiry
- rbac.agent.url
- rbac.agent.username
- rbac.agent.private_key
- rbac.agent.public_key
cluster_internal_copy
これは通常の "POST /1.0/containers" を実行することでクラスタノード間で コンテナーをコピーすることを可能にします。この際 LXD はマイグレーションが 必要かどうかを内部的に判定します。
seccomp_notify
カーネルが seccomp ベースの syscall インターセプトをサポートする場合に 登録された syscall が実行されたことをコンテナーから LXD に通知することが できます。 LXD はそれを受けて様々なアクションをトリガーするかを決定します。
lxc_features
これは GET /1.0/
ルート経由で lxc info
コマンドの出力に lxc\_features
セクションを導入します。配下の LXC ライブラリーに存在するキー・フィーチャーに
対するチェックの結果を出力します。
container_nic_ipvlan
これは "nic" デバイスに ipvlan
のタイプを導入します。
network_vlan_sriov
これは SR-IOV デバイスに VLAN (vlan
) と MAC フィルタリング (security.mac\_filtering
) のサポートを導入します。
storage_cephfs
ストレージプールドライバとして CEPHFS のサポートを追加します。これは カスタムボリュームとしての利用のみが可能になり、イメージとコンテナーは CEPHFS ではなく CEPH (RBD) 上に構築する必要があります。
container_nic_ipfilter
これは bridged
の NIC デバイスに対してコンテナーの IP フィルタリング
(security.ipv4\_filtering
and security.ipv6\_filtering
) を導入します。
resources_v2
/1.0/resources のリソース API を見直しました。主な変更は以下の通りです。
- CPU
- ソケット、コア、スレッドのトラッキングのレポートを修正しました
- コア毎の NUMA ノードのトラッキング
- ソケット毎のベースとターボの周波数のトラッキング
- コア毎の現在の周波数のトラッキング
- CPU のキャッシュ情報の追加
- CPU アーキテクチャをエクスポート
- スレッドのオンライン/オフライン状態を表示
- メモリ
- HugePages のトラッキングを追加
- NUMA ノード毎でもメモリ消費を追跡
- GPU
- DRM 情報を別の構造体に分離
- DRM 構造体内にデバイスの名前とノードを公開
- NVIDIA 構造体内にデバイスの名前とノードを公開
- SR-IOV VF のトラッキングを追加
container_exec_user_group_cwd
POST /1.0/containers/NAME/exec
の実行時に User, Group と Cwd を指定するサポートを追加
container_syscall_intercept
security.syscalls.intercept.\*
設定キーを追加します。これはどのシステムコールを LXD がインターセプトし昇格された権限で処理するかを制御します。
container_disk_shift
disk
デバイスに shift
プロパティを追加します。これは shiftfs のオーバーレイの使用を制御します。
storage_shifted
ストレージボリュームに新しく security.shifted
という boolean の設定を導入します。
これを true に設定すると複数の隔離されたコンテナーが、それら全てがファイルシステムに 書き込み可能にしたまま、同じストレージボリュームにアタッチするのを許可します。
これは shiftfs をオーバーレイファイルシステムとして使用します。
resources_infiniband
リソース API の一部として infiniband キャラクタデバイス (issm, umad, uverb) の情報を公開します。
daemon_storage
これは storage.images\_volume
と storage.backups\_volume
という 2 つの新しい設定項目を導入します。これらは既存のプール上のストレージボリュームがデーモン全体のイメージとバックアップを保管するのに使えるようにします。
instances
これはインスタンスの概念を導入します。現状ではインスタンスの唯一の種別は "container" です。
image_types
これはイメージに新しく Type フィールドのサポートを導入します。 Type フィールドはイメージがどういう種別かを示します。
resources_disk_sata
ディスクリソース API の構造体を次の項目を含むように拡張します。
- sata デバイス(種別)の適切な検出
- デバイスパス
- ドライブの RPM
- ブロックサイズ
- ファームウェアバージョン
- シリアルナンバー
clustering_roles
これはクラスタのエントリーに roles
という新しい属性を追加し、クラスタ内のメンバーが提供する role の一覧を公開します。
images_expiry
イメージの有効期限を設定できます。
resources_network_firmware
ネットワークカードのエントリーに FirmwareVersion フィールドを追加します。
backup_compression_algorithm
バックアップを作成する (POST /1.0/containers/<name>/backups
) 際に compression\_algorithm
プロパティのサポートを追加します。
このプロパティを設定するとデフォルト値 (backups.compression\_algorithm
) をオーバーライドすることができます。
ceph_data_pool_name
Ceph RBD を使ってストレージプールを作成する際にオプショナルな引数 (ceph.osd.data\_pool\_name
) のサポートを追加します。
この引数が指定されると、プールはメタデータは pool\_name
で指定されたプールに保持しつつ実際のデータは data\_pool\_name
で指定されたプールに保管するようになります。
container_syscall_intercept_mount
security.syscalls.intercept.mount
, security.syscalls.intercept.mount.allowed
, security.syscalls.intercept.mount.shift
設定キーを追加します。
これらは mount システムコールを LXD にインターセプトさせるかどうか、昇格されたパーミションでどのように処理させるかを制御します。
compression_squashfs
イメージやバックアップを SquashFS ファイルシステムの形式でインポート/エクスポートするサポートを追加します。
container_raw_mount
ディスクデバイスに raw mount オプションを渡すサポートを追加します。
container_nic_routed
routed
"nic" デバイス種別を導入します。
container_syscall_intercept_mount_fuse
security.syscalls.intercept.mount.fuse
キーを追加します。これはファイルシステムのマウントを fuse 実装にリダイレクトするのに使えます。
このためには例えば security.syscalls.intercept.mount.fuse=ext4=fuse2fs
のように設定します。
container_disk_ceph
既存の CEPH RDB もしくは FS を直接 LXD コンテナーに接続できます。
virtual_machines
仮想マシンサポートが追加されます。
image_profiles
新しいコンテナーを起動するときに、イメージに適用するプロファイルのリストが指定できます。
clustering_architecture
クラスタメンバーに architecture
属性を追加します。
この属性はクラスタメンバーのアーキテクチャを示します。
resources_disk_id
リソース API のディスクのエントリーに device_id フィールドを追加します。
storage_lvm_stripes
通常のボリュームと thin pool ボリューム上で LVM ストライプを使う機能を追加します。
vm_boot_priority
ブートの順序を制御するため nic とディスクデバイスに boot.priority
プロパティを追加します。
unix_hotplug_devices
UNIX のキャラクタデバイスとブロックデバイスのホットプラグのサポートを追加します。
api_filtering
インスタンスとイメージに対する GET リクエストの結果をフィルタリングする機能を追加します。
instance_nic_network
NIC デバイスの network
プロパティのサポートを追加し、管理されたネットワークへ NIC をリンクできるようにします。
これによりネットワーク設定の一部を引き継ぎ、 IP 設定のより良い検証を行うことができます。
clustering_sizing
データベースの投票者とスタンバイに対してカスタムの値を指定するサポートです。 cluster.max_voters と cluster.max_standby という新しい設定キーが導入され、データベースの投票者とスタンバイの理想的な数を指定できます。
firewall_driver
ServerEnvironment 構造体にファイアーウォールのドライバーが使用されていることを示す Firewall
プロパティを追加します。
storage_lvm_vg_force_reuse
既存の空でないボリュームグループからストレージボリュームを作成する機能を追加します。 このオプションの使用には注意が必要です。 というのは、同じボリュームグループ内に LXD 以外で作成されたボリュームとボリューム名が衝突しないことを LXD が保証できないからです。 このことはもし名前の衝突が起きたときは LXD 以外で作成されたボリュームを LXD が削除してしまう可能性があることを意味します。
container_syscall_intercept_hugetlbfs
mount システムコール・インターセプションが有効にされ hugetlbfs が許可されたファイルシステムとして指定された場合、 LXD は別の hugetlbfs インスタンスを uid と gid をコンテナーの root の uid と gid に設定するマウントオプションを指定してコンテナーにマウントします。 これによりコンテナー内のプロセスが hugepage を確実に利用できるようにします。
limits_hugepages
コンテナーが使用できる hugepage の数を hugetlb cgroup を使って制限できるようにします。 この機能を使用するには hugetlb cgroup が利用可能になっている必要があります。 注意: hugetlbfs ファイルシステムの mount システムコールをインターセプトするときは、ホストの hugepage のリソースをコンテナーが使い切ってしまわないように hugepage を制限することを推奨します。
container_nic_routed_gateway
この拡張は ipv4.gateway
と ipv6.gateway
という NIC の設定キーを追加します。
指定可能な値は auto か none のいずれかです。
値を指定しない場合のデフォルト値は auto です。
auto に設定した場合は、デフォルトゲートウェイがコンテナー内部に追加され、ホスト側のインタフェースにも同じゲートウェイアドレスが追加されるという現在の挙動と同じになります。
none に設定すると、デフォルトゲートウェイもアドレスもホスト側のインターフェースには追加されません。
これにより複数のルートを持つ NIC デバイスをコンテナーに追加できます。
projects_restrictions
この拡張はプロジェクトに restricted
という設定キーを追加します。
これによりプロジェクト内でセキュリティセンシティブな機能を使うのを防ぐことができます。
custom_volume_snapshot_expiry
この拡張はカスタムボリュームのスナップショットに有効期限を設定できるようにします。
有効期限は snapshots.expiry
設定キーにより個別に設定することも出来ますし、親のカスタムボリュームに設定してそこから作成された全てのスナップショットに自動的にその有効期限を適用することも出来ます。
volume_snapshot_scheduling
この拡張はカスタムボリュームのスナップショットにスケジュール機能を追加します。
snapshots.schedule
と snapshots.pattern
という 2 つの設定キーが新たに追加されます。
スナップショットは最短で 1 分毎に作成可能です。
trust_ca_certificates
この拡張により提供された CA (server.ca
) によって信頼されたクライアント証明書のチェックが可能になります。
core.trust\_ca\_certificates
を true に設定すると有効にできます。
有効な場合、クライアント証明書のチェックを行い、チェックが OK であれば信頼されたパスワードの要求はスキップします。
ただし、提供された CRL (ca.crl
) に接続してきたクライアント証明書が含まれる場合は例外です。
この場合は、パスワードが求められます。
snapshot_disk_usage
この拡張はスナップショットのディスク使用量を示す /1.0/instances/<name>/snapshots/<snapshot>
の出力に size
フィールドを新たに追加します。
clustering_edit_roles
この拡張はクラスターメンバーに書き込み可能なエンドポイントを追加し、ロールの編集を可能にします。
container_nic_routed_host_address
この拡張は NIC の設定キーに ipv4.host_address
と ipv6.host_address
を追加し、ホスト側の veth インターフェースの IP アドレスを制御できるようにします。
これは同時に複数の routed NIC を使用し、予測可能な next-hop のアドレスを使用したい場合に有用です。
さらにこの拡張は ipv4.gateway
と ipv6.gateway
の NIC 設定キーの振る舞いを変更します。
auto に設定するとコンテナーはデフォルトゲートウェイをそれぞれ ipv4.host_address
と ipv6.host_address
で指定した値にします。
デフォルト値は次の通りです。
ipv4.host_address
: 169.254.0.1
ipv6.host_address
: fe80::1
これは以前のデフォルトの挙動と後方互換性があります。
container_nic_ipvlan_gateway
この拡張は ipv4.gateway
と ipv6.gateway
の NIC 設定キーを追加し auto か none の値を指定できます。
指定しない場合のデフォルト値は auto です。
この場合は従来同様の挙動になりコンテナー内部に追加されるデフォルトゲートウェイと同じアドレスがホスト側のインターフェースにも追加されます。
none に設定された場合、ホスト側のインターフェースにはデフォルトゲートウェイもアドレスも追加されません。
これによりコンテナーに ipvlan の NIC デバイスを複数追加することができます。
resources_usb_pci
この拡張は /1.0/resources
の出力に USB と PC デバイスを追加します。
resources_cpu_threads_numa
この拡張は numa_node フィールドをコアごとではなくスレッドごとに記録するように変更します。 これは一部のハードウェアでスレッドを異なる NUMA ドメインに入れる場合があるようなのでそれに対応するためのものです。
resources_cpu_core_die
それぞれのコアごとに die_id 情報を公開します。
api_os
この拡張は /1.0
内に os
と os\_version
の 2 つのフィールドを追加します。
これらの値はシステム上の os-release のデータから取得されます。
resources_system
この拡張は /1.0/resources
の出力にシステム情報を追加します。