コミュニティソリューション

ZimaCubeでのProxmox+TrueNAS:SATAパススルーガイド

Users successfully virtualized TrueNAS under Proxmox by passing through the onboard ASMedia SATA controller, while one setup hit conflicts when adding a second SAS HBA.

TrueNASがPCIeパススルーを通じて物理SATA/HBAコントローラー全体を受け取る構成であれば、ZimaCube上でProxmoxを実行し、TrueNAS SCALEをVMで動かすことは十分可能です。重要なのは、通常の仮想ディスクではなく、ZFSディスクをTrueNASが直接管理する状態に保ち、データを預ける前にIOMMUグループを確認することです。

コミュニティの情報源には、検証済みの有用な結果があります。オンボードのASMedia 1166 SATAコントローラーを新規のTrueNAS VMにパススルーすると、内蔵ドライブが正常に公開されました。また、重要なエッジケースも記録されています。2台目のSAS3008 HBAをパススルーに追加したところ、あるユーザーの環境では内蔵SATAのパススルーに失敗しました。この競合は構成固有のものなので、普遍的な制限ではなく、トラブルシューティングの手がかりとして扱ってください。

推奨アーキテクチャ

ZimaCubeハードウェア
   ↓
Proxmox VEホスト
   ↓
PCIeパススルー:SATA/HBAコントローラー全体
   ↓
TrueNAS SCALE VM
   ↓
物理ディスクから直接構築したZFSプール

ホストはTrueNASに割り当てたディスクをフォーマットしたりマウントしたりしないでください。

コントローラー全体をパススルーする方が優れている理由

コントローラー全体をパススルーすると、コントローラーが対応している場合、TrueNASはその背後にあるディスクをデバイスの識別情報やSMART情報を含めて直接認識できます。また、Proxmoxが同じディスクを独立して取得することも防げます。

アプライアンスのようなストレージ動作を目的とする場合、無関係なProxmox仮想ディスクを重ねた構成の上にTrueNASでZFSを作成しないでください。

ステップ1:ファームウェアとProxmoxでIOMMUを有効にする

IntelシステムではVT-d/IOMMUを有効にし、AMDシステムでは対応するIOMMU機能を有効にする必要があります。Proxmoxではカーネル側のIOMMUも有効にする必要があります。

Proxmoxのパススルー前提条件には、ファームウェアとホストカーネルの両方でパススルーのサポートを有効にする必要があることが記載されています。

ステップ2:SATAコントローラーとそのIOMMUグループを特定する

使用 lspci Proxmoxホスト上で、6つの内蔵ベイを処理しているコントローラーを特定します。元のスレッドでは、ZimaCube環境のASMedia 1166 SATAコントローラーが特定されていました。

パススルーの前に、コントローラーがIOMMUグループ内にあり、Proxmoxホストから関係のない重要なデバイスを取り外すことなく安全に割り当てられることを確認します。

ステップ3:ストレージを接続する前にTrueNAS VMを作成する

仮想CPU、メモリ、別個の小容量ブートディスク、ネットワークアダプターを備えたTrueNAS VMを構築します。TrueNASをインストールして更新し、物理ストレージコントローラーを割り当てる前に、VMが正常に起動することを確認します。

これにより、後で発生した障害がPCIeパススルーによるものか、ゲストのインストール自体によるものかを、はるかに簡単に判断できます。

ステップ4:SATAコントローラー全体をパススルーする

コントローラーをTrueNAS VMのPCIデバイスとして追加します。起動後、次を確認します。 lspci および物理ディスク用のTrueNASストレージUI。

元のケースでは、TrueNAS VMを作り直してからASMediaコントローラーを追加すると、すべての内蔵ドライブが正しく表示されました。

コントローラーは表示されるのに、ディスクが表示されない場合は?

ゲストドライバーが読み込まれたか、コントローラーが正常にリセットされたか、別のパススルーデバイスが干渉していないかを確認してください。元のユーザーは、同じVMに追加のSAS3008 HBAをパススルーすると内蔵SATAコントローラーの動作が妨げられ、そのHBAを削除すると内蔵ディスクが復元されたと報告しています。

これは、その2台のコントローラーが決して共存できないという証明ではありません。コントローラーを1台ずつテストすべきだという根拠です。

パススルーが安定するまでプールを構築しない

ZFSを作成する前に:

  • Proxmoxを数回再起動する。
  • TrueNAS VMを数回再起動する。
  • すべてのディスクが毎回確実に戻ってくることを確認する。
  • SMARTが認識されることを確認する。
  • ホストがマウントしたままのディスクがないことを確認する。

一度は動作しても、ウォームリブート後に消えるストレージトポロジーは、本番データ用として準備が整っていません。

ProxmoxとTrueNASのバックアップは分けて計画する

ProxmoxのバックアップはVMの構成とTrueNASのブートディスクを保護します。データプールのZFSスナップショット、レプリケーション、外部バックアップの代わりにはなりません。

仮想化ガイドでは、Proxmoxについてより幅広く解説しています。

ベアメタルTrueNASのほうがシンプルな場合

マシンの用途がストレージだけなら、ベアメタルのTrueNASによって仮想化レイヤーとパススルーの複雑さをなくせます。同じサーバー上で他のVM、GPUワークロード、ラボ環境、またはProxmoxの管理機能も必要な場合は、Proxmox上でTrueNASを仮想化する構成のほうが適しています。

よくある質問

個々のディスクとSATAコントローラー全体のどちらをパススルーすべきですか?

TrueNAS/ZFSでは、物理ストレージコントローラー全体をパススルーする設計のほうがすっきりしています。TrueNASがその配下のディスクを直接管理できるためです。

パススルーしたコントローラー上のディスクを、Proxmoxは引き続き使用できますか?

いいえ。コントローラー全体をTrueNASに割り当てたら、Proxmoxはそのコントローラー配下のディスクを管理すべきではありません。

2台目のHBAを追加したら、なぜ内蔵ディスクが表示されなくなったのですか?

あるコミュニティユーザーは、SAS3008との併用で問題が発生したと報告しています。ハードウェア全体の欠陥だと決めつけず、コントローラーを個別にテストし、IOMMUやリセットの挙動を確認してください。

ZFSを使用していてもバックアップは必要ですか?

はい。ZFSは整合性を保護し、スナップショットを提供しますが、デバイス外部へのバックアップではありません。