ベストプラクティス Block Storage for Classic
当社のベストプラクティスに従うことで、ストレージのパフォーマンスを最大限に引き出し、アプリケーションのダウンタイムを回避することができます。
ベスト・プラクティス 1-パスをクリアする
最大 IOPS を実現するには、十分なネットワーク・リソースを用意する必要があります。
-
専用 VLAN 上でストレージ・トラフィックを実行します。 ソフトウェア・ファイアウォールを介してストレージ・トラフィックを実行すると、待ち時間が増加し、ストレージ・パフォーマンスに悪影響を与えます。 ファイアウォールをバイパスするように VLAN 上でストレージ・トラフィックを実行することをお勧めします。 詳しくは、 独自の VLAN インターフェースへのストレージ・トラフィックのルーティング を参照してください。
-
可能な限り、 ストレージ・トラフィックをゲートウェイ・デバイスにルーティングしない ようにしてください。 ストレージ・トラフィックがゲートウェイ・デバイスに経路指定されると、ストレージ・トラフィックに待ち時間が追加される可能性があります。また、ゲートウェイ・デバイスのファイアウォールの構成が誤っている場合は、ストレージ・トラフィックの中断が発生する可能性があります。 ストレージの中断は、単一の (非クラスター化) ゲートウェイ・デバイスで再始動などの保守が必要な場合に特に当てはまります。 ストレージトラフィックをゲートウェイデバイス経由でルーティングする必要がある場合は、ゲートウェイデバイスが少なくとも10Gbpsのインターフェースを備えていることを確認してください。そうでないと、ゲートウェイデバイスがネットワークのボトルネックになる可能性があります。
-
より高速な NIC を使用してください。 スループット制限は LUN レベルで設定され、インターフェースが高速であってもその制限は増えません。 ただし、イーサネット接続が低速であると、帯域幅が最良のパフォーマンス・レベルを達成するのに支障をきたす可能性があります。
-
より高い帯域幅を選択してください。 イーサネット接続の速度は、ボリュームから予想される最大スループットよりも高速でなければなりません。一般的に、イーサネット接続が、使用可能な帯域幅の 70% を超えることはありません。
例えば、6,000 IOPS で 16 KB ブロック・サイズを使用している場合、ボリュームは約 94 MB/秒のスループットを処理できます。しかし、ボリュームに1 Gbpsのイーサネット接続を使用している場合、サーバーが利用可能な最大スループットを使用しようとすると、ボトルネックとなります。 1Gbpsイーサネット接続の理論上の限界値の70%(毎秒125MB)では、毎秒88MBしか利用できないためです。
ベスト・プラクティス 2-冗長性を確保するために複数のパスをセットアップする
Block Storage for Classic 最高水準の実績あるエンタープライズグレードのハードウェアとソフトウェアを基盤として構築されており、高い可用性と稼働率を実現しています。 データは、HAペアノード上の複数の物理ディスクに冗長的に保存されます。 各ストレージ・ノードには、独自のソリッド・ステート・ドライブおよびそのパートナー・ノードの SSD への複数のパスがあります。 この構成は、ノードが引き続きパートナーのディスクにアクセスして生産性を維持できるので、パス障害およびコントローラー障害から保護します。 実際、システムは、お客様のパフォーマンスを低下させたり、データ損失のリスクを低下させたりすることなく、クラスター内の複数のディスクを同時に失う可能性があります。 冗長ネットワーク・ポートおよびパスは、クラウド接続全体のネットワーク障害から保護します。
-
iSCSI のトラフィックを 802.3ad のLACPポートチャネル上で実行しないでください。 iSCSI を使用する場合、Link Aggregation Control Protocol (LACP) は推奨される構成ではありません。
-
I/Oの負荷分散と冗長性のために、マルチパス入出力(MPIO)フレームワークを使用します。 MPIO は、ストレージ・デバイスへの接続のロード・バランシングおよびフェイルオーバー・プロセスを構成するためのフレームワークです。 マルチパス・ソリューションは、アダプター、ケーブル、およびネットワーク・スイッチなどの冗長物理パス・コンポーネントを使用して、サーバーとストレージ・デバイスの間の論理パスを作成します。 各ストレージ・ノードには、SSD ドライブへの複数のパスがあります。 ホストは、パス間で入出力負荷を分散し、1 つのパスから次のパスへの内部フェイルオーバーを処理する方法を必要とします。 この状況では、MPIO が実行されると、サーバーは MPIO なしで同じディスクの複数インスタンスを認識することになります。
MPIO 構成では、複数の NIC を持つサーバーは、対応する MPIO 対応ストレージ・デバイスへのすべての使用可能なインターフェースを介して入出力を送受信できます。 この構成により、ネットワークコンポーネントの1つまたは複数に障害が発生し、パスが故障した場合でも、ストレージトラフィックが安定した状態を維持できる冗長性が確保されます。 マルチパス・ロジックは、入出力の代替パスを使用して、アプリケーションが引き続きデータにアクセスできるようにします。 サーバーに1ギガビットNICが2つ、ストレージサーバーに1ギガビットNICが2つある場合、理論上の最大スループットは約200MB/秒となります。
Block Storage for Classicを単一のパスで接続することは可能ですが、サービスの中断を確実に防ぐためには、両方のパスで接続を確立することが重要です。 MPIO が正しく構成されていないと、ネットワーク障害が発生した場合や、IBM Cloud® チームが保守を実行するときに、ストレージ・デバイスが切断され、オフラインと表示されます。
-
必要に応じて iSCSI マルチセッションを追加します。 ターゲット (MS/T) ごとに複数のセッションを持つことは、 Oracleによって文書化されたストレージ・パフォーマンス・チューニング・ストラテジーです。 MS/Tを使用し、複数のTCP接続を作成することで、ネットワークスタックをより有効に活用することができます。 複数の送信スレッドと受信スレッドを使用することで、パフォーマンスを向上させることができます。
iscsiadm CLI を使用して永続 iSCSI マルチセッションを追加します。
-
既存のセッションをリストします。
iscsiadm -m session
-
以下のコマンドを使用して、セッション数を変更します。 この構成変更は、ホストのリブート時に持続します。
iscsiadm -m node -T <IQN> -p <IP> --op update -n node.session.nr_sessions -v <TOTAL_SESSION>
以下の例は、ターゲット・ポータル 161.26.115.77:3260にさらに 3 つのセッション (合計 4 つ) を追加する方法を示しています。
iscsiadm -m node -T iqn.1992-08.com.netapp:stfdal1306 -p 161.26.115.77:3260 --op update -n node.session.nr_sessions -v 4
-
ポータルにログインして、追加のセッションを確立します。
iscsiadm -m node -T iqn.1992-08.com.netapp:stfdal1306 -p 161.26.115.77:3260 -l
-
セッションをリストして、単一のポータル IP に対して追加されたセッションを確認します。
iscsiadm -m session
-
以下のコマンドで X の代わりにセッション ID を使用して、 iSCSI セッションからログアウトします。
iscsiadm -m session -r X -u
-
ベスト・プラクティス 3-ホストとアプリケーションの最適化
-
ニーズに最も適した入出力スケジューラーを使用してください。 入出力スケジューラーは、ディスク・アクセス要求を最適化するのに役立ちます。 従来は、入出力要求をマージすることで最適化を実現していました。 ディスクの類似セクションで要求をグループ化することにより、ドライブは頻繁に「シーク」する必要がなくなり、ディスク操作の全体的な応答時間が改善されます。 最新の Linux 実装では、いくつかの I/O スケジューラー・オプションを使用できます。 各スケジューラーには、ディスク・アクセス要求をスケジュールする独自の方法があります。
-
Deadline は、 Red Hat 7.9のデフォルトの入出力スケジューラーであり、通常は別の入出力スケジューラーに変更する必要はありません。 これは待ち時間指向のスケジューラーであり、別個の読み取りキューを作成し、書き込みキューを分離することによって機能します。 各入出力要求には、カーネルが有効期限に使用するタイム・スタンプが関連付けられています。 このスケジューラーは、可能な限り最も効率的な順序付けに基づいてキューにサービスを提供しようとしますが、有効期限は、各入出力要求の「締切」として機能します。 入出力要求が締切期限に達すると、最も高い優先順位にプッシュされます。
-
No Operation (NOOP) は、発生する入出力を受け渡す基本スケジューラーです。 このスケジューラーは、すべての入出力要求を FIFO (先入れ先出し) キューに入れます。 このツールは、他のスケジューラーの複雑な入出力スケジューリングの決定が入出力パフォーマンスの低下の原因となっているかどうかを確認するのに役立ちます。 このスケジューラーは、インテリジェント・ストレージやマルチパス環境など、入出力スケジューリングを行うデバイスを使用するセットアップに推奨されます。 ホスト上でより複雑なスケジューラーを選択すると、ホストのスケジューラーとストレージ・デバイスのスケジューラーが互いに競合し、パフォーマンスが低下する可能性があります。 ストレージ・デバイスは通常、入出力をスケジュールする最良の方法を決定することができます。 I/O スケジューラーを確認して構成する方法について詳しくは、 Red Hatの NOOP または None IO Schedulers の使用方法を参照してください。
-
完全に公平なキューイング (CFQ) は、エレベーターと要求マージの両方を使用し、NOOP または締切スケジューラーよりも少し複雑です。 これは、多くの Linux ディストリビューションの標準スケジューラーです。 これは、操作によって行われる同時要求を一連のプロセスごとのプールにグループ化してから、キューごとにディスクを使用するタイム・スライスを割り振ります。
ワークロードが対話式アプリケーションによって支配されている場合、ユーザーは、多数の入出力操作を行うデータベースのパフォーマンスの低下について不満を言う可能性があります。 このような環境では、読み取り操作は書き込み操作よりも著しく頻繁に行われ、アプリケーションはデータの読み取りを待機する可能性が高くなります。 デフォルトのIOスケジューラ設定を確認し、特定のワークロードに合わせて最適化するために、異なるスケジューラを試すことができます。
-
-
入出力キュー項目数を調整します。
/etc/iscsi/iscsid.conf node.session.queue_depth
をデフォルトの 32 から 64 に変更します。 ほとんどのホスト・バス・アダプター (HBA) のデフォルトのキュー項目数は約 32 です。これは通常、ターゲットの最大 IOPS まで生成できます。 ボリュームへのパスが1つしかない場合、それがIOPSの最大数となります。 しかし、同じボリュームで2つ以上のセッションがあれば、ストレージのスループットをターゲットボリュームに1秒あたりにより多くのI/Oをプッシュすることが可能になります。 I/Oの深さを増すことの裏返しとして、レイテンシが増加する。 待ち時間を短縮するには、ジャンボ・フレームを有効にします。 ホスト・キュー項目数の推奨について詳しくは、 ホスト・キュー設定の調整 を参照してください。 -
ジャンボフレームを有効にする ネットワークパス全体で同じになるように設定しますソースデバイス > スイッチ > ルーター > スイッチ > ターゲットデバイス。 チェーン全体で同じ設定になっていないと、チェーン全体がデフォルトの最小設定に変更されます。 IBM Cloud® のネットワーク・デバイス数は、現在 9,000 に設定されています。 最高のパフォーマンスを得るには、すべてのカスタマー・デバイスを同じ 9,000 の値に設定する必要があります。
ホスト上で MTU を 9000 に設定すると、以下の利点があります。
- データは、より少ないフレームで伝送することができます。
- パケット・ヘッダーに保管されるフォーマット情報のバイト数が少なくなるため、データをより速く送信できます。
- パケット処理の CPU サイクルと命令の数を減らすことにより、スループットが向上します。
- ジャンボ・フレームを使用すると、パケットが順不同で到着したり、失われたりする機会が少なくなり、再送信回数が少なくなります。 再送信が少ないほど、TCP リカバリーにかかる時間が短くなります。 その結果、スループットが向上します。
-
VMware 固有のチーミングのベスト・プラクティスをフォローします。 ストレージ・アレイへのネットワーク・アクセスの可用性を高めるためにチーミングを使用する予定の場合は、仮想 IP アドレスが共有されている 2 つのポートのスイッチでポート・セキュリティーをオフにする必要があります。 このポート・セキュリティー設定の目的は、IP アドレスのスプーフィングを防止することです。 したがって、多くのネットワーク管理者がこの設定を有効にします。 これを変更しない場合、ポート・セキュリティー設定により、あるスイッチ・ポートから別のスイッチ・ポートへの仮想 IP のフェイルオーバーが防止され、あるパスから別のパスにチーミングをフェイルオーバーすることはできません。 ほとんどの LAN スイッチでは、ポート・セキュリティーはポート・レベルで使用可能になっているため、ポートごとにオンまたはオフに設定できます。