RAID
硬盘镜像技术
旧式RAID:使用IDE
新式RAID:使用SATA、SCSI
RAID种类
RAID0:条带
性能表现:读、写 提升至N倍
冗余能力:无
空间利用率:N
磁盘数量:至少2块
RAID1:镜像
性能表现:写性能下降(需同步),读性能提升(可以交替读)
冗余能力:有
空间利用率:1/2
磁盘数量:至少2块
RAID 0+1:先用条带技术,再对各自数据进行镜像
性能表现:读、写提升
冗余能力:有(硬盘坏时修复:牵一发而动全。)
空间利用率:1/2
磁盘数量:至少4块
RAID 1+0 :先对各自数据进行镜像,再用条带技术。
性能表现:读、写提升
冗余能力:有,(硬盘坏时修复:较RAID1+0更容易,更快)
空间利用率:1/2
磁盘数量:至少4块
RAID4:采用校验码技术,单独1磁盘存放校验码。
性能表现:小于n-1倍,因为检验码盘速度慢,会成为速率瓶颈。
冗余能力:有,不能坏2块
空间利用率:(n-1)/n
磁盘数量:至少3块
RAID5:采用校验码技术,所有盘轮流存放校验码。
性能表现:略小于n-1倍,轮流存放校验码技术,减少瓶颈。
冗余能力:有,不能坏2块
空间利用率:(n-1)/n
磁盘数量:至少3块
RAID 5+0:先RAID5,然后再镜像
性能表现:读、写提升
冗余能力:有
空间利用率:(n-2)/n
磁盘数量:至少6块
JBOD技术:将多个盘组合成1个盘使用,利用HDFS文件系统,可实现在文件系统级别找回丢失文件。
性能表现:无提升
冗余能力:无
空间利用率:100%
磁盘数量:至少2块
使用案例:Hadoop
RAID实现方式
硬件RAID
1.方式 1:
RAID磁盘阵列卡
存储箱:N块硬盘
连接线:连接存储箱于RAID控制器
2.方式2:
RAID控制器:可控制硬盘上的插槽
硬盘插槽:
连接线:连接硬盘与插槽。
RAID实现步骤:
1)通过BIOS界面配置RAID:配置启用RAID控制器,配置相关盘配置成RAID
2)安装操作系统,如果系统不识别RAID,需在安装系统前安装RAID磁盘驱动;
在OS看来,RAID设备文件名为/dev/sda、/dev/sdb这样的格式。
软件RAID
OS中,直接操作硬件的只有内核
RAID前提:内核安装md(多磁盘)模块,通过md模板,将多个物理设备组合成RAID
实现原理:
1.内核模拟一个RAID,设备文件:/dev/md0、/dev/md1。。。
2.CPU将存储数据给/dev/md,md管理模板根据RAID方式存储具体的磁盘设备/dev/sda、/dev/sdb等
性能:取决于CPU能力,较差。
OS一挂,RAID数据无法找回,解决方法:将raid分区系统表示设备为fd(253),这样在存储数据到RAID时,会多写入元数据,
若OS一挂,充值系统时,只要内核安装了md模块,会自动扫面RAID的组成磁盘,这样数据就能重新使用。
mdadm:md管理器,用户空间工具,将任何块设备做成RAID
mdadm [mode] <raiddevice> [option] <component-devices>
创建模式
-C
选项:
-l:级别
0:RAID0
1:RAID1
4:RAID4
5:RAID5
6:RAID6
10:RAID1+0
-n Num 设备个数
-x Num 指定空闲个数
-a {yes|no} 是否自动为其创建设备文件
-c:指定chunk(条带数据块)大小,2^n
-x Num #指定空闲盘个数,这样坏了1个盘,空闲盘将自动替换已坏的盘。
示例:/dev/sdb创建2G的RAID0,2个1G分区
1.创建分区:/dev/sdb1和/dev/sdb2
#fdisk /dev/sdb
n --->p---->1---->回车----> +1G
n---->p---->2----> 回车---->+1G
t ---->1---->fd
t---->2----->fd
w
#partprobo /dev/sdb
#cat /proc/partitions
2.创建RAID
#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
。。。
Continue creating array? y #输入y
。。。
#cat /proc/mdstat #查看当前系统下,已启用的RAID设备
3.制作文件系统
#mke2fs -j /dev/md0
备注:mke2fs -E选项可优化RAID性能
#mke2fs -j -E stride=16 -b 4096 #块大小4K,chunks=16*4096 (此设置需与raid设置一致才能优化性能) chunks / block = stride(条带)
4.挂载文件系统
#mount /dev/md0 /mnt
5.查看磁盘阵列详细信息
# mdadm -D /dev/md0
管理模式:
-f 或 --fail #模拟损坏
-r 或 --remove #将设备移除阵列
-a 或--add #增加设备到阵列
示例:/dev/sdb上建立2G镜像卷
1.创建分区/dev/sdb3 /dev/sdb4
#fdisk /dev/sdb
n ---->p----->3----->回车---->+2G
n---->p------>4------>回车---->+2G
t----->3------>fd
t----->3------>fd
w
#partprobe /dev/sdb
#cat /proc/partitions
2.创建RAID
#mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb3 /dev/sdb4
#cat /proc/mdstat
3.制作文件系统
#mke2fs -j /dev/md1
4.挂载文件系统
#mount /dev/md1 /media
5.模拟磁盘损坏
#mdad -f /dev/md1 /dev/sdb3
6.删掉损坏的磁盘
#mdadm -r /dev/md1 /dev/sdb3
7.重新分区/dev/sdc1(略)
8.将/dev/sdc1加入磁盘阵列
#mdadm -a /dev/md1 /dev/sdc1
监控模式:
-F
增长模式:扩展RAID
-G
装配模式:系统坏了,重装RAID到其他系统
-A
停止阵列:
-S --stop
详细信息:
-D --detail
--scan #将当前RAID信息保存至配置文件,方便日后装配(需与-D结合使用)
eg:mdadm -D --scan > /etc/mdadm.conf (主配置文件,再次状态不需指定设备,只需读取此文件即可)
mdadm -S /dev/md1
mdadm -A /dev/md1 #无需再输入/dev/sdb4 /dev/sdc1
watch 周期性的执行指令
-n Num #指定周期,默认2s
#watch -n Num 'COMMAND'
eg:#watch ’cat /proc/mdstat‘