使用LVM和MD RAID 5的KVM中的磁盘I / O速度较慢

我一直在debian下面用kvm安装了两个星期,特别是访客I / O磁盘的性能。

系统:

-Supermicro 1018d-73mtf (X10SL7-F motherboard) -16GB ECC/UB -Intel Xeon E3-1240v3 -6xWD Red 750GB 6Gb/s 

在这个上,我正在两个磁盘上运行Debian Wheezy,其他四个磁盘都是用md来设置raid5,而LVM在客户端存储上。 直接在raid5上进行性能testing(通过创build一个LV并安装它并运行bonnie ++和ddtesting来衡量)是很好的,给我〜220 / 170MB / s的读/写,但是在客户端上,我得到了不错的读取和40-50MB / s的写入,在Windows(Server 2012)和Linux(Debian)上进行了testing。 我已经阅读了alignment磁盘和分区,并重新创build本书的RAID和LVM设置,但havnt收到任何性能提升。

当直接从主机写入数据时,我可以看到磁盘和lvm的负载很高,但是在客人写入的时候测量显示磁盘的大小约为20-30%,而lvm的是“红色”(100%)。 。

KVM /主机系统的正常调整已经完成,将调度程序设置为最后期限,为RAID设置条带caching,在guest虚拟机上caching=无,将SAS控制器卡重新刷新到IT模式(LSI 2308),我不知道,这里是一个关于设置的相关信息的pastebin,希望有人注意到我做了错误的东西http://pastebin.com/vuykxeVg 。

如果你需要任何其他东西粘贴它。

编辑:

这基本上是如何设置驱动器,md和lvm,有一些变化,因为我运行3个磁盘+备用。 http://dennisfleurbaaij.blogspot.se/2013/01/setting-up-linuxmdadm-raid-array-with.html

主持人和嘉宾写作testing(bonnie ++)的截图

主持人: http : //i.imgur.com/IsTprqA.png

客人: http : //i.imgur.com/uVmhFCK.png

不知道我的笔记涵盖了所有的问题,但有了这个存储configuration,你无法正确alignment。

让我们来看看,

  • 您可以根据RAID条带大小调整分区边界,这是可以的。
  • 您可以相应地设置文件系统优化参数,也是可以的。

  • 但为了正确alignmentLVM,您需要RAID条纹以适应LVM的程度。

LVM盘区大小始终为2的电源。因此,您的RAID条带大小需要是2的幂。为了得到它,您需要RAID5中的一些磁盘等于2 ^ N + 1 = 3,5,9。 ..

在RAID5中有4个磁盘是不可能的。

由于软件RAID5没有受保护的回写caching,因此可能会因“部分条带写入惩罚”而显着受损。

也许你也有另外一个限制写性能的原因,但是第一个我会做 – 迁移到RAID10。 在所有6个磁盘上使用RAID10,您可以获得与您的初始设置相媲美的读取性能和客户存储容量,而且无需对准头痛;)。

如果guest虚拟机发出写入请求并请求进入主机caching(caching数据位于物理主机的内存中),并且主机崩溃,并且请求未写入到guest虚拟机虚拟磁盘,也许你会得到你的客人文件系统的问题

如果你的谷歌磁盘io性能有惊人的点击数。 所以我会留在XEN。 😉

所以这似乎是KVM的一个普遍问题。

共同的主线是使用正确的virtio驱动程序。

那么有两行:

  • 在KVM服务器上使用caching

  • 如果hostOS已经在执行磁盘caching, 则不要在KVM服务器上的客户端中使用caching。 这也适用于Xen和其他pipe理程序。

两者都似乎工作 – 但都说,默认只是可怕的。

我已经对KVM和caching性能进行了广泛的testing(可以在 这里和这里阅读),而且您在Internet上find的许多build议已经过时了。 但是让我们一步一步吧

  1. RAID5需要比你自己(从pastebin看到的512K)和BBU(用于写回caching)小得多的块大小(大约32-64K),以适应与顺序读/写模式不同的任何事情。
  2. 对于任何需要IOPS和/或发布大量随机写入的工作负载,请避免使用RAID5。 这完全是客户操作系统所需要的(IOPS和随机写入速度),所以selectRAID5(不支持用于启用arrays范围写回caching的硬件BBU)是错误的。 改用RAID10。
  3. 为您的客人绝对启用caching=写回。 只有在顺序读/写或绝对不规则和caching不友好的模式下,Cache = none才稍微好一些。
  4. 每次使用virtio驱动程序时,都可以使用virtio驱动程序。