TrueNAS - truenas¶
Incus内のtruenasストレージドライバー¶
truenasストレージドライバーはIncusのノードでリモートのTrueNASストレージドライバーを使って1つ以上のIncusストレージプールを持てるようにします。
ノードがクラスターの一部である場合、すべてのクラスターメンバーはストレージプールに同時にアクセスすることができ、ノード間で仮想マシン(VM)をライブマイグレーションする用途に最適になります。
ドライバーはブロックベースの方式で動作し、これはすべてのIncusのボリュームはリモートのTrueNASサーバー上のZFSのボリュームブロックとして作成されることを意味します。これらのZFSボリュームブロックデバイスはiSCSIを介してローカルのIncusノード上でアクセスされます。
既存のZFSドライバーをモデルにして、truenasドライバーは標準のZFSの機能のほとんどをサポートしますが、リモートのTrueNASサーバー上で動作します。例えば、ローカルのVMのスナップショットを作成したり複製する場合は、ローカルファイルシステムを同期したあとリモートサーバー上でスナップショットと複製の操作が実行されます。複製は必要に応じてiSCSI経由で実行されます。
各ストレージプールはリモートのTrueNASホスト上のZFSデータセットに対応します。 データセットは存在しなければ自動的に作成されます。 ドライバーはリモートホスト上で利用可能なZFSの機能を使って効率的なイメージの処理、コピー操作、スナップショットの管理をネストしたZFS(ZFS-on-ZFS)を必要とせずに実行できます。
リモートのデータセットを参照するには、sourceプロパティを下記の形式で指定できます:
[<remote host>:]<remote pool>[[/<remote dataset>]...][/]
パスの最後が/で終わる場合、データセット名はIncusのストレージプール名から派生されます(例、tank/pool1)。
要件¶
このドライバーはTrueNAS APIを使ってリモートサーバー上でアクションを実行するためにtruenas_incus_ctlツールに依存しています。
このツールはさらにopen-iscsiを経由してリモートのZFSボリュームのアクティベーションとデアクティベーションを管理もしています。
truenas_incus_ctlがインストールされていないかシステムのPATHに存在しない場合、ドライバーは無効化されます。
必要なツールをインストールするには、truenas\_incus\_ctl GitHub pageから最新版(v0.7.2+が必要)をダウンロードしてください。
さらにopen-iscsiを以下のコマンドでインストールしてください:
sudo apt install open-iscsi
TrueNASホストへのログイン¶
APIキーを手動で作成しtruenas.api_keyプロパティでそれを指定する代わりに、truenas_incus_ctlツールでリモートサーバーにログインすることもできます。
sudo truenas_incus_ctl config login
するとTrueNASサーバーへ接続する詳細情報(認証の詳細を含む)がプロンプトで表示されます。そして設定をローカルファイルに保存します。ログインした後、iSCSIのセットアップを以下のコマンドで確認できます:
sudo truenas_incus_ctl share iscsi setup --test
ツールが設定されたら、これを使ってリモートのデータセットを使ってストレージプールを作成できます:
incus storage create <poolname> truenas source=[host:]<pool>[/<dataset>]/[remote-poolname]
上記のコマンドでは:
sourceはリモートのTrueNASホスト上でストレージプールを作成する場所を指定します。hostはオプションで、truenas.hostプロパティで指定することもでき、truenas.configで設定することもできます。remote-poolnameが指定されない場合はデフォルトとしてローカルプールの名前が使われます。
設定オプション¶
以下の設定オプションはtruenasドライバーを使うストレージプールとこれらのプール内のストレージボリュームで利用できます。
ストレージプール設定¶
sourceリモートのTrueNASホスト上で使用するZFSデータセット。形式: [<host>:]<pool>[/<dataset>][/]。ここでhostを省略すると、truenas.hostで設定する必要あり。
| Key: | source |
| Type: | string |
| Default: | |
| Scope: | local |
| Key: | truenas.allow_insecure |
| Type: | bool |
| Default: |
|
| Scope: | global |
| Key: | truenas.clone_copy |
| Type: | bool |
| Default: |
|
| Scope: | global |
| Key: | truenas.dataset |
| Type: | string |
| Default: | |
| Scope: | global |
| Key: | truenas.force_reuse |
| Type: | bool |
| Default: |
|
| Scope: | global |
| Key: | truenas.host |
| Type: | string |
| Default: | |
| Scope: | global |
| Key: | truenas.initiator |
| Type: | string |
| Default: | |
| Scope: | global |
| Key: | truenas.portal |
| Type: | string |
| Default: | |
| Scope: | global |
Tip
これらの設定に加えて、ストレージボリューム設定のデフォルト値を設定できます。 ストレージボリュームのデフォルト値を変更する を参照してください。
ストレージボリューム設定¶
| Key: | block.create_options |
| Type: | string |
| Default: |
|
| Condition: |
| Key: | block.filesystem |
| Type: | string |
| Default: |
|
| Condition: |
| Key: | block.mount_options |
| Type: | string |
| Default: |
|
| Condition: |
| Key: | initial.gid |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | initial.mode |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | initial.uid |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | security.shifted |
| Type: | bool |
| Default: |
|
| Condition: | カスタムボリューム |
| Key: | security.unmapped |
| Type: | bool |
| Default: |
|
| Condition: | カスタムボリューム |
| Key: | snapshots.expiry |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
この値は新しく作ったスナップショットの有効期限を算出するのに使います。 スナップショットが作られた日時にこの値が加算され、結果のタイムスタンプがスナップショットの個別の有効期限として保管されます。 この値を変更しても、変更後に作られたスナップショットのみに影響します。既存のスナップショットの有効期限は変更されません。
サポートされる単位はS(秒)、M(分)、H(時)、d(日)、w(週)、m(月) and y(年)です。
Mが分を意味し、mが月であることに注意してください。
それぞれの単位は1度だけ指定でき、月と年は固定の日数ではなくカレンダーの月として計算されます。
| Key: | snapshots.expiry.manual |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
この値は新しく作ったスナップショットの有効期限を算出するのに使います。 スナップショットが作られた日時にこの値が加算され、結果のタイムスタンプがスナップショットの個別の有効期限として保管されます。 この値を変更しても、変更後に作られたスナップショットのみに影響します。既存のスナップショットの有効期限は変更されません。
サポートされる単位はS(秒)、M(分)、H(時)、d(日)、w(週)、m(月) and y(年)です。
Mが分を意味し、mが月であることに注意してください。
それぞれの単位は1度だけ指定でき、月と年は固定の日数ではなくカレンダーの月として計算されます。
| Key: | snapshots.pattern |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
snapshots.scheduleCron 表記 (<minute> <hour> <dom> <month> <dow>)、またはスケジュールエイリアスのカンマ区切りリスト(@hourly, @daily, @midnight, @weekly, @monthly, @annually, @yearly)、または自動スナップショットを無効にする場合は空文字(デフォルト)
| Key: | snapshots.schedule |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
| Key: | truenas.blocksize |
| Type: | string |
| Default: |
|
| Condition: |
| Key: | truenas.remove_snapshots |
| Type: | bool |
| Default: |
|
| Condition: |