RAID1 上的写入访问时间较慢

RAID1 上的写入访问时间较慢

我在我的个人计算机上运行 MongoDB。我注意到,当数据位于我的 2 个最近旋转的硬盘驱动器软件 RAID1 上时,性能比位于没有 RAID 的旧旋转硬盘驱动器上时要慢得多。

旧驱动器,无 RAID

单次操作:

> var d = new Date(); db.test.createIndex({ "test": 1 } ); print(new Date - d + 'ms');
251ms
> var d = new Date(); db.test.createIndex({ "test": "2dsphere" } ); print(new Date - d + 'ms');
83ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
71ms

整个测试套件:250s

 最近的驱动器,RAID1 

单次操作:

> var d = new Date(); db.test.createIndex({ "test": 1 } ); print(new Date - d + 'ms');
1220ms
> var d = new Date(); db.test.createIndex({ "test": "2dsphere" } ); print(new Date - d + 'ms');
597ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
671ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
1ms

整个测试套件:700s

 配置文件

如果它有用(我对此表示怀疑):

/etc/fstab

UUID=d719f337-d835-4688-baf2-3e29f147ff15 /               ext4    errors=remount-ro 0       1
# /home was on /dev/md0p3 during installation
UUID=def01643-c71e-47df-9dc8-67096243aee6 /home           ext4    defaults        0       2
# swap was on /dev/md0p1 during installation
UUID=d43319a8-92fb-437d-b576-ef964276cde none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

 UUID="dd8b1f05-c65b-42e1-a45e-0ef421faf1df" /mnt/bak ext4 defaults,errors=remount-ro 0 1

/etc/mdadm/mdadm.conf

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0  metadata=1.2 UUID=3a0f91ae:51c48198:3d1e26ed:118a1938 name=bouzin:0

# This configuration was auto-generated on Sun, 24 Jan 2016 18:00:55 +0100 by mkconf

问题

从我读到的来看,RAID1 上的写访问权限应大致等于单个等效驱动器上的写访问权限

  • 这个 5400/7200 因子能否解释上述测试中差异的数量级?

  • 如果没有 RAID 会更好吗?

  • 我可以运行任何有趣的测试/基准吗?目前,我只有 Mongo shell 测试,但它们似乎指向 RAID 或驱动器,而不是 Mongo 本身。是否有一些与应用程序无关的测试可以运行来识别任何内容?

  • RAID 配置是否有问题或不理想?

编辑:

重要的是,我混合了 7200 rpm 和 5400 rpm 的驱动器。

答案1

即使驱动器规格相同,RAID1 也会比单个驱动器慢。

原因是虽然 RAID1 通过对两个驱动器执行每次写入来提高可靠性,但同样的操作会降低性能

RAID0 在 2 个驱动器之间分割写入,这通过共享负载提高了性能,但出于同样的原因降低了可靠性。

RAID5 是一种快乐的媒介,它比单个驱动器具有更好的性能,并且可靠性更高,因为驱动器故障不会导致阵列无法运行(尽管在这些条件下它会大幅减慢速度)。

以上绝不是RAID 级别及其优缺点的详尽列表也没有任何特定 RAID 级别的建议。对于硬件建议https://hardwarerecs.stackexchange.com/是一个不错的选择。

无论您采用何种基准测试方法,为了获得准确的基准测试,您都应该运行多次测试并对结果进行平均,并在系统未运行其他任务时在单用户模式下执行此操作,因为其他任何操作都会扭曲您的结果,可能会导致更高的 iowait比预期的次数。

另一种简单的基准测试形式是dd使用特定大小的示例文件来运行。假设您拥有(或创建)了一个大小为 X GB 的随机数据源文件。然后你可以运行time dd if=sourcefile of=target file

通过使用 的dd参数,bs=您可以使用不同的块大小运行测试(请参阅man dd),这对于根据您的需求/环境进行调整可能很有用。

这可能是不言而喻的,但用于 RAID 阵列的驱动器的质量是一个重要因素。 Seagate 的 Barracuda Pro 和 WD 的 Gold 数据中心硬盘被指定为在 10^15 位读取(约 125TB)中少于 1 个不可恢复的错误。

然而,许多其他大容量驱动器的规格并不高。如果您在 RAID 中使用低规格驱动器,则重建很可能会失败。

答案2

RAID1 最多将与阵列中最慢的驱动器一样快。

即使您在 RAID1 中有 3 个驱动器,其中两个是企业级 SSD,一个是消费级 HDD,您也将获得该 HDD 的速度。

对于那些从未在 3 个或更多驱动器上使用过或见过 RAID1 的人,这里是 wiki 摘录(关联):

RAID 1 由两个或更多磁盘上一组数据的精确副本(或镜像)组成

相关内容