Everpure(旧:Pure Storage)FlashArrayのQoSについて
Everpure(旧:Pure Storage)FlashArrayのPolicy QoSとAlways-on QoSについてご紹介します。
はじめに
FlashArray(FA)には、Policy QoSとAlways-on QoSという2つのQoS(Quality of Service)設定があります。Policy QoSは、Volume・Volume Groupごとに利用可能な最大帯域(Bandwidth)値や最大IOPS値を指定することで、特定のVolume・Volume Groupへのワークロードを制御します。Always-on QoSは、FA全体にデフォルトで設定されるQoSで、ノイジーネイバー対策となるQoSです。本ブログでは、Volume・Volume Groupに対するPolicy QoSの説明や設定方法、設定した時の実際のIO状況、さらに、Always-on QoSについてご紹介します。
Policy QoS
Policy QoSは、個別のVolume・Volume Groupごとに帯域(Bandwidth)やIOPSの上限値を設定できる機能となり、特定のVolumeやVolume Groupの負荷を意図的に制限・制御したい場合に使用します。Policy QoSは、Volume・Volume Groupに対し、Bandwidth:1MB/s~512GB/s、IOPS:100~100Mの範囲で設定可能となっており、GUI(Graphical User Interface)やCLI(Command Line Interface)でそれぞれ設定することができます。Bandwidth・IOPSの両方のPolicy QoSを設定した場合、どちらかが設定した値に達するとQoSがかかります。また、Read/Writeの総量で計算されてQoSがかかる仕様となります。設定したQoS値に達すると、FA側から「TASK SET FULL」を返すことにより、サーバー側で通信量を抑制します。
※Volume Groupに所属するVolumeに対しては、Policy QoSはVolume Group側、もしくは各Volume側のどちらか一方にのみ設定できます。両方へ同時に設定することはできません。
Policy QoSの設定方法は下記の通りです。
[GUI]
Storage > Volumes > QoSを設定したいVolume・Volume Groupを選択 > Detailsの中にあるQoSから、設定したいQoS値を入力してSave
[CLI]
Volumeに対する設定の場合:purevol setattr --bw-limit [Bandwidthの制限値] --iops-limit [IOPSの制限値] [Volume名]
Volume Groupに対する設定の場合:purevgroup setattr --bw-limit [Bandwidthの制限値] --iops-limit [IOPSの制限値] [Volume Group名]
簡単に、GUIでのPolicy QoS設定方法をご紹介します。ここでは、Purity v6.5.11の機器で実施します(PurityバージョンによりGUI表示が異なる場合があります)。まずは、Policy QoSを設定したいVolume・Volume Groupを、GUIのStorageに表示されているVolumesから選択します。ここでは、赤枠で囲んだVolumeのPolicy QoSを設定します。
対象のVolumeを選択すると、下図のような画面に遷移します。DetailsにあるQoSの編集マークをクリックします。
・ QoSの設定
ポップアップウィンドウに、Configure QoSという設定項目が表示されますので、任意のBandwidth Limit、IOPS Limitを入力し、Saveすることで、Policy QoSの設定ができます。
Configure QoSの各種項目の説明は下記です。
・ Bandwidth Limit:Bandwidth(帯域幅)の上限値設定
・ IOPS Limit:IOPSの上限値設定
・ DMM Priority Adjustment:DMM(Direct Memory Modules)搭載アレイのIO処理の優先度調整。未使用の場合は、なにも記載しない。
※DMM(Direct Memory Modules):FA-X70R2・R3、FA-X90R2・R3、FA-XLシリーズにおいてサポートされていますが、現在販売終了となっているDiskの種類となります。(現在、当社から導入させていただいたお客様の機器にDMMが搭載されている機器はございません)
Policy QoSの設定を外す場合には、GUIでは、Bandwidth LimitとIOPS Limitの欄を空白にしてSave、CLIでは、--bw-limit "" --iops-limit ""と、設定値を入力する箇所にダブルコーテーションを入力することで、Policy QoSの設定値を解除することができます。
Policy QoSを設定して負荷をかけると
ここからは、当社環境にて、負荷掛けツール(vdbench)を使用し、Policy QoSを設定した場合にどのようなパフォーマンスになるか確認してみます。
まずは、FAに対して10000 IOPS、Read:Write比率:7:3、ブロックサイズ:128K(Bandwidthの理論値:約1.2GB/s)の試験条件で負荷をかけます。すると、下記図の赤色枠で囲った部分の通り、IOPSがRead/Writeの合計で約10000、BandwidthもRead/Writeの合計で約1.2GB/s程度の負荷がかかっている様子が見えます。
ここで、負荷をかけている対象のVolumeに対して、下記CLIの設定コマンドにて、IOPS値を5KにしてPolicy QoSを設定します。すると、下記図の黄色枠で囲った部分の通り、IOPSがRead/Writeの合計で約5000で頭打ちになっている様子が確認できます。
続いて、Bandwidthにも、500MB/sでPolicy QoSを設定します。ここでは、下記コマンドにて、IOPS上限値の5Kは維持したまま、Bandwidthの上限値を設定します。すると、下記図の青色枠で囲った部分の通り、Bandwidthの500MB/s でQoSがかかっていることが確認できます。
今回の試験条件は、ブロックサイズが128Kであるため、理論上、IOPSが5000のときはBandwidthが約600MB/s、Bandwidthが500MB/sのときはIOPSが約4000となります。Policy QoSをBandwidthが500MB/s、IOPSを5000で設定している場合、IOPSの上限値までは約1000程度の余裕がありますが、Bandwidthが500MB/sで上限値に達して頭打ちするため、IOPSが約4000を記録します。
Always-on QoS
Always-on QoSは、負荷の高いVolumeの影響が他のVolumeに及ばないように制御を行うQoSです。ある特定のVolumeのIO要求が高くなり、FAのリソースが飽和してしまうと、仕様上、その影響がすべてのVolumeに波及してしまう可能性があります(ノイジーネイバー)。Always-on QoSは、FA全体の負荷とVolume単位のリソース消費状況を継続的に監視し、内部的にIO処理の優先順位を調整することにより、IO要求の低いVolumeが受ける影響を最小限に抑えます。Always-on QoSはデフォルトで有効化されているため、お客様にて設定いただく必要はございません。
その他の仕様や注意点
・ 接続先のホストのOS(Operating System)がHP-UX、Solaris、AIXの場合、OS固有のキューイング仕様に合わせるため、FAのホスト設定にて、それぞれ一致するPersonalityを設定する必要があります。
・ 2025年末にリリースされた新しいPurityバージョンである6.10.3から、Volume・Volume Groupだけでなく、Host・Host GroupにもPolicy QoSが設定できるようになっています。
・ Always-on QoSはデフォルトで有効化されておりますが、無効化はできない仕様となります。
最後に
今回は、FlashArray製品におけるQoSの概要についてご紹介しました。FA製品のQoSは、Policy QoSとAlways-on QoSの両方の仕組みを備えていることで、システム管理者にとって非常に実用的で安心できる機能となっています。本ブログを通じて、FlashArrayのQoS機能について少しでも理解いただけるきっかけになりますと幸いです。
※ Everpure、Pure Storage、および本ページに記載されている製品名・サービス名は、Everpure, Inc. の商標または登録商標です。














