9.17.12. USB ホストパススルーの設定
クラスター管理者は、クラスター内の USB デバイスを公開することができます。これにより、仮想マシン (VM) 所有者がデバイスを仮想マシンに割り当てることができるようになります。USB デバイスのパススルーを有効にすると、ハードウェアと仮想マシンが物理的に接続されているかのように、OpenShift Container Platform ノードに割り当てられた USB ハードウェアに仮想マシンを接続できるようになります。
USB デバイスを公開するには、まずホストパススルーを有効にし、次に USB デバイスを使用するように仮想マシンを設定します。
9.17.12.1. USB ホストパススルーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
USB デバイスを仮想マシン (VM) に割り当てるには、まずクラスターレベルで USB ホストパススルーを有効にする必要があります。
これを行うには、追加してから仮想マシンに割り当てる各デバイスのリソース名と USB デバイス名を指定します。複数のデバイスを 1 つのリソース名に割り当てることができます。各デバイスは HyperConverged カスタムリソース (CR) では selector と呼ばれます。クラスター上に同一の USB デバイスが複数ある場合は、特定のデバイスに仮想マシンを割り当てることができます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
HostDevicesフィーチャーゲートが有効になっていることを確認します。$ oc get featuregate cluster -o yaml正常な出力
featureGates: # ... enabled: - name: HostDevicesUSB デバイスのベンダーと製品を特定します。
$ lsusb出力例
Bus 003 Device 007: ID 1b1c:0a60 example_manufacturer example_product_namelsusbコマンドを使用できない場合は、ホストの/sys/bus/usb/devices/ディレクトリーにある USB デバイス設定を調べます。for dev in *; do if [[ -f "$dev/idVendor" && -f "$dev/idProduct" ]]; then echo "Device: $dev" echo -n " Manufacturer : "; cat "$dev/manufacturer" echo -n " Product: "; cat "$dev/product" echo -n " Vendor ID : "; cat "$dev/idVendor" echo -n " Product ID: "; cat "$dev/idProduct" echo fi done出力例
Device: 3-7 Manufacturer : example_manufacturer Product: example_product_name Vendor ID : 1b1c Product ID: 0a60
以下のコマンドを実行して、デフォルトのエディターで
HyperConvergedCR を開きます。$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv必要な USB デバイスを
HyperConveredCR のpermittedHostDevicesスタンザに追加します。次の例では、ベンダー ID045eと製品 ID07a5を持つデバイスを追加します。apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: permittedHostDevices: usbHostDevices: - resourceName: kubevirt.io/peripherals selectors: - vendor: "045e" product: "07a5" - vendor: "062a" product: "4102" - vendor: "072f" product: "b100"-
spec.permittedHostDevices は、クラスター内で使用することが許可されているホストデバイスを定義します。 -
spec.permittedHostDevices.usbHostDevices は、使用可能な USB デバイスのリストを定義します。 -
spec.permittedHostDevices.usbHostDevices.resourceName は、仮想マシンに追加して割り当てる USB デバイスを定義します。この例では、リソースは 3 つのデバイスにバインドされており、各デバイスはvendorとproductで識別され、selectorと呼ばれます。
-