web-dev-qa-db-ja.com

KVM / QEMUはmdadmRAID5を適切にサポートしていますか?

Mdadm RAID5アレイにあるゲストファイルを使用して、使用可能なパフォーマンスに近いものを取得することはできません。最高のR5パフォーマンスを得るために、アレイとファイルシステムのすべてのパラメーターを最適化したと信じています。

  • ビットマップを設定=なし
  • set Stripe-cache = 32768(256-32768から試行)
  • EXT4ストライド= 128 /ストライプ幅= 384(チャンク512K、FSブロック4K、3データディスク)

ホスト上でのアレイのパフォーマンスは非常に良好です(キャッシュなしで105MB、キャッシュありで470MB)。それは4x HDDでできており、比較的遅いです。

  • 画像ファイルがrawまたはqcow2の場合は、違いはありません。
  • VirtioSCSIとVirtioSATAの両方を試しました
  • ゲスト自体(Windows 10およびLinux)でも、すべてのキャッシュの組み合わせを試しました

KVM/QEMUはRAID5mdadmアレイではうまく機能しませんか?

これは遅延の問題のようです(ローカルドライブを備えたESXiで見たものと同様です)。

enter image description here

レイテンシはほぼ17秒で、平均書き込みパフォーマンスは1〜10 MBです

Virt XMLの例:

<disk type='file' device='disk'>
   <driver name='qemu' type='raw' cache='writeback'/>
   <source file='/mnt/R5_DATA/data2.raw'/>
   <target dev='sdd' bus='scsi'/>
   <address type='drive' controller='0' bus='0' target='0' unit='3'/>
</disk>

<controller type='scsi' index='0' model='virtio-scsi'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>

ホスト:Debian 9ストレッチ(カーネル4.9.0-8-AMD64) enter image description here

2
MrCalvin

多くのテストを行った後、非常に優れたパフォーマンスを得ることができることは確かです。大きな違いを生むいくつかの状況があります:

  • Mdのバージョン(つまりカーネル)、KVM/QEMU、およびvirshバージョン
  • ゲストのキャッシュ構成(virsh XMLファイルのキャッシュ設定)
  • MD構成、特にstripe_cacheおよびチャンクサイズ(64Kに低く設定する必要があります)
  • EXT4ファイルシステムを最適化します。 noatimeを使用し、UPSバックアップなどに応じて、ジャーナリングとバリアを無効にします。

私はDebian安定版(9、Stretch)を実行していました。つまり、非常に古いバージョンのカーネル、QEMU、およびvirshを実行しています:-(

同じ理由でUbuntu安定版に移行しました。これにより、これらの重要なコンポーネントの新しいバージョンに大きくジャンプできます。私の見解では、Debian安定版は、本当に悪い選択です。 10/Busterがリリースされたとき、それはしばらくの間大丈夫だと推測されますが、遅かれ早かれあなたは時代遅れのシステムを持っているでしょう。

次に、ホストシステムのページキャッシュを使用する必要があることは非常に明白でした。 MD RAID5を使用すると、いくつかの事前キャッシュが実行されます。キャッシュがいっぱいの場合でも、パフォーマンスは非常に良好です。私の場合、200MB /秒を超える書き込みは、JBOD構成で約100MB /秒を実行する低速ディスクに書き込みます。

XMLでcache = noneを使用してから、Windowsゲストのページキャッシュを使用すると、パフォーマンスが非常に遅くなります。 SSDは別の話かもしれません。

最良の結果を得るには、現在のディスクのWindowsゲストのページキャッシュ設定を試してみることも忘れないでください。

1
MrCalvin