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

我有一台2005年的老式服务器(双3GHz Xeons,LSI53C1030T RAID / SCSI控制器,256MB缓存,8GB RAM),我正在重新设计它以满足一些轻型VM存储任务.

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

因此经过多次阅读后我发现前面提到的LSI控制器对于硬件RAID并不是那么好,所以我用4x300GB驱动器关闭了通道上的RAID功能,用mdadm软件RAID制作了RAID阵列,并将LVM放在了它.我做了更多测试,结果得到了改善(20MB /秒写入),但这仍然相当可怕.我花了一天时间调整分区,优化块,条带宽度,步幅大小,使用ext4选项,不同的日记选项等,没有太多可观察到的改进.

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

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

因此,如果一个驱动器可以执行75MB /秒读取和55MB /秒写入,为什么其中3个驱动器的RAID5(硬件或软件!)速度如此之快?我究竟做错了什么?我还应该尝试什么?

更新1:
在继续进行实验的同时,我注意到其中一个磁盘有时不希望被分区; parted和fdisk只是拒绝实际写出分区.所以我在所有其他磁盘上尝试了相同的命令,以确保它不是一个系统性问题,它看起来只是隔离到那个磁盘.我开始对它进行smartctl的健康测试,一切都检查得很好. dmesg是驱动器可能出现问题的任何迹象的唯一来源,尽管有相当神秘而且不是特别有用的消息.出于纯粹的好奇心,我拿出了驱动器,重新启动了,并重新编写了我迄今为止所做的所有软件RAID5而没有LVM但是使用了ext4.在第一次尝试时,我在使用dd将64kB块中的4.2GB文件转储到新分区时,将500MB /秒读取和120MB /秒写入到五驱动器阵列(我在此期间发现另外两个300GB驱动器).显然,驱动器虽然没有完全死亡,但并不是特别合作,而且一旦超出等式,一切都运行得更好.

我现在感觉更健康,8MB /秒感觉不对,无论哪个RAID级别.

明天:使用LVM进行测试,然后再回到硬件RAID.

解决方法

众所周知,RAID5对写入性能不利.这样做的原因是每次写入特定磁盘都需要更新奇偶校验块,因此每次写入都需要从阵列中的每个其他磁盘读取奇偶校验的计算,然后将奇偶校验重新写入磁盘.为那个特定的街区保留.

与仅编写单个块相比,这需要很长时间.

如果要快速写入,则镜像配置更好,例如RAID1或RAID10.

相关文章

Linux中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...