サーバのESXi化が泥沼化 その2 - SATAコントローラの追加

前回、H77のSATAをパススルーしたら他のSATA I/Fが認識されなくなったのは、AHCIのドライバが読み込まれなくなったせいらしい。

ESXiの各種ドライバは、ESXiが公式に対応するデバイスが存在して初めて読み込まれる仕組みになっているそうなので(まぁそりゃそうか)、H77がパススルーによって見えなくなる→AHCIドライバが読み込まれない→他のSATA I/Fが使えないという状態だった模様。これまでASM1061と88SE9123は、H77 SATAのおこぼれで偶然動いていたというわけ。

デバイスとドライバの対応表を弄れば、非公式デバイスを使えるようになるっぽいので書き換えてみる。

下記作業ログ内に出てくるsata-ahc.v00は、sata-ahc.v00(ハイフン)な環境とsata_ahc.v00(アンダースコア)な環境がある模様。自分の環境では間違いなくハイフンなんだけど謎。コマンドをコピペされる際は注意されたし。

5.1をクリーンインストールした場合はアンダースコア、5.0から5.1にアップデートした場合はハイフンな模様。

  1. ESXiホストにSSHでログイン
  2. lspciコマンドで追加したいデバイスのベンダIDとデバイスIDを確認(必要な箇所のみ抜粋)
    # lspci -v
    000:001:00.0 SATA controller Mass storage controller: Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s controller [vmhba34]
    	 Class 0106: 1b4b:9123 ←これ
    
    000:006:00.0 SATA controller Mass storage controller:   [vmhba36]
    	 Class 0106: 1b21:0612 ←これ

  3. hwinfoコマンドでサブIDを確認(5.0のみ。5.1だとコマンドがなくサブIDは0000:0000で大丈夫っぽい?)

    # hwinfo -p
    000:001:00.0 1b4b:9123 1b4b:9123 11/ 11/0x88 A V ahci         vmhba34
    000:006:00.0 1b21:0612 1849:0612  5/  5/0xa0 A V ahci         vmhba36
                              ↑これ

  4. マップファイルを展開

    ~ # cd /tmp
    /tmp # mkdir tweak; cd tweak
    /tmp/tweak # vmtar -x /bootbank/sata-ahc.v00 -o sata-ahc.tar
    /tmp/tweak # tar xvf sata-ahc.tar 

  5. マップファイルに上で確認したデバイスを追加

    /tmp/tweak # vi etc/vmware/driver.map.d/ahci.map
    (↓を最後に追加)
    regtype=linux,bus=pci,id=1b4b:9123 1b4b:9123,driver=ahci,class=storage
    regtype=linux,bus=pci,id=1b21:0612 1849:0612,driver=ahci,class=storage

  6. vSphere Client上でストレージアダプタ名を正しく表示させたければ、The PCI ID Repositoryでベンダ名とデバイス名を探して、デバイス名リストに追加する。デバイス行のインデントはタブ文字なので注意。弄らなくても動作に支障はない。

    /tmp/tweak # vi usr/share/hwdata/driver.pciids.d/ahci.ids
    1b4b  Marvell Technology Group Ltd.
            9123  88SE9123 PCIe SATA 6.0 Gb/s controller
    1b21  ASMedia Technology Inc.
            0612  ASM1062 Serial ATA Controller

  7. 編集したファイルをアーカイブし直し、元のアーカイブを上書き

    /tmp/tweak # rm sata-ahc.tar
    /tmp/tweak # tar cvf sata-ahc.tar etc usr
    /tmp/tweak # vmtar -c sata-ahc.tar -o sata-ahc.vgz
    /tmp/tweak # mv sata-ahc.vgz /bootbank/sata-ahc.v00

  8. 再起動

上手く追加出来てればvSphere Clientから正しく認識される。追加前と追加後でvmhbaの割り当て順が変わってるが、まぁキニシナイ。

これでようやくH77 SATAのパススルーが出来る!と、喜び勇んで設定&FreeBSDのVMに割り当てて起動!そして、PSoD………/(^o^)\ナンテコッタイ

参考サイト