ストレージの明らかな機能

画像



同僚、仮想化環境と関連システムの運用における実践的な経験を共有したいという要望がありました。



この記事では、ストレージシステムの機能について説明します。 原則として、この情報はストレージシステムを使用する物理サーバーに適用されますが、主に仮想化、特にVMWareについて説明します。



VMwareを選ぶ理由 私はこの仮想化環境の専門家であり、VCP5のステータスを持っています。 長い間、彼は大規模な顧客と協力し、彼らのシステムにアクセスできました。



それでは、ソースから始めましょう。 読者を煩わしい言葉や複雑な計算で悩まさないようにします。 誰もがこの分野の専門家であるとは限らず、多くの人が役に立つかもしれません。



仮想化とは(サーバーの分野で) これは一種のハードウェアおよびソフトウェアシステムで、論理レベルで、コンピューティングリソースをハードウェアから分離できます。 従来の形式では、このサーバーを管理する1つのオペレーティングシステムのみが1つのサーバーで動作できます。 すべてのコンピューティングリソースはこのオペレーティングシステムに割り当てられ、排他的に所有されます。 仮想化の場合、サーバーのコンピューティングリソースの一部を分離されたコンテナの形でエミュレートできるソフトウェアのレイヤーを追加します。このようなコンテナ(仮想マシン)が多数存在する可能性があります。 各コンテナには独自のオペレーティングシステムを使用できますが、おそらく、ハードウェアサーバーが実際には仮想コンテナであるとは思わないでしょう。 同様のソフトウェア層は、ハイパーバイザー、コンテナを作成するための環境、または仮想サーバーと呼ばれます。



ハイパーバイザーはどのように機能しますか? 従来、コンテナ内のオペレーティングシステム(ゲストオペレーティングシステム)からのすべての要求は、ハイパーバイザーによって受け入れられ、順番に処理されます。 これは、プロセッサパワーの操作、RAM、ネットワークカード、データストレージシステムの操作に適用されます。 後者については後で説明します。

ハイパーバイザーによってコンテナー内のオペレーティングシステムに提供されるディスクリソースは、通常、ハイパーバイザー自体のディスクリソースを使用します。 これらは、ローカル物理サーバーのディスクシステム、または外部ストレージシステムから接続されたディスクリソースのいずれかです。 ここでの接続プロトコルはセカンダリであり、考慮されません。



実際、すべてのディスクシステムは、3つの特性によって特徴付けられます。

1.データチャネルの幅

2.入出力操作の最大数

3.最大許容負荷での平均遅延の値



1.チャネル幅は通常、ストレージシステムの接続インターフェイスとサブシステム自体のパフォーマンスによって決まります。 実際には、幅の平均負荷は非常に小さく、20〜30の仮想サーバーのグループであっても、1秒あたり50〜100メガバイトを超えることはめったにありません。 もちろん、特別なタスクもありますが、今では病院の平均気温について話しています。 練習はまさにそのような数を指します。 当然、ピーク負荷があります。 そのような場合、帯域幅が十分でない可能性があるため、インフラストラクチャのサイジング(計画)を行う際には、可能な最大負荷に集中する必要があります。



2. I / O操作は、シングルスレッドとマルチスレッドに分けることができます。 最新のオペレーティングシステムとアプリケーションがマルチスレッドの動作方法を完全に学習したという事実を考えると、負荷全体をマルチスレッドと見なします。 さらにI / O操作をシーケンシャルとランダムに分けることができます。 ランダムアクセスではすべてが明確になりますが、シーケンシャルアクセスではどうでしょうか。 多数の仮想マシンからの負荷、さらに各マシンからのマルチスレッドを考えると、ほぼ完全にランダムなデータアクセスが発生します。 もちろん、シーケンシャルアクセスと少数のスレッドを使用した特定のケースのバリエーションも可能ですが、ここでも平均温度を考慮しています。 最後に、I / O操作は読み取りと書き込みに分けることができます。 クラシックモデルでは、読み取り操作の約70%と書き込み操作の30%がわかります。 おそらくこれは、仮想マシン内のアプリケーションの場合です。 そして、結局のところ、多くの場合、テストおよびサイジングを行う際に、これらの統計をストレージシステムのテストの基礎としています。 そして、彼らは大きな間違いを犯します。 人々は、アプリケーションのアクセス統計とディスクサブシステムのアクセス統計を混同します。 これは同じことではありません。 実際には、ディスクシステムでは、読み取り操作の約30%と書き込み操作の70%の区分が観察されます。

