Proxmox上のESXiでのFusion-IO ioDrive2の利用方法

# ioDrive2 on ESXi 6.7 on Proxmox VE 8.2
Fusion-IOのioDrive2をProxmox上のESXiで利用する方法をまとめました。

## 背景
Fusion-IOのioDrive2は先進的なフラッシュストレージですが、NVMeの登場以前のため専用のドライバが無ければ利用できません。
https://cn.teldevice.co.jp/column/10510/

10年以上前の製品ということもあり、最終的な対応OSはFreeBSD 9やDebian 9、ESXi 6系どまりのため、以降の製品では利用できません。

自宅ラボでは長らく無償版のESXi 6.7を使っていましたが、Broadcom問題の影響でProxmox VE 8.2への移行を行いました。この環境で何とかioDrive2を継続利用したいと思いまとめました。

## ESXi 6.7のインストール
ホストOSとしてProxmoxをインストールしましたので、ゲストOSとしてESXi 6.7をインストールしました。

### ESXi 6.7の場合
https://devopstales.github.io/virtualization/install-vmware-in-proxmox/

### その他参考情報
https://www.linkedin.com/pulse/nested-esxi-proxmox-gustavo-dornelles-novello-ajmsf

## ESXiでのioDrive2の利用
ホストOS(Proxmox)からゲストOS(ESXi)に、PCIデバイスをパススルーする設定を行います。
https://pve.proxmox.com/wiki/PCI_Passthrough

### 認識状況の確認
ホストOSでPCIデバイスの認識状況を確認します。
id: 0000:01:00.0として、ioDrive2が認識されています。

`pvesh get /nodes/pve/hardware/pci --pci-class-blacklist ""`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/f6397dbf-a9a2-d89b-a153-593e24ae7bce.png)

### PCIパススルーの設定
ハードウェアの追加からioDrive2のPCIデバイスをRawデバイスとして追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/385390d3-e7ef-8f98-eee3-9e8817b3b9bf.png)

## ドライバのインストール
ESXiのioDrive2のドライバをインストールします。

### ファイルシステム確認
vfat領域があることを確認します。

```
[root@localhost:/tmp] df -h
Filesystem   Size   Used Available Use% Mounted on
VMFS-6      24.5G   1.4G     23.1G   6% /vmfs/volumes/datastore1
vfat       249.7M 150.6M     99.1M  60% /vmfs/volumes/75bc7075-e928f7b0-192c-591627789047
vfat       249.7M 148.4M    101.3M  59% /vmfs/volumes/2a436e7a-f15d4053-8c18-86cfb59fcda2
vfat         4.0G   3.6M      4.0G   0% /vmfs/volumes/663ec187-29e52e6f-4c1c-bc241116e6a9
vfat       285.8M 173.8M    112.0M  61% /vmfs/volumes/663ec181-adb2f1fa-f229-bc241116e6a9
```

この領域が無いとFusion-IOのドライバインストールに失敗します。
ライブインストールに対応していないだの、メンテナンスモードになっていないなどエラーが出ましたが、結局のところドライバを入れる際の（一時利用のための？）ファイルシステムがないことが問題でした。

```
[root@localhost:/tmp] esxcli software vib install -v /tmp/vib20/scsi-iomemory-vs
l/SNDK_bootbank_scsi-iomemory-vsl_3.2.16.1731-1OEM.600.0.0.2159203.vib
 [StatelessError]
 The transaction is not supported: VIB SNDK_bootbank_scsi-iomemory-vsl_3.2.16.1731-1OEM.600.0.0.2159203 cannot be live installed.
 Please refer to the log file for more details.
```

### ドライバのインストール
後は、何も問題なくインストール出来ました。
https://www.servethehome.com/sandisk-fusion-io-iodrive-installation-vmware-esxi/

```
[root@localhost:/tmp] esxcli software vib install -d /tmp/libvsl-600-1.0.0-3.2.16.1731.zip --no-sig-check
Installation Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: SanDisk_bootbank_libvsl_600.sdk.1.0.0-vsl.3.2.16.1731
   VIBs Removed:
   VIBs Skipped:
[root@localhost:/tmp] esxcli software vib install -d /tmp/scsi-iomemory-vsl-60L-3.2.16.1731-offline_bundle-9738096.zip
Installation Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: SNDK_bootbank_scsi-iomemory-vsl_3.2.16.1731-1OEM.600.0.0.2159203
   VIBs Removed:
   VIBs Skipped:
```

## 確認
ドライバのインストール後WebUIから確認すると、ioDrive2が認識されていました。
ESXiをホストOSとして動作させていた際に作成したデータストアも、そのまま見えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/26dcc5cf-ae80-b68c-b59b-12dbbc499622.png)

## まとめ
PCI Passthroughを利用することで、ホストOSに対応していない古いデバイスをゲストOSから継続利用出来ることが確認できました。