1、RAID简介
redundant Arrays of Inexpensive Disks Independent
早期提高硬盘IO,主要通过 提高rpm,
scsi:达到15000转
为多块硬盘:提供独立的控制器
1.提高IO能力
2.提高其耐用性
raid实现的方式
外接式磁盘阵列:通过扩展卡提供适配能力
内接式raid:主板集成raid控制器
配置在bios的raid控制器上的
software RAID:软件方式实现的raid
//可以先安装os独立磁盘,后配置raid
//或者os安装在raid上
提高IO能力:
磁盘并行读写;
为raid控制器额外添加内存,额外供电UPS
提高耐用性:
磁盘冗余来实现
2、raid级别
raid-0,条带卷,strio
raid-1,镜像卷,mirror
...
raid-4 //4,5都是3块以上,0,1是2块以上
raid-5
raid-6
raid10
raid01
raid0:多块硬盘平行组织,100%使用,无备份,n块
一个数据分成n块,然后分别存储
读写性能提升
可用空间:N*min(disk1,disk2,disk3...) //最小的那块决定
没有冗错能力
最少磁盘数:2,2+
读性能提升,写性能没有提升/同一个数据存储两份
可用空间:2n/2*min(disk1,disk2...diskn)
有冗余能力
最少磁盘数:2,2+
raid:4: 3块以上的硬盘组织成raid,存储数据时,一块盘存储校验码,其他存储数据
校验码:异或存储// 1101 0110 ,1011,
不允许2块硬盘以上坏
假如一块硬盘坏了以后仍然能够工作:降级模式,读取的时候需要换算恢复数据,比较慢,因此应立即添加新的硬盘恢复
//独立一块盘用于做集中校验盘,压力较大:缺陷
//但是可以降级工作,也可以
//raid可以做热备,自动顶上去,raid控制器做的
raid:5 //轮流做校验盘
读写性能提升
可用空间:(N-1)*min(disk1,disk2,...)
有容错能力,最多1块磁盘
最小磁盘数:3
RAID-6://两块盘做校验,循环校验
读写性能提升
可用空间:(N-2)*min(disk1,disk2,...)
有容错能力,允许坏两块磁盘,
最少:4块
raid10:先两个一组做成raid1,然后做raid0//一对对10
读写性能提升
可用空间:N*min(s1,s2...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4,4+
raid01:先做0,再做1//一边为0,一遍为0,整体为1
raid10:
0 0 0 //一个数据分成3份,3个chunk,一个chunk复制两份,分别存储
【】[] 【】[] 【】[]
raid01://元数据先复制成两份,再分割成chunk
—————————— ————————————
[] [] [] 【】【】【】
raid7:为某公司的私有产品
JBOD:just a Bunch of Disks
//将多块硬盘的空间合并为一个大的连续空间使用
可用空间:sum(s1,s2...)
//例如只有1t的硬盘4个,文件大小为2T
//
常用级别:raid-0,raid-1,raid-5,raid-10,raid-01,JBOD
实现方式:
硬件实现方式:
软件实现方式:
Centos6 上的软件RAID的实现
结合内核总的md(multi device)
3、软件方式的raid实现
mdadm(multi device)模式化工具
命令的语法格式:mdadm [mode] 设备名 [options] 成员设备
支持的raid级别:LINEAR(JBOD),0,1,4,5,6,10,
设备名:/dev/md#,
模式:
创建:create -C
装配:Assemble -A
监控:Fllow or Monitor -F
管理:Manage -f,-r,-a
Grow:改变设备的数目,不能改变阵列属性,一般不用
Misc:查询或修改阵列中设备信息,一般不用
-C 创建模式
-n # :使用多少设备来创建RAID
-l # :raid级别
-a {yse|no} //自动创建raid设备的设备文件
-c //CHUNK_SIZE 指定块大小,默认是64M
-x //指定空闲盘的个数,不支持冗余能力的级别,空闲盘是没有任何意义的
示例:创建10G空间可用的raid5
fdisk /dev/sdb //创建4个5G的分区,调整为linux raid:fd,一个作为备份
parted -a /dev/sdb
mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb[1,2,3,5]
cat /proc/mdstat
mke2fs -t ext4 /dev/md0
mount /dev/md0 /mnt
mdadm -D /dev/md0 //显示详细信息
State : clean, degraded //degraded:降级使用
mdadm /dev/md0 -f /dev/sdb2 //模拟损坏
watch -n 1 'mdadm -D /dev/md0' //每1s查看一次
//会自动重组
mdadm /dev/md0 -f /dev/sdb1 //再次模拟一块损坏,会降级使用
mdadm /dev/md0 -r /dev/sdb{1,2} //移除损坏的盘
mdadm /dev/md0 -a /dev/sdb{1,2} //再次添加硬盘
mdadm /dev/md0 -a /dev/sdb6 //新加一块硬盘,只会作为空闲盘使用,要想增加raid盘数量,智能使用mdadm grow模式
管理模式:
-f 标记指定磁盘为损坏
-a 添加磁盘
-r 移除磁盘
-S 停止设备
mdadm -S /dev/md#
观察md的状态
cat /proc/mdstat
watch -n 1 'mdadm -D /dev/md0' //动态查看
-n 刷新间隔,单位是秒
练习1:创建一个可用空间为10G的RAID设备,要求其chunk大小为128k,fs为ext4,开机自动挂载
(1)创建20G分区,
(2)格式化
mke2fs -t ext4 -b 2048 -L ’test' /dev/DEVICE
(3)fstab
LABEL='TEST' /test ext4 defaults,acl 0 0
(4)mount
练习2:创建一个可用空间为10G的RAID0设备,chunk为256k,fs为ext4,开机自动挂载至/mydata
注意:
raid的冗余,只能保证设备的损坏,而导致的问题有所解决,而不能决定认为损坏的设备
注意:JBOD也是一种硬件组合的实现方式,大家有兴趣,也可以了解一下