linstorドライバーの内部構造

このセクションではlinstorドライバー実装の内部構造の一部を説明します。ドライバーを使うにはこれらの詳細の知識は不要ですが、オペレーターがトラブルシュートする際やIncusとLINSTOR間の相互作用をよりよく理解するためにはこれらが関連してくるかもしれません。

オブジェクトの命名

この執筆時点では、LINSTORはオブジェクトのリネームをサポートしていません。これはリソース定義、リソースグループ、ストレージプール、スナップショットを含みます。Incusは管理しているリソースをリネームできることが必要なため、この制限はIncusのデータベースでのオブジェクトの見え方に関連させつつもLINSTORでのオブジェクトの命名の別な方法を要求します。

一見すると、IncusデータベースのIDをLINSTORのオブジェクトの名前として使うことが実行可能な選択肢に見えます。残念ながら、これはディザスターリカバリーバックアップのシナリオでは機能しません。上記のシナリオを考慮しながらこれらの制限を回避するため、IncusはLINSTORリソース定義の補助プロパティを使います。補助プロパティはIncusの観点でのボリュームに関するメタデータを保管します。そしてIncusはこれらの補助プロパティを使ってLINSTORに問い合わせし、特定のボリュームに対するリソース定義を見つけることができます。これによりリソース定義名をIncusとは無関係にし、その結果設定されたlinstor.volume.prefixの値にランダムに生成された値を結合した名前を使うことができます。

linstorコマンドに--show-propsフラグを追加するか、特定のリソース定義にresource-definition list-propertiesコマンドを使うとLINSTORの補助プロパティを表示できます。以下に例を示します:

# incus storage volume list linstor
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
|            TYPE            |                               NAME                               | DESCRIPTION | CONTENT-TYPE | USED BY | LOCATION |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| container                  | c1                                                               |             | filesystem   | 1       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| custom                     | vol                                                              |             | block        | 0       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| image                      | d21a26af7d5a95c3aa6e923257a1cb5cd765b102796b92ab111fb29ebfb86137 |             | block        | 1       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| image                      | e3b67bf05e20c6c977f161a425733b00efe88834914e7fc8dd910c4b51cd5804 |             | filesystem   | 1       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| virtual-machine            | v1                                                               |             | block        | 1       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
| virtual-machine (snapshot) | v1/snap0                                                         |             | block        | 0       |          |
+----------------------------+------------------------------------------------------------------+-------------+--------------+---------+----------+
# linstor resource-definition list --show-props Aux/Incus/name Aux/Incus/content-type Aux/Incus/type
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName                                  ┊ Port ┊ ResourceGroup ┊ Layers       ┊ State ┊ Aux/Incus/name                                                                ┊ Aux/Incus/content-type ┊ Aux/Incus/type   ┊
╞═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ incus-volume-4df9f0598bd14d73953151614428d298 ┊ 7004 ┊ linstor       ┊ DRBD,STORAGE ┊ ok    ┊ incus-volume-v1                                                               ┊ block                  ┊ virtual-machines ┊
┊ incus-volume-61be43e12fed4845ab3f2443cccbe50c ┊ 7001 ┊ linstor       ┊ DRBD,STORAGE ┊ ok    ┊ incus-volume-c1                                                               ┊ filesystem             ┊ containers       ┊
┊ incus-volume-d0531e21ce6b4218b9b8996582b9bf31 ┊ 7002 ┊ linstor       ┊ DRBD,STORAGE ┊ ok    ┊ incus-volume-d21a26af7d5a95c3aa6e923257a1cb5cd765b102796b92ab111fb29ebfb86137 ┊ block                  ┊ images           ┊
┊ incus-volume-e3e682324ff54fa3a3cf3203d5029366 ┊ 7000 ┊ linstor       ┊ DRBD,STORAGE ┊ ok    ┊ incus-volume-default_vol                                                      ┊ block                  ┊ custom           ┊
┊ incus-volume-ef2f8cc7bfc148c58a7259f5a201658f ┊ 7003 ┊ linstor       ┊ DRBD,STORAGE ┊ ok    ┊ incus-volume-e3b67bf05e20c6c977f161a425733b00efe88834914e7fc8dd910c4b51cd5804 ┊ filesystem             ┊ images           ┊
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
# linstor snapshot list
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName                                  ┊ SnapshotName                                  ┊ NodeNames          ┊ Volumes               ┊ CreatedOn           ┊ State      ┊
╞═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ incus-volume-4df9f0598bd14d73953151614428d298 ┊ incus-volume-19dd0b015d22445f8097ba5e740948de ┊ server01, server02 ┊ 0: 10 GiB, 1: 500 MiB ┊ 2025-03-13 16:01:31 ┊ Successful ┊
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
# linstor resource-definition list-properties incus-volume-4df9f0598bd14d73953151614428d298
╭─────────────────────────────────────────────────────────────────────────────────────╮
┊ Key                                 ┊ Value                                         ┊
╞═════════════════════════════════════════════════════════════════════════════════════╡
┊ Aux/Incus/SnapshotName/snap0        ┊ incus-volume-19dd0b015d22445f8097ba5e740948de ┊
┊ Aux/Incus/content-type              ┊ block                                         ┊
┊ Aux/Incus/name                      ┊ incus-volume-v1                               ┊
┊ Aux/Incus/type                      ┊ virtual-machines                              ┊
┊ DrbdOptions/Net/allow-two-primaries ┊ yes                                           ┊
┊ DrbdOptions/Resource/on-no-quorum   ┊ io-error                                      ┊
┊ DrbdOptions/Resource/quorum         ┊ majority                                      ┊
┊ DrbdOptions/auto-verify-alg         ┊ crct10dif                                     ┊
┊ DrbdPrimarySetOn                    ┊ SERVER01                                      ┊
┊ cloned-from                         ┊ incus-volume-d0531e21ce6b4218b9b8996582b9bf31 ┊
╰─────────────────────────────────────────────────────────────────────────────────────╯