画像

なぜそんな違いがあるのですか?! これは、さまざまなレベルのキャッシュの動作によるものです。 キャッシュは、アプリケーション自体、仮想マシンのオペレーティングシステム、ハイパーバイザー、コントローラー、ディスクアレイ、最後にディスク自体に配置できます。 その結果、読み取り操作の一部はあるレベルでキャッシュに落ち、物理ディスクに到達しません。 書き込み操作は常に到達します。 これは、ストレージシステムのサイズを決定する際に、明確に覚えておく必要があります。



3.ストレージシステムの遅延、つまりレイテンシは、ゲストオペレーティングシステムが要求されたデータをディスクから受信する時間です。 概略的かつ簡略化された、アプリケーションからの要求は次のとおりです。アプリケーション-オペレーティングシステム-仮想マシン-ハイパーバイザー-ストレージシステム-ハイパーバイザー-仮想マシン-オペレーティングシステム-アプリケーション。 実際、2〜3倍の中間チェーンリンクがありますが、技術的な詳細は省略します。

このチェーンで最も興味深いのは何ですか? まず、ストレージシステム自体の応答と、仮想マシンでのハイパーバイザーの動作。 ストレージシステムでは、すべてが明確に見えます。 SSDディスクがある場合、目的のセルからデータを読み取るのに時間がかかります。実際、それだけです。 遅延は最小で、1ミリ秒のオーダーです。 SASディスク10kまたは15kがある場合、データアクセス時間は多くの要因で構成されます:現在のキューの深さ、次のトラックに対するヘッドの位置、ヘッドに対するディスクプレートの角度位置など。 ヘッドが配置され、必要なデータがその下にあるときにディスクが回転するのを待って、読み取りまたは書き込み操作を実行し、新しい位置に飛びます。 スマートコントローラーは、ディスク上のデータへのアクセスのキューを保存し、ヘッドの飛行経路に応じて読み取りシーケンスを調整し、キュー内の位置を交換し、作業の最適化を試みます。 ドライブがRAIDアレイにある場合、アクセスロジックはさらに複雑になります。 たとえば、ミラーには2つの半分のデータのコピーが2つあるので、ミラーの2つの半分と同時に異なる場所から異なるデータを同時に読み取らないのはなぜですか? コントローラは、他のタイプのRAIDと同様に動作します。 その結果、高速SASディスクの場合、標準の待ち時間は3〜4ミリ秒です。 遅い兄弟NL-SASおよびSATAの場合、このインジケータは9ミリ秒に悪化します。



次に、チェーンリンクハイパーバイザーと仮想マシンを検討します。 仮想マシンでは、ハードディスクコントローラも仮想であり、通常はSCSIデバイスです。 また、ゲストオペレーティングシステムは、ISCSIコマンドを使用してドライブと通信します。 ディスクにアクセスすると、仮想マシンはハイパーバイザーによってブロックされ、機能しません。 この時点で、ハイパーバイザーは仮想コントローラーのSCSIコマンドをインターセプトし、仮想マシンを再開します。 これで、ハイパーバイザー自体が仮想マシンのデータファイル(仮想マシンのディスクファイル)にアクセスし、必要な操作を実行します。 その後、ハイパーバイザーは仮想マシンを再び停止し、仮想コントローラー用のSCSIコマンドを再度生成し、仮想マシンのディスクに代わって、ゲストオペレーティングシステムからの最近の要求に答えます。 これらのI / O偽造操作には、物理​​サーバーの中央プロセッサに約150〜700クロックサイクルが必要です。つまり、約0.16マイクロ秒かかります。 一方で、それほどではありませんが、他方では? マシンにアクティブなI / Oがある場合はどうなりますか? 50,000 IOPSとしましょう。 そして、彼女がネットワークと同じくらい激しく通信する場合はどうなりますか? ここでは、プロセッサキャッシュからのかなり可能性の高いデータの損失を追加します。これは、ハイパーバイザーによる偽のリクエストの待機中に変更される可能性があります。 または何か良いことは、実行コアが変更されました。 その結果、仮想マシンの全体的なパフォーマンスが大幅に低下しますが、これはかなり不快です。 実際には、ネットワークとディスクシステムを介した仮想マシンのハイパーアクティブI / Oの影響により、公称値の40%までパフォーマンスが低下しました。

