6.3. 1 つのインスタンスにアタッチすることのできる最大ストレージデバイス数の設定
デフォルトでは、1 つのインスタンスにアタッチすることのできるストレージデバイスの数に制限はありません。多数のディスクデバイスをインスタンスにアタッチすると、インスタンスのパフォーマンスが低下する可能性があります。お使いの環境がサポートすることのできる限度に基づいて、インスタンスにアタッチできるデバイスの最大数を調整できます。インスタンスがサポートするストレージディスクの数は、ディスクが使用するバスにより異なります。たとえば、IDE ディスクバスでは、アタッチされるデバイスは 4 つに制限されます。マシン種別が Q35 のインスタンスには、最大 500 のディスクデバイスをアタッチできます。
RHOSP OSP17.0 以降では、Q35 がデフォルトのマシンタイプです。Q35 マシンタイプは PCIe ポートを使用します。heat パラメーター NovaLibvirtNumPciePorts
を設定すると、PCIe ポートデバイスの数を管理できます。PCIe ポートに接続できるデバイスの数は、以前のバージョンで実行いているインスタンスよりも少なくなります。より多くのデバイスを使用する場合は、イメージ属性 hw_disk_bus=scsi
または hw_scsi_model=virtio-scsi
を使用する必要があります。詳細は、仮想ハードウェアのメタデータプロパティー を参照してください。
-
アクティブなインスタンスを持つコンピュートノードで
NovaMaxDiskDevicesToAttach
パラメーターの値を変更した場合に、すでにインスタンスにアタッチされているデバイスの数よりも最大数が小さいと、再ビルドが失敗する可能性があります。たとえば、インスタンス A に 26 のデバイスがアタッチされている場合に、NovaMaxDiskDevicesToAttach
を 20 に変更すると、インスタンス A を再ビルドする要求は失敗します。 - コールドマイグレーション時には、設定されたストレージデバイスの最大数は、移行する元のインスタンスにのみ適用されます。移動前に移行先が確認されることはありません。つまり、コンピュートノード A に 26 のディスクデバイスがアタッチされていて、コンピュートノード B の最大ディスクデバイスアタッチ数が 20 に設定されている場合に、26 のデバイスがアタッチされたインスタンスをコンピュートノード A からコンピュートノード B に移行するコールドマイグレーションの操作は成功します。ただし、これ以降、コンピュートノード B でインスタンスを再ビルドする要求は失敗します。すでにアタッチされているデバイスの数 26 が、設定された最大値の 20 を超えているためです。
設定されたストレージデバイスの最大数は、退避オフロード中のインスタンスには適用されません。これらのインスタンスはコンピュートノードを持たないためです。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/stackrc
$ source ~/stackrc
- 新しい環境ファイルを作成するか、既存の環境ファイルを開きます。
次の設定を環境ファイルに追加して、単一インスタンスにアタッチできるストレージデバイスの最大数の制限を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: ... NovaMaxDiskDevicesToAttach: <max_device_limit> ...
parameter_defaults: ... NovaMaxDiskDevicesToAttach: <max_device_limit> ...
-
<max_device_limit>
を、インスタンスにアタッチできるストレージデバイスの最大数に置き換えます。
-
- 更新を環境ファイルに保存します。
その他の環境ファイルとともに環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<environment_file>.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<environment_file>.yaml