可以在SSD上建传统RAID吗?

当被问及“在SSD上能否建传统RAID”这个问题的时候,大家的第一反应应该是“可以建,但是需要Trim命令的支持”。在网上也可以看到很多人拿SSD来建RAID,但基本上都会配置成RAID0或者RAID1。很少有人会去建RAID5,这是为什么呢?

答案很简单,在SSD基础上如果配置类似于RAID5这样的Parity-RAID,那么SSD的整体性能不能很好的发挥出来,更为重要的是Parity-RAID会影响SSD的寿命。一句话,Traditional RAID kills SSD。所以,传统RAID不能直接配置到SSD上,不仅仅是因为Trim命令的支持问题。

在分析传统RAID在SSD上的问题之前,首先看一下RAID能够给SSD整体带来什么价值?Tom’s Hardware在SSD的基础上配置了一个RAID0,并且对比了RAID0和单块SSD的性能。从下图可以看出,当两块SSD被配置成RAID0之后,无论是顺序读或者写,性能基本上可以做到翻倍。所以,配置成RAID0之后,可以提升系统的整体吞吐量。RAID0模式下的顺序读写性能对比如下所示:

第二个比较关心的是随机读写能力。SSD的一大优势在于随机读写能力强,具有很高的IOPS,因此当配置成RAID之后,是否可以将IOPS的能力翻倍呢?答案是不一定的,当队列深度很小的时候,RAID0模式下的随机读写能力和单盘的性能没有差距。当队列深度为1时,RAID0模式下的随机读写性能对比如下:

只有当队列深度达到一定程度之后,RAID0的随机读写能力才能有所提升。当queue_depth达到64时,随机读写性能如下所示,基本上可以达到单盘性能的两倍:

第三个比较关心的问题是延迟。在数据库等应用中,特别在意IO延迟指标。组建RAID之后是否能够降低延迟指标呢?从原理上来讲,RAID只能延长IO延迟,并不能降低IO延迟。Tom’s Hardware的测试结果如下所示:

从上图可以看出,引入RAID0之后,延迟时间增加了。所以,总体来讲,RAID可以提升系统的整体吞吐量;在Queue Depth很大的情况下,提升系统的随机IO能力;对延迟没有改善,只能增加延迟;如果配置成Parity-RAID的方式,还可以提升数据的可靠性。

在很多应用中,需要很强的IO吞吐量、IOPS、数据可靠性以及大容量,那么此时就需要RAID来支持了。但是,前面提到传统Parity-RAID在SSD介质上不能很好的工作,只能加速SSD的磨损。传统RAID主要存在的问题如下:

1、RAID的partial-stripe写问题。在RAID5之类的Parity-RAID中,一旦发生Partial-stripe写,那么首先需要将条带中没有被更新的数据读出来,然后和新写入的数据进行合并,最后计算校验值,将新更新的数据和校验值一同写入磁盘。整个Partial-stripe写的过程就是一次“读-修改-写”。从性能的角度来看,partial-stripe写过程严重影响了性能,增加了IO延迟。更为重要的是partial-stripe写会频繁的更新parity数据。由于SSD采用的是out-of-place的数据更新方式,所以这种频繁parity数据更新会导致SSD写放大系数增大,影响SSD的使用寿命。

2、数据重构问题。传统RAID的数据重构是针对盘的。也就是说当RAID中一块盘出现故障时,RAID会将该盘从RAID组中剔除,并且找一个空闲Spare盘进行数据重构。盘级数据重构会从头至尾对SSD进行数据重构,即Spare SSD会被从头至尾写一遍。在SSD中采用FTL进行page/block映射,如果SSD中的所有page页都被耗尽,那么SSD会被迫启动Garbage Collection,使得SSD性能达到最差。

3、数据同步问题。该问题和数据重构问题类似。

4、SSD盘同时发生故障问题。Parity-RAID将条带中的数据均匀分布到所有磁盘上,使得所有磁盘上的IO均等。对于SSD盘而言,其寿命基本是相同的。因此,在RAID这种使用模式下,SSD在短时间内同时发生故障的概率是很高的。

SSD盘和磁盘相比,底层技术是完全不同的。传统RAID不能很好的配合SSD盘,使得整体性能和SSD使用寿命都会受到严重影响。因此,在SSD上建RAID不是件那么容易的事情。

可以在SSD上建传统RAID吗?,布布扣,bubuko.com

时间: 2024-10-10 07:06:19

可以在SSD上建传统RAID吗?的相关文章

传统RAID的性能瓶颈点在哪里?

众所周知,传统RAID在数据重构方面表现极差,当一块盘发生故障之后,需要几十个小时才能将故障盘中的数据恢复.特别在数据重构的过程中,上层文件系统的性能也会受到极大的影响.并且在应用数据压力的情况下,数据重构的IO和应用的IO交错在一起,导致恶性循环,使得数据重构和应用IO性能都表现极差. 大容量磁盘对传统RAID的最大挑战就在于此.两年前或者更早,存储界的很多公司开始寻找下一代磁盘RAID的技术,其中最有可能和新意的就是DDP(Dynamic Disk Pool),国内的华为将这种技术称之为RA