ディスクシステムの遅い動作は、ゲストマシン内のアプリケーションの動作に多大な影響を及ぼします。 残念なことに、多くの専門家はこの効果を過小評価しており、ハードウェアのサイズを決定する際にディスクサブシステムに保存しようとしています。 計算能力の損失は、トラブルとダウンタイムにつながります。 ディスクシステムレベルでの損失は、ビジネスを含むすべての損失につながる可能性があります。 これを覚えて。



ただし、読み取り操作と書き込み操作、およびそれらをさまざまなRAIDレベルで操作する機能に戻ります。 100%のパフォーマンスとしてストライプを使用する場合、次のタイプの配列にインジケーターがあります。



効率アレイの操作タイプ

読書

RAID0 100%

RAID10 100%

RAID5≈90%

RAID6≈90%

記録

RAID0 100%

RAID10 50%

RAID5 25%

RAID6 16%



ご覧のとおり、RAID5とRAID6の書き込みパフォーマンスは大幅に低下しています。 ここでは、I / O操作がディスクシステムを一緒にロードすることを忘れてはなりません。それらを個別に読み取ることはできません。 例:RAID0モードでは、仮想システムのパフォーマンスは10,000 IOPSです。 RAID6をアセンブルし、仮想化環境の従来の負荷、30%の読み取り、70%の書き込みをロードします。 同時に1550 IOPSの書き込みで630 IOPSの読み取りを取得します。 そんなに多くないよね? もちろん、ストレージシステムとコントローラーにライトバックライトキャッシュがあるとパフォーマンスがわずかに向上しますが、すべてに制限があります。 読み取りIOPSは正しい必要があります。



繰り返し言われている信頼性についてのいくつかの言葉。 大きくて遅いディスクに障害が発生すると、アレイの再構築プロセスが開始されます(ホットスワップを処理しましたか?)。 4TBディスクでは、RAID 5および6の再構築プロセスに約1週間かかります。 そして、アレイの負荷が大きい場合、さらに多くなります。 また、再構築プロセスは、アレイディスクの負荷の急激な増加に関連付けられ、別のディスク障害の可能性が増加します。 RAID 5の場合、これにより永続的なデータ損失が発生します。 RAID 6の場合、3番目のドライブを失うリスクが高くなります。 比較のために、RAID10では、実際にはアレイを再構築するときに、データはミラーの片方(一方のディスク)から他方に単純にコピーされます。 これは、はるかに簡単なプロセスであり、時間がかかりません。 平均負荷のある4 TBのディスクの場合、再構築時間は約10〜15時間です。



さまざまなカスタムTierレベルに基づいたデータストレージへの非常に柔軟なアプローチを備えたDell Compellent SC800などのスマートストレージシステムも自然に発生します。 たとえば、このシステムは、RAID10モードのSCL SSDディスクにのみ新しいデータを書き込むことができます。その後、バックグラウンドで、これらのブロックへのアクセスの統計に応じて、データブロックを他のタイプのディスクとRAIDレベルに再配布します。 これらのシステムは非常に高価で、特定の消費者を対象としています。



要約すると、次の点を決定するために残っています。

-仮想化ストレージは、最小の遅延で高速で信頼性が高い必要があります。

-ストレージシステムの仮想化環境を設計する場合、ハードウェアの総予算の約40%を占める必要があります。

-ストレージシステムのサイズを決定する場合、一般に、RAID10に注目する価値があります。

-バックアップは世界を救います!



All Articles