计算机和网络技术的高速发展对存储性能和数据可靠性的要求不断提高。在企业环境中,当公司服务器同时有3000+的用户同时访问时,并且用户同时进行不同的文件读写的操作时,单个硬盘的读写性能有限,容易出现性能瓶颈。常见的并行接口硬盘中如早期的IDE硬盘最高只到达133Mbps,SCSI小型计算机系统接口硬盘的最高传输速率是320Mbps,目前主流的串行接口硬盘SATA接口硬盘中SATA1传输速率是300Mbps,SATA2传输速率是600Mbps,目前SATA3接口最高可以到达6Gbps。为了解决性能问题,早期使用SLED技术即Single Large Expensive Disk,但是由于价格昂贵,在企业中无法大面积应用。1987年美国加州大学伯克利分校Patterson,Gibson和Katz发表了一篇论文《A Case for Redundant Arrays of Inexpensive Disks(RAID)》,自此廉价磁盘冗余阵列的概念产生,但是在企业的实际应用中发现这种技术还是需要花费大量金钱支持,所以更名为Redundant Arrays of Independent Disks即独立磁盘冗余阵列。
【1】RAID的优势:
RAID在容量和管理上的优势
易于灵活的进行容量扩展
“虚拟化”使可管理性极大地增强
RAID在性能上的优势
“磁盘分块”技术带来性能的提高
RAID在可靠性和可用性上的优势
通过冗余技术和热备、热换提升了可靠性
【2】镜像冗余的概念:
镜像冗余使用了磁盘镜像技术;
磁盘镜像是一个简单的设备虚拟化技术,每个I/O操作都会在两个磁盘上执行,两个磁盘看起来就像一个磁盘一样;
镜像冗余可以提高磁盘的读性能。
【3】校验冗余的概念:
根据冗余算法计算阵列中成员磁盘上数据的校验信息,将校验信息保存在其他磁盘资源上;
保证数据可靠性;
和镜像冗余相比较,校验冗余的开销更小。
【4】RAID级别:
不同的RAID级别代表不同的存储性能,不同的数据可靠性,不同的存储成本
RAID0的工作原理:
RAID0是以条带的形式将数据均匀的分布在阵列的各个磁盘上,数据存储单位是CHUNK(条带),默认大小是64K。
性能表现:读写性能均提升
冗余能力:无
空间利用率:100%
至少2块磁盘
RAID1的工作原理:
RAID1以镜像为冗余方式,对虚拟磁盘上的数据做多份的拷贝,放在成员磁盘上。
性能表现:写性能下降,读性能提升
冗余能力:有
空间利用率:50%
至少2块磁盘
RAID5的工作原理:
RAID5采用独立存取的阵列方式,校验信息被均匀的分散在磁盘的各个磁盘上。
性能表现:读写性能均提升
冗余能力:有
空间利用率:(n-1)/n
至少3块磁盘
RAID10的工作原理:
RAID10采用先镜像,后条带化的方式组织阵列。
性能表现:读写性能均提升
冗余能力:有
空间利用率:50%
至少4块盘
除此之外常用的还有RAID50,JBod两种阵列,不常用的有RAID2、RAID3、RAID4等。
【5】RAID配置命令:
在企业中一般使用硬件RAID存储数据,不过Linux系统本身也提供RAID能力,这里我们以软件RAID的实现方式做相关演示
创建一个2G的RAID0设备示例:
#fdisk /dev/sda
解释:创建磁盘分区
n(新建分区)
+1G
n
+1G
t(调整分区类型)
5
fd(设置分区类型为RAID类型)
t
6
fd
w(保存退出)
#partprobe /dev/sda
解释:同步分区数据
#cat /proc/partitions
解释:查看分区是否同步成功
#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
解释:-C表示进入创建模式,-a表示是否为其自动创建设备文件,-n表示设备个数,-l表示设置的RAID的级别
#cat /proc/mdstat
解释:查看当前系统所有启用的设备
#mke2fs -j /dev/md0
解释:高级格式化,将md0创建为ext3类型的文件系统
#mount /dev/md0 /mnt
解释:将RAID0挂载到/mnt的目录中,就可以开始使用这个设备了
#cd /mnt
解释:进入到/mnt的目录下,如果有看到lost+found文件,说明挂载成功
创建一个2G的RAID1设备示例:
#fdisk /dev/sda
解释:开始创建磁盘分区
n(新建)
+2G
n
+2G
n
+2G
t(调整类型)
7
fd(调整为RAID类型)
t
8
fd
t
9
fd
w(保存退出)
#partprobe /dev/sda
解释:同步磁盘分区信息
#cat /proc/partitions
#mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
解释:创建一个类型为RAID1,自动创建设备文件,并且设备的个数为2个的RAID1类型分区md1
#cat /proc/mastat
解释:显示当前系统所有启用的设备
#mke2fs -j /dev/md1
解释:高级格式化,将md1的文件系统类型设置为ext3
#mount /dev/md1 /media
解释:将md1的设备文件挂载到/media的目录下
模拟RAID1设备磁盘损坏示例:
#cp /etc/inittab /media/
解释:复制/etc下的一个文件到/media目录下
#mdadm -D /dev/md1
解释:查看RAID阵列的详细信息
#mdadm /dev/md1 -f /dev/sda8
解释:-f模拟磁盘损坏,将md1阵列中的sda8损坏
#mdadm /dev/md1 -r /dev/sda8
解释:将阵列md1中的磁盘-r删除
#mdadm /dev/md1 -a /dev/sda9
解释:添加新的硬盘sda9,可以看到sda9里信息会在一段时间后同步为sda7的数据
#mdadm /dev/md1 -f /dev/sda7
解释:将sda7磁盘模拟损坏
#umount /media
解释:卸载/media文件目录
#mdadm -S /dev/md1
解释:停止md1阵列
#rm /dev/mad1
解释:删除md1阵列后就彻底消失了
#mdadm -A /dev/md1 /dev/sda7 /dev/sda9
解释:重新装配sda7和sda9磁盘,组成md1阵列,但是由于sda7是坏的,所以md1中只有一个sda9磁盘
模拟RAID1设备热备、热换示例:
此时md1中只有一个磁盘sda9
#mdadm /dev/md1 -a /dev/sda8
#mdadm /dev/md1 -a /dev/sda7
解释:sda7进入阵列后显示的是空闲磁盘的状态
#mdadm /dev/md1 -f /dev/sda9
解释:模拟损坏磁盘sda9,之后sda7磁盘会自动顶上sda9的位置
#watch ‘cat /proc/mdstat‘
解释:周期性的执行指定命令,并以全屏方式显示结果
自动装配文件,无需指定磁盘:
#mdadm -D --scan > /etc/mdadm.conf
解释:将当前RAID信息保存至配置文件,以便以后进行装配
#mdadm -A /dev/md1
解释:无需再指定具体磁盘如sda7、sda9等
原文地址:http://blog.51cto.com/13613726/2082872