数据恢复咨询热线:400-666-3702  

欢迎访问南京兆柏数据恢复公司,专业数据恢复15年

兆柏数据恢复公司

 常见问题

 当前位置: 主页 > 常见问题

自建简单的raid及对计算速度影响的测试

浏览量: 次 发布日期:2023-09-11 09:17:53

自建简单的raid及对计算速度影响的测试

  Jan 19, 2019 增加关闭raid命令,更新测试例子

  Dec 30, 2017 初版

  笔者有一次需要做一个很大的计算,需要大概7T的硬盘空间,手头的计算资源没有一个能满足这个要求。恰好实验室有两块6T的盘不怎么用,于是想到可以把这两个盘组个raid,就可以用起来了。

  ➤什么是raid?

  RAID (Redundant Arrays of Independent Disks),在《鸟哥的私房菜》一书中译为容错廉价磁盘阵列。简单而言,就是一个可以将多个磁盘组成一个大的磁盘的技术。比如上面我遇到的问题,我可以将两块6T的硬盘组成一个12T的空间来使用。

  ➤raid的等级分类

  (1)raid 0

  仍然以上面两个6T的硬盘组成12T的空间为例,在这种模式下,向硬盘写入的数据会被切割成两份,分别存入两个6T的盘中,相当于是并行地写入数据,因此,如果使用两在大小、性能一样的硬盘组成raid0的话,理论的写入速度会变成一块盘的两倍,是不是很爽?当然,由于数据被切割写入两块盘,只要其中一个盘损坏,整个数据就都被损坏了。

  (2) raid 1

  同样用两块相同的盘组成。此时同一份数据会同时写入两块硬盘,所以raid 1被称为映像模式,可用于数据备份

  (3)raid 0+1或raid 1+0

  顾名思义,就是以上两种模式的组合,既可以提高速度,又可以备份数据,适合土豪使用,因为这种模式需要的盘比较多。

宿迁数据恢复

  (4)raid 5

  这种模式至少需要三块硬盘。其中两块盘组成raid 0,另外一块盘用于当前两块盘中的一个出现损坏时进行替换,这样可以保证raid 0数据的安全。当一块硬盘损坏时,要及时更换新的,如果等两块都坏了,就没办法了。

  ➤实现方式

  raid分为软件raid和硬件raid。硬件raid使用专门的raid卡来管理raid阵列,具有稳定和速度快的优点,当然,一块好的raid卡的价格还是比较高的,不过咱可以到某宝上去淘二手的。而软raid则是用Linux系统自带的mdadm软件来实现和管理阵列,在稳定性和性能上是不如硬raid的。下面咱们就动手自己建一个软raid。

  ➤实战

  此处展示两块硬盘组raid 0的操作,同样以上面的两个6T的盘组成12T的盘为例。首先将两个盘插上,用fdisk -l命令会看到两块盘的信息,假设我们看到的盘的名字为/dev/sdb和/dev/sdc。下面可以对这两个盘分别进行分区,也可以不分区,在我们这个实例中,因为我们想用满两个6T盘的所有空间,所以可以不需要在这一步对两个盘进行分区和格式化。然后就是创建raid:

  mdadm --create --auto=yes /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

  这行命令中的选项的含义应该十分明确,就不细述了,具体也可查看mdadm的说明,其中/dev/md0就是12T空间的设备名,此时用fdisk -l就可以看到这个空间。然后就可以把这个空间当作是一块硬盘来操作:

  格式化:mkfs.ext4 /dev/md0

  挂载:mount /dev/md0 /mnt

  过程很简单,只是12T的空间的格式化可能要等几分钟。

  其实到这一步所有的工作已经完成,但是如果重启机器会发现raid还在,只是设备名字变成了/dev/md127,且不会自动挂载,因此要将设备写进系统分区表。首先需要写一个raid配置文件,位于/etc/mdadm.conf,里面写一行信息就可以了:

  ARRAY /dev/md0 UUID=XX

  UUID可以用mdadm --detail /dev/md0来查看。

  然后将/dev/md0写入/etc/fstab文件:

  /dev/md0   /mnt    /ext4     defaults   0  0

  最近笔者遇到一个情况,原先在某服务器上使用三块SSD组了一个raid 0,但是用了一段时间后,其中一块盘出现了问题,于是整个raid盘就挂掉了,所幸的是在笔者的服务器上SSD都是用来读写计算过程中的临时文件的,因此不用担心数据的丢失。于是拔掉了其中一块盘,想将剩下的两块盘重新组成raid 0,此时按上面的操作,出现了报错:

  mdadm: /dev/md0 is already in use.

  其原因是这两块盘原来已经组过raid,在磁盘上会存有raid的相关数据,因此系统检测到已经有一个/dev/md0了,虽然此处已经比原来少了一块硬盘。解决办法是要先将原来的raid关闭掉,命令为

  mdadm --stop /dev/md0

  这样就可以按上述步骤重新组建raid了。

  ➤对计算速度的影响

  理论来说raid 0的速度会是单个硬盘的两倍,而实际会打个折扣。笔者使用Pulay开发的PQS软件做了一个简单的MP2计算测试,体系含有1002个基函数,两次计算将临时文件目录进行更改,一次位于单硬盘上,一次位于raid 0分区。在PQS中,MP2模块会在计算过程中将积分写入硬盘,计算的I/O比较大。计算时间的测试结果如下:

  单核:单硬盘:106 min

  raid 0:   99 min

  12核:单硬盘:66 min

  raid 0:  15 min

  从上面的数据可以看出,12核并行时间和串行时间相比,加速比不高,正是因为该计算硬盘读写大,限制了计算速度。在串行情况下,raid 0对计算速度略有提升,而在12核并行的情况下,raid 0的速度提升就非常明显了,甚至只用了单硬盘的不到四分之一的时间。

  需要说明的是,上面用于测试的单硬盘的转速是7200 rpm,而用于组raid的两块盘的转速是5400 rpm,性能略差一些。

  ➤小结

相关推荐