RAID:磁盘阵列(Reduant Arrays of Independent Disks),即将多块磁盘当成一块使用。
RAID: Independent
Level:仅用于表示磁盘组合方式的不同
raid0,raid1,raid5,raid10,raid50,jbod
raid0:
不允许其中一块磁盘出错,但读写性能出错,容错能力为0,可以作为tmp目录,swap虚拟内存来使用
至少需要两块磁盘,读写性能提升,磁盘空间利用率100%,磁盘大小尽量保持一致,否则,多处的空间无法使用
raid1:
镜像卷,将数据复制成多份儿,分别存在不同的磁盘
每个磁盘上存储的都是完整的数据,读数据的时候,一边拿一块,加快效率
写性能会慢一点。但,raid1无法代替备份,只是为了保证,设备损坏时,业务不会中断。
因为对一块进行删除,另一块也会删除,保证镜像。在硬件层次保证冗余
至少需要 两块磁盘,硬件容错能力。读性能提升,写性能下降磁盘空间利用率50%
raid4:
至少需要3块盘,异或:两者相同则为假
前两块存数据,第三块做异或运算,做为校验码
读写性能都提升,校验码是为了还原缺少盘的数据,会慢一点
所以业务进程不会中止。,允许一块盘出错性能下降。冗余能力有限,空间利用率(n-1)/n
raid5:
至少3块,跟raid4的优点在于,磁盘同时承担存储校验码的任务
校验盘一块不够,但是依然只允许一块盘出错,空间利用率(n-1)/n
raid6:
至少4块,允许两块盘出错,空间利用率(n-2)/n
raid10:
先做raid1 再做raid0 出错概率小一点,至少需要四块,允许不同组内各坏一块儿盘,空间利用率50%
raid01:
先做raid0,再做raid1 出错几率大一点
raid50:
同理
jbod:
将多快盘,简单的连接起来,仅仅只是增加容量而已。用来做hadoop集群
raid的实现方式:
硬件实现:
主板上,raid需要专门的控制器,这种控制器可能在主板上继承了,我们也可以外接的pci-e接口的适配器(HBA卡)
多块硬盘在连接到主机之前,已经组成了一个,Linux看到的是一块硬盘,Linux需要驱动raid(BIOS完成),才能识别磁盘
软件实现:例如每个SAT口接2块,一共接4块儿。 操作系统看到的也是4块,操作系统有个模块可以组织多块磁盘成一个磁盘。
这个模块就是软件代码,模块需要在cpu执行,也会占用cpu的时钟周期。
这个模块叫md。(multiple device)
md,mdadm,/etc/mdadm.conf
mdadm:模式化的工具
可以组合任何块儿设备
-A:装配模式
-C:创建模式
-F:监控模式
管理模式:
-f 模拟硬盘损坏
-r 拿走坏设备
-a 插上新设备替换刚才拿走的坏磁盘设备
创建一个大小为12G的RAID0:
2*6G 或 3*4G或4*3G ...
-C:创建模式
-n #:用于创建RAID设备的个数
-x #:热备磁盘的个数
-l 级别:
-a yes:自动为创建的raid设备创建设备文件:
-c Chunk_Size :指定分块大小(默认512Kb)
演示:
#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
#mdadm -D
创建一个大小为12G的RAID1:
2*12G 或 3*12G
#mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,5}
watch:实时监控进度条,命令要用单引号引起
#watch -n1 ‘cat /proc/mdstat‘