我有用于 / 和 /home 的软件 raid 1,但似乎无法获得正确的速度。
从 md0 读取我得到大约 100 MB/秒 从 sda 或 sdb 读取我得到大约 95-105 MB/秒
我以为两个驱动器会提高速度(读取数据时)。我不知道问题出在哪里。
我使用内核 2.6.31-18
hdparm -tT /dev/md0
/dev/md0:计时缓存读取:2078 MB,耗时 2.00 秒 = 1039.72 MB/秒计时缓冲磁盘读取:304 MB,耗时 3.01 秒 = 100.96 MB/秒
hdparm -tT /dev/sda
/dev/sda:计时缓存读取:2084 MB,耗时 2.00 秒 = 1041.93 MB/秒 计时缓冲磁盘读取:316 MB,耗时 3.02 秒 = 104.77 MB/秒
hdparm -tT /dev/sdb
/dev/sdb:计时缓存读取:2.00 秒内 2150 MB = 1075.94 MB/秒计时缓冲磁盘读取:3.01 秒内 302 MB = 100.47 MB/秒
编辑:突袭 1
答案1
请查看 nixCraf 上的以下文章,操作方法:加速 Linux 软件 Raid 构建和重新同步。
它解释了 /proc 中可以调整以影响软件 raid 速度的不同设置。(不仅仅是在构建/同步期间,如标题所示。)
答案2
什么样的 RAID?
0 和 1 的任何组合都不会对非并发延迟或带宽基准带来很大的改善。RAID 3/5 应该会提供更好的带宽,但延迟没有差异。
C。
答案3
问题是,尽管你的直觉告诉你,Linux 软件 RAID 1 不会在一次读取操作中同时使用两个驱动器。为了获得速度优势,你需要同时运行两个单独的读取操作。
使用 RAID 1 读取单个大文件的速度永远不会更快。
要获得相同级别的冗余度,同时获得预期的速度优势,您需要使用具有“远”布局的 RAID 10。这会将数据条带化并镜像到两个磁盘上。每个磁盘被分成几个段。对于两个段,驱动器 1、段 1 上的条带被复制到驱动器 2、段 2。驱动器 1、段 2 被复制到驱动器 2、段 1。详细说明。
正如你所看到的基准RAID 10,f2 的读取速度与 RAID 0 相似:
RAID type sequential read random read sequential write random write
Ordinary disk 82 34 67 56
RAID0 155 80 97 80
RAID1 80 35 72 55
RAID10,n2 79 56 69 48
RAID10,f2 150 79 70 55
f2 只是表示具有 2 个段的远布局。
此外,在我的个人测试中,我发现写入性能很差。请注意,上述基准测试表明,使用 RAID10,f2,写入速度应几乎相当于单个磁盘。我发现速度下降了近 30%。经过多次实验,我发现将 IO 调度程序从 cfq 更改为最后期限解决了这个问题。
echo deadline > /sys/block/md0/queue/scheduler
以下是更多信息:http://www.cyberciti.biz/faq/linux-change-io-scheduler-for-harddisk/
通过此设置,您应该能够获得大约 185-190 MB/s 的连续读取速度。