web-dev-qa-db-ja.com

FlashCacheによるIOの改善

RAID 1(SW-RAID)で稼働する2台のHDD(2x 1 TB)のサーバーがあります。 IO flashcacheを使用してパフォーマンスを向上させたい。実行中のKVM仮想マシンがあり、LVMを使用している。

これに関して、私は次の質問をします:

  • これでも機能しますか? flashcacheはブロックデバイスで機能しますが、これらはすべて独自のセットアップを持つ仮想マシンです。
  • パフォーマンスの向上はどの程度期待できますか?ほとんどの仮想マシンは、Webサイトと一部のホストゲームを実行します。
  • SSDの大きさはどれくらい必要ですか? SSDを大きくすると、より多くのファイルをキャッシュできるため、パフォーマンスが向上しますか?
  • SSDが停止するとどうなりますか? flashcacheは従来のHDDからファイルを取得し、SSDを交換するだけでいいですか?
  • writebackwritethroughwritearoundと比べてどのくらい高速ですか?

残念ながらテストシステムにアクセスできないので、ディスクをアンマウントせずにflashcacheをライブサーバーにインストールできますか?私は素晴らしいチュートリアル here を見つけました。これを使用します。

14
Devator

Flashcacheは、これまでに見たことのない人のために、SSDドライブでLinuxブロックキャッシュを拡張する方法です。キャッシングのために、半分のTB of RAM=を使用して、サーバーを実行するよりも安価です。

これでも機能しますか?

そうすべき。 Linuxのブロックキャッシュは、filesではなく、アクセスされたblocksをキャッシュすることで機能します。 KVMマシンがブロックデバイスに直接アクセスできない場合(そうでない場合)に限り、Linux Block Cacheが機能します。ただし、areにKVM=マシンがブロックデバイスに直接アクセスする場合の答えは明確ではありません).

ファイルベースの仮想ディスクを使用している場合は、確実に機能します。

LVベースの仮想ディスクを使用している場合、私にはわかりません。

パフォーマンスの向上はどの程度期待できますか?

それは私たちが答えることができないものです。それはさまざまな事柄に依存します。要約すると、SSDをアクティブセットのブロックよりも大きくなるようにサイズ設定するための最高のパフォーマンスが得られます。完璧なキャッシュが得られれば、パフォーマンスはシステム全体をSSDで実行した場合と同様になります。あなたは効果的にそれをするでしょう。

SSDの大きさはどれくらい必要ですか?

あなたが必要とする正確なサイズを見つけることは私たちが助けることができないものです。明らかに、多くの方が優れていますが、キャッシュSSDとプライマリストレージの正確な比率を見つけることは簡単なことではありません。

これを複雑にするのは、特定のファイルシステム操作や一部のデータベース構成など、書き込みをすぐにフラッシュするように設定することです。これらの書き込みは一時的にキャッシュされるだけで、フラッシュキャッシュの有無によってパフォーマンスが影響を受けることはありません。

SSDが停止するとどうなりますか?

Linuxにドロップキャッシュを指示するときにも同じことが起こりますが、ひねりを加えています。ドロップキャッシュを使用すると、ブロックキャッシュにあるフラッシュされていない書き込みはすべてディスクにフラッシュされます。 SSDが消えたときに何が起こるかは、 キャッシュモード によって異なります。

Writethrough:すべての書き込みがキャッシュとプライマリストレージに並行して書き込まれるため、VMでエラーを引き起こす突然のSSD損失の可能性は非常に小さいです。

Writearound:すべての書き込みはプライマリストレージに書き込まれ、読み取り時にのみキャッシュされます。 VMでエラーが発生する可能性はありません。

Writeback:すべての書き込みは最初にキャッシュに送られ、バックグラウンドでプライマリストレージに書き込まれます。 SSDに障害が発生した場合にVMでエラーが発生する可能性が最も高く、本番環境ではこのモードを使用しません。

ライトスルーおよびライトアラウンドと比較して、ライトバックはどのくらい速くなりますか?

あなたが書いている量に依存します。書き込みが定期的にプライマリストレージを飽和させる場合、パフォーマンスの向上はかなり重要になる可能性があります。ほとんどが書き込みで読み取られている場合は、改善に気付かないでしょう。

また、書き戻しはあなたがしていることに対して悪い方針なので、それを使用しないでください。

18
sysadmin1138

はい、正しいブロックデバイスを使用している限り、問題なく動作します。そして、トリックがあります。

LVMがPVをスキャンするとき、実際のハードドライブ自体を通して、またflashcache "仮想"デバイスを通してもパーティションを認識します。

明らかな症状の1つは、LVMツールが重複したPVについて文句を言うことです。

これらの警告を回避し、さらに重要なことに、LVM2がflashcacheデバイスを使用していることを確認し、_/etc/lvm/lvm.conf_でフィルターを調整することで、修正が行われます。

LVM.CONF(5)のマンページで説明しますが、-all物理ボリュームがflashcacheによってサポートされている場合は、例を示します。

_filter = [ "a/.*dm.*/" ]
_
4
Pierre Carrier

Lessfs作成者からの階層もあります。これにより、SSDとHDDのハイブリッドデバイスを作成できます。 TierのパフォーマンスはFlashcacheよりも優れているようです。

http://www.lessfs.com/wordpress/

http://www.lessfs.com/wordpress/?p=776

//キリスト教徒

2
Christian

一部のアプリケーションは、バッファリングされていない方法でファイルを開きます。

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT(Linux 2.4.10以降)このファイルとの間のI/Oのキャッシュ効果を最小限に抑えるようにしてください。これは一般にパフォーマンスを低下させますが、アプリケーションが独自のキャッシュを行う場合など、特別な状況で役立ちます。ファイルI/Oは、ユーザー空間のバッファとの間で直接行われます。 O_DIRECTフラグは、それ自体でデータを同期的に転送しようとしますが、データと必要なメタデータが転送されるというO_SYNCフラグの保証はしません。同期I/Oを保証するには、O_DIRECTに加えてO_SYNCを使用する必要があります。詳細については、以下の注を参照してください。

たとえば、これはデータベースでは非常に一般的です。したがって、flashcacheがこの一連のアプリケーションで機能するかどうかを再確認してください。

1
Tagar