主要内容:(笔记总结--会不定时补充、修改,如有错误,欢迎指正探讨)
一、 RAID详解 二、 mdadm工具介绍 三、 创建一个RAID的基本过程 四、 磁盘阵列的管理 五、 RAID优化
RAID详解:
描述:RAID:(Redundant Array of indenpensive Disk) 独立磁盘冗余阵列: 磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。磁盘阵列利用的不同的技术,称为RAID level,不同的level针对不同的系统及应用,以解决数据安全的问题。简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。 一般高性能的磁盘阵列都是以硬件的形式来达成,进一步的把磁盘存取控制及磁盘阵列结合在一个控制器(RAID controler)或控制卡上,针对不同的用户解决人们对磁盘输输入输出系统的四大要求: (1)增加存取速度, (2)容错(fault tolerance),即安全性 (3)有效的利用磁盘利用率; (4)尽量的平衡CPU,内存及磁盘的性能差异,提高主机的整体工作性能。可提供的功能:
1.冗余(容错)
2.性能提升RAID分类: 1. 硬件RAID:用RAId接口卡来实现;需要内核支持其驱动,并且该类设备设备显示为SCSI设备,代号为/dev/sd*2. 软件RAID:用内核中的MD(multiple devices)模块实现,该类设备在/etc/下表示为:md*;在现在的RH 5版本中使用mdadm工具管理软RAID;(虽然来说可以用软件模拟实现raid,但是相对对磁盘控制的功能及性能不如硬件实现的好,生产环境中最好使用硬件raid几种常见RAID类型描述:
图示:
1. RAID-0 :striping(条带模式),至少需要两块磁盘,做RAID分区的大小最好是相同的(可以充分发挥并优势);而数据分散存储于不同的磁盘上,在读写的时候可以实现并发,所以相对其读写性能最好;但是没有容错功能,任何一个磁盘的损坏将损坏全部数据;
2. RAID-1:mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区大小分为一样),可增加热备盘提供一定的备份能力;数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;但相对降低了写入性能,但是读取数据时可以并发,几乎类似于raid-0的读取效率;
3. RAID-5 :需要三块或以上硬盘,可以提供热备盘实现故障的恢复;采用奇偶效验,可靠性强,且只有同时损坏两块硬盘时数据才会完全损坏,只损坏一块硬盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务;此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据;
存储方式:简单来说就是,磁盘阵列的第一个磁盘分段是校验值,第二个磁盘至后一个磁盘再折回第一个磁盘的分段是数据,然后第二个磁盘的分段是校验值,从第三个磁盘再折回第二个磁盘的分段是数据,以此类推,直到放完数据为止。这样数据与校验值的循环分离存储就可以达到一定的故障重建功能;但是raid-5的控制较为复杂,且计算大量的校验码,可能给系统造成额外计算的负担(软raid来说,硬件有自己的数据处理能力)
注:RAID中的容错表示即使磁盘故障,数据仍能保持完整,可让系统存取到正确的数据,而SCSI的磁盘阵列更可在工作中抽换磁盘,并可自动重建故障磁盘的数据。
热备份(hot spare or hot standby driver):为了加强容错的功能以及使系统在磁盘故障的情况下能迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份(hot spare or hot standby driver)的功能,所谓热备份是在建立(configure) 磁盘阵列系统的时候,将其中一磁盘指定为后备磁盘,该磁盘在平常并不操作,但若阵列中某一磁盘发生故障时,磁盘阵列即以后备磁盘取代故障磁盘,并自动将故障磁盘的数据重建(rebuild)在后备磁盘之上,因为反应快速,加上快取内存减少了磁盘的存取, 所以数据重建很快即可完成,对系统的性能影响很小。
在任何时候都不要用同一个硬盘上的多个区来做RAID,那样不仅不能提高系统的性能,反而会大大降低整体系统的系能;
对上面几种常用的RAID类型分析后,可知,RAID-0主要可以提高磁盘性能,RAID-1主要可以实现备份容错(RAID-5由于控制机制复杂在此暂不使用),所以可以在实际生产环境下考虑结合RAID-0和RAID-1来实现磁盘存储系统的高性能、高容错。
下面图示的两种raid结合方式解析:
对于一:底层分别用有两块硬盘的raid0实现高并发,再集合两个raid0组实现冗余;下层的任意一个raid0组中有任意一块硬盘会使改组失效,但是两外一个组仍能提供全部数据;
对于二:底层用raid-1实现数冗余,上层用raid-2实现高并发,该种结构中任意一个硬盘的故障,不对本组整体数据工作构成破坏性影响;所以感觉该种方案更优异,在实际生产中有部分应用(具体配置过程再文章最后附);
mdadm工具介绍:
描述: mdadm(multiple devices admin)是 linux下标准的的软raid管理工具,是一个模式化工具(在不同的模式下);程序工作在内存用户程序区,为用户提供RAID接口来操作内核的模块,实现各种功能;RedHat已经内置了该工具;官方最新的版本应该是3.2,需要最新版本可以到官方网站下载或http://www.kernel.org/pub/linux/utils/raid/mdadm/下载源码包进行编译安装(官网一直打不开o(╯□╰)o).
实验环境:RedHhat5.4 ;mdadm版本为v2.6.9 ;
可能不同的版本选项等略有变动,使用时请注意对照自己版本的man文档;
基本语法:
# mdadm [mode] <raid-device> [options] <component-devices>
目前支持的模式: LINEAR(线性模式)、RAID0(striping条带模式)、RAID1(mirroring)、 RAID-4、RAID-5、 RAID-6、 RAID-10、 MULTIPATH和FAULTY
LINEAR:线性模式,该模式不是raid的标准模式,其主要作用是可以实现将几块小的硬盘组合为一块大硬盘来使用;数组存储时一次存满一个硬盘在使用下一个硬盘;对上层来说操作的是一个大硬盘
模式(7种): Assemble:装配模式:加入一个以前定义的阵列;可以使挺值得阵列或从其他主机移出的阵列
Build: 创建:创建一个没有超级块的阵列Create: 创建一个新的阵列,每个设备具有超级块
Follow or Monitor: 监控RAID的状态,一般只对RAID-1/4/5/6/10等有冗余功能的模式来使用
Grow:(Grow or shrink) 改变RAID的容量或阵列中的设备数目;收缩一般指的是数据收缩或重建;
Manage: 管理阵列(如添加spare盘和删除故障盘)
Incremental Assembly:添加一个设备到一个适当的阵列。
Misc: 允许单独对阵列中的某个设备进行操作(如抹去superblocks 或停止阵列)
Auto-detect: 此模式不作用于特定的设备或阵列,而是要求在Linux内核启动任何自动检测到的阵列。
OPTIONS:
选择一个模式的选项:(Options for selecting a mode)
-A, --assemble: 加入并开启一个以前定义的阵列
-B, --build: 创建一个没有超级块的阵列(Build a legacy array without superblocks.)
-C, --create: 创建一个新的阵列
-F, --follow, --monitor:选择监控(Monitor)模式-
G, --grow: 改变激活阵列的大小或形态-I,
--incremental: 添加一个单独的设备到合适的阵列,并可能启动阵列
--auto-detect: 请求内核启动任何自动检测到的阵列
不特定于一个模式的选项:(Options that are not mode-specific)
-c, --config=: 指定配置文件,缺省为 /etc/mdadm.conf
-s, --scan: 扫描配置文件或 /proc/mdstat以搜寻丢失的信息。默认配置文件:/etc/mdadm.conf
-h, --help: 帮助信息,用在以上选项后,则显示该选项信息
-v, --verbose: 显示细节,一般只能跟 --detile 或 --examine一起使用,显示中级的信息;
-b, --