I/O ポリシーの指定
vxdmpadm setattr コマンドを使って、ディスクアレイまたはエンクロージャへの複数のパスに I/O 負荷を分散する DMP(Dynamic Multi-Pathing) I/O ポリシーを変更することができます。ポリシーは、特定のエンクロージャ(HDS01 など)、特定のタイプのすべてのエンクロージャ(HDS など)、または特定のアレイタイプのすべてのエンクロージャ(アクティブ/アクティブの場合は A/A、アクティブ/パッシブの場合は A/P など)に対して設定できます。
I/O ポリシーはシステムの再起動後にも保持されます。
表: DMP I/O ポリシー は設定される可能性がある I/O ポリシーを記述します。
表: DMP I/O ポリシー
ポリシー | 説明 |
---|
adaptive | I/O をパスに動的にスケジュールしてディスクに対する全体的な I/O スループットを最大化するためのポリシーです。このポリシーは、I/O 負荷が場合によって異なるような環境で使うと便利です。たとえば、I/O 転送が長い場合(テーブルのスキャン)や短い場合(無作為検索)があるデータベースなどで使います。また、このポリシーはパスによってホップ数が異なる SAN 環境でも有効です。このポリシーは DMP で自動的に管理されるため、設定を変更することはできません。 たとえば、エンクロージャ enc1 に対して I/O ポリシーを adaptive に設定するには、次のコマンドを実行します。 # vxdmpadm setattr enclosure enc1 \
iopolicy=adaptive |
adaptiveminq | I/O が各パスの I/O キューの長さに従ってスケジュールされること以外は adaptive ポリシーと同様です。最も短いキューが付いているパスは最高優先度に割り当てられます。 |
balanced [partitionsize=size] | ディスクドライブおよび RAID コントローラでのキャッシュ処理を最適化するためのポリシーです。キャッシュのサイズは通常 120 から 500 KB 以上で、各ハードウェアの特性によって異なります。通常の処理時は、ディスク(LUN)は複数の領域(パーティション)に論理的に分割され、指定した領域に対する I/O が 1 つのアクティブパスにのみ送出されます。そのパスに障害が発生した場合は、作業負荷は自動的に別のアクティブパスに分散されます。 パーティションのためにサイズを指定するのに partitionsize 属性を使うことができます。パーティションサイズのブロック数は、2 の累乗の値(2 から 231)に調整できます。 2 の累乗以外の値は、自動的に適切な値に切り下げられます。 0 のパーティションサイズを指定することは、デフォルトのパーティションサイズを指定することと同じです。 パーティションサイズのデフォルト値は 512 ブロック(256 KB)です。 パーティションサイズに 0 を指定すると、デフォルトのパーティションサイズである 512 ブロック(256 KB)が使われます。 デフォルト値を変更するには、dmp_pathswitch_blks_shift チューニングパラメータの値を調整します。 キャッシュサイズより大きい値を設定する場合には、このポリシーを使う利点はありません。 たとえば、日立製 HDS 9960 A/A アレイの推奨パーティションサイズは、I/O 処理パターンが主に順次読み取りまたは書き込みである場合、32,768 から 131,072 ブロック(16 MB から 64 MB)です。 たとえば、パーティションサイズが 4096 ブロック(2 MB)のエンクロージャ enc0 の balanced I/O ポリシーを設定するには、次のコマンドを実行します。 # vxdmpadm setattr enclosure enc0 \
iopolicy=balanced partitionsize=4096 |
minimumq | LUN のキューに残っている未処理の I/O 要求の数が最も少ないパスに I/O を送出するポリシーです。 キューが最も短いパスは DMP で自動的に判別されるため、設定を変更することはできません。 たとえば、JBOD に対して I/O ポリシーを minimumq に設定するには、次のコマンドを実行します。 # vxdmpadm setattr enclosure Disk \
iopolicy=minimumq これはすべてのアレイでデフォルトの I/O ポリシーです。 |
priority | SAN 内のパスによって処理効率が異なるため負荷分散を手動で強制的に行う場合に便利なポリシーです。使用可能なパスの設定や処理効率特性、およびシステムのその他の要素にも考慮して、各パスに優先順位を割り当てることができます。 たとえば、すべての SENA アレイに対して I/O ポリシーを priority に設定するには、次のコマンドを実行します。 # vxdmpadm setattr arrayname SENA \
iopolicy=priority |
round-robin | I/O をラウンドロビンシーケンスのパス間で同等に共有するポリシーです。たとえば、3 つのパスが存在する場合、最初の I/O 要求で 1 つのパスが使われると、2 番目では別のパス、3 番目では残っている 3 つ目のパスが使われ、4 番目の I/O 要求では再度最初のパスというように割り当てられていきます。このポリシーは DMP で自動的に管理されるため、設定を変更することはできません。 たとえば、すべてのアクティブ/アクティブアレイに対して I/O ポリシーを round-robin に設定するには、次のコマンドを実行します。 # vxdmpadm setattr arraytype A/A \
iopolicy=round-robin |
singleactive | I/O を単一のアクティブパスに送信するポリシーです。このポリシーは、1 つのコントローラに 1 つのアクティブパスが存在し、他のパスはフェールオーバーを実行する場合に使われる、A/P アレイ用に設定できます。A/A アレイ用に設定した場合、パス間での負荷分散は実行されず、代替パスは高可用性(HA)を得る場合にのみ使われます。現在のアクティブパスに障害が発生した場合、I/O は代替アクティブパスに切り替えられます。単一のアクティブパスは DMP で選択されるため、設定を変更することはできません。 たとえば、JBOD ディスクに I/O ポリシー singleactive を設定するには、次のコマンドを実行します。 # vxdmpadm setattr arrayname Disk \
iopolicy=singleactive |