我正在测试一些用 构建的 RAID 设置mdadm
。这是关于 2 磁盘阵列上的并行读取。
RAID1似乎通过进程平衡读取,某种粗粒度平衡,因此使用简单的 读取整个 raid 阵列dd if=/dev/md0 of=/dev/null bs=1M
,根据nmon
,基本上将所有读取定向到/dev/sda
。当多个dd
命令并行运行时,一些从 读取,sda
一些从 读取sdb
。
奇怪的是,我测试了RAID5,同样的两个磁盘,同样的冗余度和 50% 的磁盘利用率。单个低级读取均匀dd
分布,因此每个读取操作似乎都更好地并行化了。sda
sdb
对 CPU 负载的影响似乎可以忽略不计。我还没有检查写入操作。
对于双磁盘阵列使用 RAID5 有意义吗?
顺便说一下,在 1 和 5 之间来回切换就像mdadm --grow /dev/md0 --level 1
或一样简单5
,没有数据移动,只有并行读取模式发生变化。
答案1
使用 dd 的一次低级读取分布
sda
均匀sdb
,因此每个读取操作似乎都能更好地并行化。
你误解了 RAID-5 中发生的事情。要从 RAID-5 阵列中读取任何数据,必须读取所有磁盘,并从存储在磁盘上的“数据 + 奇偶校验”中提取实际数据全部阵列中的磁盘。
实际上,您必须在 RAID-5 配置中读取两倍的数据才能获取数据,但还具有检测数据损坏的额外优势。(就 RAID-5 防止数据损坏的程度而言。它并不完整。)
在 RAID-1 镜像中,您只能在完全清除阵列后才可检测到数据损坏。
对于双磁盘阵列使用 RAID5 有意义吗?
如果您需要数据损坏检测,可以。但请记住,这需要两倍的读取带宽和两倍的读取 IO 操作数。
答案2
对于双磁盘阵列使用 RAID5 有意义吗?
不,它需要 3 个以上的磁盘。当您想要镜像时,您应该指定 RAID1。不要依赖实现细节,例如 mdadm 会做明智的事情并有效地为 2 个磁盘阵列提供 RAID1。
另外,不要使用 RAID5,重建时可能会再次发生故障。RAID 1 中有两个磁盘,RAID6 或 RAID10 中有两个或以上磁盘。