为什么单个驱动器比RAID5中的4个驱动器要快得多呢?

我有一个2005年的老式服务器(双3GHz至强,LSI53C1030T RAID / SCSI控制器256MBcaching,8GB内存),我重新利用它的一些轻的虚拟机存储任务。

首先尝试将4x300GB硬盘放入硬件RAID5中,然后在其上安装Openfiler的LVM和iSCSI。 这导致了非常不一致的读取速度(20MB /秒到2GB /秒,但这可能是caching),以及一个可怕但一致的8MB /秒的写入。 所有这些结果都是通过本地dd和networking上的实际大文件传输进行测量的,两者都得到了类似的结果。

所以经过大量的阅读,我发现前面提到的LSI控制器对于硬件RAID来说并不是那么好,所以我用4x300GB的硬盘关掉了通道的RAIDfunction,用mdadm软件RAID做了RAIDarrays,把LVM放在了它。 我做了更多的testing,结果得到了改善(写入20MB /秒),但是这还是相当可怕的。 我花了一天时间alignment分区,优化块,条纹宽度,步幅,玩ext4选项,不同的日志选项等,没有太多可观察的改善。

我做的另一个实验是在/ dev / md0和/ dev / mapper / vg0-lv0上运行hdparm -tT (这只是整个md0的映射),而在通过LVM时,我得到了2倍的减速。 我已经读过,LVM可以引入一些速度惩罚,但将速度降低一半是不可接受的。

由于这一切都没有意义,我回到基础,在一个单一的驱动器,没有LVM,RAID,只是普通的旧SCSI320做了一个单一的分区,并对其进行了一些testing。 我得到了〜75MB /秒的读取和〜55MB /秒的写入多个运行和多个程序。

所以如果一个驱动器可以做到75MB /秒的读取速度和55MB /秒的写入速度,为什么3个RAID5(硬件或软件! 我究竟做错了什么? 还有什么我应该尝试?

更新1:在继续实验的同时,我注意到其中一个磁盘有时不想被分区; parted和fdisk会拒绝实际写出分区。 所以我在所有其他的磁盘上试过相同的命令,以确保它不是一个系统性的问题,而且它看起来只被隔离到一个磁盘上。 我继续运行smartctl的健康testing,一切都很好。 dmesg是唯一的来源,表明驱动器可能存在某些问题,尽pipe这些信息相当神秘而不是特别有用。 出于纯粹的好奇心,我拿出硬盘,重新启动,重做了目前为止所做的所有软件RAID5,而没有使用LVM,但使用了ext4。 在第一次尝试时,当使用dd在64kB块中将4.2GB文件转储到新分区时,我得到了200MB /秒的读取和120MB /秒的写入到五个驱动器arrays(同时发现两个300GB的驱动器)。 显然这个驱动器虽然没有完全死掉,但并不是特别合作,一旦超出这个范围,一切都变得更好了。

现在我觉得更安全,8MB /秒感觉不对,不pipe是哪个RAID级别。

明天:用LVMtesting,也许回到硬件RAID。

RAID5在写入性能方面非常糟糕。 原因是每次写入特定磁盘都需要更新奇偶校验块,因此每次写入都需要从arrays中的每个其他磁盘读取数据,然后计算奇偶校验,然后重新写入奇偶校验位保留给那个特定的块。

与只编写一个块相比,这需要很长时间。

如果要快速写入,镜像configuration更好,如RAID1或RAID10。