Software-Raid
KVM/QEMU 是否正確支持 mdadm RAID5?
使用位於 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>
經過大量測試後,肯定可以獲得非常好的性能。有幾種情況會產生巨大的不同:
- md 版本(即核心)、KVM/QEMU 和 virsh 版本
- 為您的訪客記憶體配置(您的 virsh XML 文件中的記憶體設置)
- MD配置,尤其是stripe_cache和chunk 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 客戶機中為目前磁碟使用頁面記憶體設置以獲得最佳結果。