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+ raid1:2n块磁盘,数据复制为两份,分别分割为n分,分别存储读性能提升,写性能没有提升/同一个数据存储两份
可用空间: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块磁盘 最小磁盘数:3RAID-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也是一种硬件组合的实现方式,大家有兴趣,也可以了解一下