Software-Raid

KVM/QEMU 是否正確支持 mdadm RAID5?

  • August 19, 2020

使用位於 mdadm RAID5 陣列上的來賓文件,我無法獲得接近可用性能的任何東西。我相信我優化了陣列和文件系統的所有參數以獲得最佳 R5 性能:

  • 設置點陣圖=無
  • 設置條帶記憶體 = 32768(從 256-32768 嘗試)
  • EXT4 stride=128 / stripe-width=384 (chunk 512K, FS block 4K, 3 data-disk)

主機上的陣列性能非常好(105MB 使用無記憶體,470MB 使用記憶體)。它由 4 個 HDD 組成,相對較慢。

  • 如果圖像文件是 raw 或 qcow2,它沒有任何不同
  • 嘗試了 Virtio SCSI 和 Virtio SATA
  • 嘗試了所有記憶體組合,也在客戶機本身(Windows 10 和 Linux)

KVM/QEMU 是否不能很好地與 RAID5 mdadm 陣列一起使用?

這似乎是一個延遲問題(類似於我在帶有本地驅動器的 ESXi 上看到的)。

在此處輸入圖像描述

延遲近 17 秒,平均寫入性能為 1-10MB

來自 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 stretch(核心 4.9.0-8-amd64) 在此處輸入圖像描述

經過大量測試後,肯定可以獲得非常好的性能。有幾種情況會產生巨大的不同:

  • md 版本(即核心)、KVM/QEMU 和 virsh 版本
  • 為您的訪客記憶體配置(您的 virsh XML 文件中的記憶體設置)
  • MD配置,尤其是stripe_cachechunk size(應該設置低到64K)
  • 優化 EXT4 文件系統,例如使用noatime和依賴 UPS 備份等。禁用日誌和屏障。

我正在執行 Debian stable(9,Stretch),這意味著您執行的是非常舊版本的核心、QEMU 和 virsh :-(

出於同樣的原因,我現在搬到了 Ubuntu 穩定版,這將使您大幅提升到這些重要組件的新版本。在我看來,Debian stable 它確實是一個糟糕的選擇。當 10/Buster 發佈時,猜測它會在一段時間內沒問題,但遲早你會有一個過時的系統。

其次,很明顯您需要使用主機系統的頁面記憶體。使用 MD RAID5 時會進行一些高級記憶體。即使記憶體已滿,性能也很好。在我的情況下,在 JBOD 配置中執行大約 100MB/s 的慢速磁碟上寫入超過 200MB/s。

在 XML 中使用 cache=none 然後使用 Windows 客戶機的頁面記憶體會給您帶來非常緩慢的性能。SSD 可能是另一回事。

還記得在 Windows 客戶機中為目前磁碟使用頁面記憶體設置以獲得最佳結果。

引用自:https://serverfault.com/questions/957605