proxmoxでASM1166 PCIE SATAをvm側で認識させる準備の質問
質問内容
もう一度教えて PCにASM1166 PCIE SATAを指していて proxmoxをスルーしてtruenasに認識させる手順
gemini答え
Proxmox VE(PVE)上で、PCIe拡張カードの ASM1166(SATAコントローラ) を TrueNAS VM に直接認識させる(PCIパススルー)の手順をまとめました。
この設定を行うことで、Proxmoxを介さずにTrueNASがディスクのS.M.A.R.T.情報やシリアル番号を直接制御できるようになります。
前提条件の確認
ASM1166カードに、Proxmox自体が使用している起動ディスクやZFSプールが接続されていないことを確認してください(パススルーするとProxmox側から見えなくなります)。
マザーボードのBIOS/UEFI設定で 「Intel VT-d」 または 「AMD-Vi(IOMMU)」 が 有効(Enabled) になっていることを確認してください。
1. Proxmoxホスト側でIOMMUを有効化する
Proxmoxのブートローダー(GRUB または systemd-boot)に合わせて設定ファイルを編集します。
【パターンA】GRUBの場合(一般的な構成)
Proxmoxのシェルを開き、設定ファイルを開きます。
Bashnano /etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT="quiet"の行を、CPUに合わせて以下のように書き換えます。Intel CPUの場合:
PlaintextGRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"AMD CPUの場合:
PlaintextGRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
保存して閉じ(
Ctrl + O→Enter→Ctrl + X)、設定を反映させます。Bashupdate-grub
【パターンB】systemd-bootの場合(ZFS起動などの構成)
設定ファイルを開きます。
Bashnano /etc/kernel/cmdline既存の行の末尾(スペースを空けて)に、以下を追加して保存します。
Intel:
intel_iommu=on iommu=ptAMD:
amd_iommu=on iommu=pt
設定を反映させます。
Bashproxmox-boot-tool refresh
2. VFIOカーネルモジュールの追加
パススルーに必要なモジュールをシステムに読み込ませます。
モジュール設定ファイルを開きます。
Bashnano /etc/modulesファイルの末尾に以下の4行を追記して保存します。
Plaintextvfio vfio_iommu_type1 vfio_pci vfio_virqfd
3. Proxmoxホストの再起動と確認
設定を適用するため、一度Proxmoxホストを再起動します。
Bashreboot再起動後、シェルで以下のコマンドを実行し、IOMMUが正常に動作しているか確認します。
Bashdmesg | grep -e DMAR -e IOMMU出力の中に
IOMMU enabledやdirected iommuといった文字列があれば成功です。
4. TrueNAS VMへASM1166を割り当てる(Web UI操作)
ProxmoxのWeb UIにログインします。
対象の TrueNAS VM を選択し、「ハードウェア(Hardware)」 タブをクリックします。
画面上部の 「追加(Add)」 ボタンを押し、「PCIデバイス(PCI Device)」 を選択します。
設定ウィンドウで以下を指定します。
デバイス(Device): ドロップダウンから ASM1166 を探して選択します。(例:
ASMedia Technology Inc. ASM1166 Serial ATA Controllerなどの表記)すべての機能(All Functions): チェックを入れる(デバイスの全機能を一括で渡します)。
ROM BAR: チェックを入れたままでOK。
PCI-Express: TrueNAS VMのマシンタイプが「q35」の場合は、チェックを入れておくことを推奨します。
「追加(Add)」 をクリックします。
5. TrueNAS側での確認
設定が完了したら、TrueNAS VMを起動します。
TrueNASの管理画面(WebUI)にログインし、「ストレージ(Storage)」→「ディスク(Disks)」 を確認してください。ASM1166に接続されているHDDやSSDが、シリアル番号付きでずらりと認識されていれば無事成功です!
ワンポイントアドバイス もしTrueNAS側でうまく認識されない場合は、VMの「オプション」タブで「OSタイプ」が正しく設定されているか、またはVMを一瞬シャットダウン(再起動ではなく一度Stop)してから起動し直してみてください。
と返事来たけど前回と違うのですよなので控えてた資料からみて
前回と違うようだけど? driverct を使ってたと思うけど と再質問
大変失礼いたしました!おっしゃる通り、説明が漏れていました。
ASM1166のようなSATAコントローラーは、普通に設定しようとするとProxmoxホスト自身が標準の ahci ドライバーで起動時にガッチリ掴んでしまうため、VMへのパススルーが失敗したり、挙動が不安定になったりすることがよくあります。
それを防ぐために、「このPCIスロットのデバイスは、ホストではなく最初からVFIO(パススルー用ドライバー)で動かす」 とピンポイントで固定してくれるのが driverctl です。通常の方法(ベンダーID指定)だと同じチップが全部巻き込まれてしまいますが、これなら安全に指定できます。
driverctl を使った確実な手順を改めてまとめました。
1. driverctl のインストール
Proxmoxのシェル(またはSSH)を開き、ツールをインストールします。
apt update && apt install driverctl -y
2. ASM1166の「PCIアドレス」を特定する
パススルーしたいASM1166カードの正確なPCIアドレスを調べます。
lspci -nn | grep -i -E "ahci|asmedia"
出力例:
Plaintext03:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1166 Serial ATA Controller [1b21:1166] (rev 02)
この場合のPCIアドレスは 03:00.0 になります。※環境によって数値は変わりますので、実際に出力されたものを控えてください。
3. driverctl でドライバーを vfio-pci に固定する
特定したPCIアドレスに対して、オーバーライド設定を行います。
コマンドに入力する際は、頭に 0000: を付けたフル形式(例:0000:03:00.0)にする必要があります。
driverctl set-override 0000:03:00.0 vfio-pci
設定が正しく登録されたか確認します。
driverctl list-overrides
出力に 0000:03:00.0 vfio-pci と表示されれば、ホストの ahci に奪われる心配はなくなります。
4. ホストの再起動と確認
設定を確定させるため、Proxmoxホストを一度再起動します。
Bashreboot再起動後、以下のコマンドでASM1166が最初から
vfio-pciで動作しているか確認します。Bashlspci -s 03:00.0 -v出力の下方にある
Kernel driver in use:の項目がvfio-pciになっていれば成功です。
5. TrueNAS VMへ割り当て(Web UI)
ここからProxmoxのWeb UIでTrueNASに引き渡します。
Web UIで TrueNAS VM を選択し、「ハードウェア(Hardware)」 タブをクリックします。
「追加(Add)」 → 「PCIデバイス(PCI Device)」 を選択します。
デバイス(Device) のドロップダウンから、先ほど固定した
0000:03:00.0(ASM1166)を選択します。「すべての機能(All Functions)」 にチェックを入れます。
「追加(Add)」 をクリックします。
💡 なぜ
driverctlが確実なのか? 通常の/etc/modprobe.d/vfio.confにoptions vfio-pci ids=1b21:1166と書く方法だと、マザーボード上に同じASMedia製チップ(同じID)が他にも載っていた場合、それらも一緒にホストから切断されてしまいます。driverctlであれば「〇番目のスロットに刺さっているやつだけ」と物理的な場所で指定できるため、ホスト側の他のSATAポートに一切迷惑をかけずに安全に TrueNAS へ引き渡せます。
記憶の通り driverctl を挟むのが圧倒的に正解でした。これでTrueNAS側でも安定して全ディスクが直接見えるようになります!
と云う感じですね、毎回同じ答えじゃない(笑)
指摘すると、しれ~っと 答えが返ってくる(笑)
多分同じ質問をした時も自分が調べてきて「driverctl」の事を聞いて返事くれたような感じでした(笑)
100%な答えじゃなくても助かっていること多いので、使ってます(無料版をね)
コメント
コメントを投稿