存储
冗余:防止出现单点故障,采取冗余——处处冗余。好处:坏了一个,还有一个。
能否去除一个冗余,达到负载均衡。
控制器是存储器的心脏
光纤:SC 转接头(不常用),lc转接头较常用。单模传输距离远,多模传输距离近,传输速度是一样的。200-300可以使用多模。
存储的几个特点:有CPU、缓存、管理接口等
1. 空间聚集
2. 加快硬盘的访问速度
3. 支持raid技术 :提供冗余,提高访问速度。
raid主要有三个关键概念和技术:
镜像( Mirroring):镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。镜像技术提供了非常高的数据安全性,其代价也是需要至少双倍的存储空间。
数据条带(Data Stripping):数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。通俗来讲,就是把数据分割成n分由n个磁盘来装载,其性能也是单个磁盘的n倍。数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。
数据校验(Data parity):数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。
raid技术:
raid0 :
可以提高我们写入和读取硬盘的速度,但硬盘越多,坏一块硬盘的几率就大。其中一个硬盘坏了,所有的数据都丢失了,没有任何冗余。只适合对读写速度要求很高,对可靠性没有要求。最少两块硬盘,最多不要超过6块硬盘

raid1:
也叫镜像,同时往两块硬盘上写数据,写性能没有提高,读性能可以从两块硬盘上读取数据。提供冗余,但是浪费了两块硬盘。至少浪费了50%的空间。应用于服务器两块硬盘做成raid1.

RAID5:
三块盘,第四块盘计算出前三块的数据,最多可以坏一块硬盘,最多浪费(1/n)空间,有冗余。读性能比较高,可以同时读,但是写性能很差。任何一个磁盘坏了都可以由另一个盘来恢复数据。不能同时坏两块盘。坏了一块硬盘,整体性能急速下降。最少磁盘树:3,3+。RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。
数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷
图中parity部分存放的就是数据的奇偶校验信息
实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据
这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。

raid6:
实现了冗余,可以同时坏两块硬盘。写性能比raid5还要差。最少4块。RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。
RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择

raid 01
读写性能都较好,但空间浪费50%

raid10:oracle数据库里建议使用后两个。
RAID10是先做镜象,然后再做条带。
RAID01是先做条带,然后再做镜象。
比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做条带。RAID01则是先利用3块盘做RAID0,然后将另外3块盘做为RAID0的镜象。
下面以4块盘为例来介绍安全性方面的差别:
1、RAID10的情况
这种情况中,我们假设当DISK0损坏时,在剩下的3块盘中,只有当DISK1一个盘发生故障时,才会导致整个RAID失效,我们可简单计算故障率为1/3。
2、RAID01的情况
这种情况下,我们仍然假设DISK0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要DISK2,DISK3两个盘中任何一个损坏,都会导致整个RAID失效,我们可简单计算故障率为2/3。
因此RAID10比RAID01在安全性方面要强。
从数据存储的逻辑位置来看,在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,比如前面假设的DISK0损坏时,我们也可以发现,这两种情况下,在读的性能上面也将不同,RAID10的读性能将优于RAID01。

RAID10和RAID5的比较
为了方便对比,这里拿同样多驱动器的磁盘来做对比。
RAID5选择3D+1P的RAID方案RAID10选择2D+2D的RAID方案
1、安全性方面的比较
其实在安全性方面,勿须质疑,肯定是RAID10的安全性高于RAID5。我们也可以从简单的分析来得出。当盘1损坏时,对于RAID10,只有当盘1对应的镜象盘损坏,才导致RAID失效。但是对于RAID5,剩下的3块盘中,任何一块盘故障,都将导致RAID失效。
在恢复的时候,RAID10恢复的速度也快于RAID5。
2、空间利用率的比较
用四块盘分别做RAID10和RAID5的情况下:
RAID10的利用率是50%
RAID5的利用率是75%
硬盘数量越多,RAID5的空间利用率越高。
3、读写性能方面的比较
主要分析分析如下三个过程:读,连续写,离散写。
在介绍这三个过程之前,先介绍一个特别重要的概念:cache。
cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的raid卡,一般都包含有几十,甚至几百兆的raid cache。
cache的主要作用是什么呢?
体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜像与电池(或者是UPS)。
cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。两者应该相差3个数量级(1000倍)。
raid01于raid5性能對比总结
所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID5比较好。
相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。
鉴于RAID 5技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用RAID 10技术。
RAID类型 个数 利用率 优缺点总结
RAID0 条带集:2 ,速递: n*100% 读写速率最快,不容错
RAID1 镜像集:2 n*50% 读写速率一般,容错
RAID5 带奇偶校验条带集:3, (n-1)/n 读写速率快,容错,允许坏一块
RAID6 带奇偶校验条带集双校验dp 4,(n-2)/n 读写快,容错,允许坏两块
实例:创建一个10G可用空间的RAID5:
fdisk /dev/sda, n , +5G,l,fd linux raid auto
t, 7 ,fd, t,8 ,fd
partx -a /dev/sda
partx -a /dev/sda 再创建一个分区做空闲设备.
cat /proc/mdstat,mdadm -C /dev/md0 -a yes -n 3 -x 1 5 /dev/sda{7,8,9,10} ,cat /pro/mdstat
mke2fs -t ext4 /dev/md0
mkdir /mydata
mount /dev/md0 /mydata
df -lh
blkid /dev/md0
mdadm -D /dev/md0 查看详细信息
mdadm /dev/md0 -f /dev/sda7 标记为损坏
watch -n1 'cat /proc/mdstat' 动态查看;
cp /etc/fstab /mydata/
cd /mydata/
mdadm /dev/md0 -f /dev/sda8
mdadm /dev/md0 /dev/sda7 移除坏盘
mdadm /dev/md0 -a /dev/sda7 加上恢复盘

mdadm -S /dev/md# 停止md设备
所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID5比较好。
相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。