SSD上如何进行数据保护?

来自存储老吴的博客--存储之道 闪存技术的发展使得其成本下降.容量增加,越来越多的企业级用户也都在考虑如何将闪存SSD技术应用到自己的环境中去,从而解决性能.功耗.体积等存储常见问题.前几年闪存技术主要在互联网领域得到了大量应用,其主要原因在于互联网需要面临大量的访问IO压力,传统的磁盘存储系统无法提供高IOPS的能力,所以,只能借助闪存的高性能来解决互联网发展过程中的难题.所以,今天闪存在互联网领域已经得到大量应用,并成为其标配. 在闪存应用的过程中,PCIe接口在存储上的应用起到了巨大的成功

文件系统在NVMe SSD上的性能表现分析

文件系统是访问存储的一种常用方式,目前常用的文件系统都是针对磁盘的特性进行设计的.例如,为了解决磁盘随机小数据访问的问题,在文件系统层面引入了Page cache机制,利用内存缓存对这种访问进行加速.大多数业务都会存在数据局部性,因此,通过这种Page cache机制可以很好的提升文件系统的性能.另外,文件系统的数据布局也会考虑磁盘的特性,元数据聚合存放在一起,这样可以高效的实现元数据的存放,避免磁盘抖动.如下图描述,包括文件系统在内的存储软件栈在各个层次都会对磁盘抖动问题进行优化. 在NVMe

[转载]如何通过XAMPP在服务器上建多个网站

xampp 是一个非常方便的本地 apache + php + mysql 的调试环境,在本地安装测试 WordPress 等各种博客.论坛程序非常方便.今天我们来给大家介绍一下,如何使用 XAMPP 在本地进行安装多个网站. 一般情况下,我们只需要网站程序放到 xampp/htdoc 目录下,然后在浏览器里输入 ip 地址 http://127.0.0.1/ 或者输入域名 http://localhost/ 就可以了.但是这样我们只能使用一个程序,建立一个网站.如果我们想要测试测试不同的程序,

在centos6.9上实现软RAID

在centos6.9上实现软RAID 什么是RAID? RAID,全称Redundant Arrays of Inexpensive(Independent)Disks.简单翻译叫磁盘阵列.    通俗一点讲就是多个磁盘合成一个"阵列"来提供更好的性能.冗余,或者两者都提供.    目的有两个:一个是提高磁盘的IO能力,提高耐用性. 实现方式有3种:    1.外接式磁盘阵列:通过扩展卡提供适配能力    2.内接式RAID:主板集成RAID控制器-安装OS前在BIOS里配置    3

SSD上安装win7

本来弄个SSD是个开心事,结果比较头疼的是只要选了AHCI模式就装不上系统,废话少说,直接上解决方案: 1.先选择IDE模式装Win7. 2.正常进入系统后,在运行里输入regedit,然后敲回车,进入注册表. 3.找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci 4.将右窗格中的start的数值改为0(以前的键值是3),然后确定,退出注册表,重启电脑. 5.进入BIOS更改位AHCI模式,然后保

在linux系统上建文件系统,建用户,修改用户所属组,重置用户密码

在linux系统上建文件系统,建用户,修改用户所属组,重置用户密码 实验背景:用户及空间 用户名:bosswlb    组别和附属组: bosswlb      主目录:/bosswlb            Shell:bash 空间: 新增    (新增/扩容) 5G   ■解锁  ■密码重置 abcd1234 第一点:建立新的文件系统 我们先来看下系统上现有的文件系统,如下图所示: 下面开始增加一块大小为5G的新盘,使用下面任意一个命令可以扫到新盘: 1.#echo '- - - '> 

(WIP)SSD上的I/O电梯算法与HugePage设置可能导致的Crash(by quqi99)

作者:张华  发表于:2016-03-24版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99 ) 问题 虚机里的某个进程Hang住了,使用"cat /proc/diskstats"命令查看一个SSD硬盘上有很多请求列队. hung_task_timeout_secs参数与D状态 进程等待IO时如果处于D状态,即TASK_UNINTERRUPTIBLE状态,处于这种状态的进程不处理信号,所以ki

[Xarmrin.IOS]使用Build Host 在Windows上建置IOS程式及DeBug

使用Xamarin開發IOS程式時, 必須要在Mac上才可以編譯程式,若想在windows系統上編譯,則可透過Build host的方式, 但還是要有一台Mac的電腦就是了XD 首先你的Mac必須要已經安裝好Xamarin 以下使用的是Visual Studio2010 開啟Visual Studio,點選 工具 → 選項 → Xamarin → IOS Settings 點選右邊Mac build host中的Configue.. 接著會跳出一個畫面,這裡直接手動指定要當成Build Host