二那么这些做好的存储系统是怎么运作的
那就要分为硬件RAID和软件RAID
硬件RAID:
有专门的硬件,就是厂商已经帮我们做好了存储系统,不过在用之前要在BIOS配置好
(1) 一般来说内核都能识别得到,识别后为,例如第一个存储系统 /dev/sda第二个存储系统为/dev/sdb ,当然内核是不知道存储系统里面有多少个硬盘,它只认为那是一个大的硬盘
(2) 但是如果内核识别不了的话,就要装驱动程序,驱动程序是厂商发行的时候回配给的
一般来说做好的存储系统,都有自己自带的RAID芯片,有自己的小CPU ,小内存,小电池,当大CPU发出数据读取的时候,就把任务交到小CPU ,它能完成剩下的百分之90的工作,那么有人问了,那如果数据存储在小内存里,然后大的CPU认为它已经存完数据了,那不就是会发生数据丢失吗?所以存储系统会自备一个小的电池,平时会自己冲电,当断电了,会提供几分钟的时间保持小内存的数据,但是如果电耗完了,那么数据就会丢失
然后问题来了,存储系统是怎么与主板CPU交互的,是通过控制器(controller集成在主板的)或者适配器(Adapter独立的卡),通过端口把两者线路连接
软件RAID
利用软件技术把几个块设备模拟成存储系统(大硬盘),不过前提是内核能支持RAID技术,就是说内核里有md(muticdisks)模块,模拟出各假的RAID设备,内核会把它认识为 /dev/md#(0,1,2..)0:第一个逻辑设备,1:第二个逻辑设备,对进程来说是RAID设备,不过内核还是识别到里面的硬盘,比如说CPU对逻辑RAID 发出读写的请求,那么到时就会通知内核中的md 模块,它就会自动地把请求固定在逻辑RAID的哪个硬盘上,然后在这个硬盘里读写数据,返回给逻辑里的RAID,返回给CPU;所以说存储系统的性能取决于CPU的性能,一般来说并不建议在生产系统中使用软件RAID ,不然会是繁忙的CPU更加的繁忙。如果是配置软RAID必须在划分分区时指定分区system id为fd(16进制)格式是Linuxraid auto。
三:手动创建软件RAID,相关命令
#mdadm :可以把任何块设备做成软件RAID
这个命令是一个模式化的命令,就像vim但没那么复杂
创建模式:-C | --create
-C 专用的选项
-l :级别
-n # :设备个数
-a {yes}:自动为其创建设备文件
-c | --chunk大小,数据块大小,默认是64K(2^nK)
-x #:指定空闲盘的个数
管理模式:-a | --add -r |--remove -f |--fail
监控模式:-F | --follow
增长模式:-G |- -grow
装配模式:-A |--assemble
查看RAID设备的信息:-D | --detail
停止RAID设备的阵列:mdadm --stop | -S /dev/md#
将当前配置的RAID 信息保存至配置文件,以便以后开机自动装配
#mdadm --scan -D > /etc/mdadm
三 案例:创建RAID 0设备,总容量为1G,所以需要两个512M的块设备组成
(1) 用虚拟机添加一块SCSI的硬盘
(2) 创建两个分区,/dev/sdb1 , /dev/sdb2每个分区大小为512M注意创建分区时要指定为fd 类型的系统分区
#fdisk /dev/sdb
#fdisk -l /dev/sdb
#partprobe :手动让内核读取一下新创建分区的信息
#cat /proc/partitiotns :查看分区表
(3) 创建一个RAID0 逻辑软设备 /dev/md0 (名字随便起 0 ,1 ,。。),级别为0,设备个数为3,空闲盘个数为1,不指定chunk大小
#mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb{1,2}
# cat /proc/mdstat :查看创建设备的建立信息
ps:这里可以用watch 命令,周期性的执行指定命令,并以全屏显示结果,指定周期长度单位为s ,默认为2
格式:#watch -n # ‘COMMAND
比如 #watch -n 3 ‘cat /proc/mdstat’
(4) 查看刚建立的RAID设备的详细信息
#mdadm -D /dev/md0
(5) 格式化RAID0 设备
#mke2fs -j [-E stride = # ] -b 4096 /dev/md0
#fdisk -l
ps:中括号里的是条带化数目,如果分区时指定的话对性能上来说会有提高,
条带化数=chunk / blocksize
(6) 挂载到 /mnt 目录
#mount /dev/md0 /mnt
#mount
#cd /mnt
#ls
卸载
umont /mnt
(7) 创建RAID 1 ,两个块设备为 /dev/sdb3 /dev/sdb4,/devsdb5,/dev/sdb6
#mdadm -C /dev/md1 -l 1 -n 3 -x 1 /dev/sdb{3,45}
(8) 模拟阵列1中磁盘3坏掉
#mdadm /dev/md1 -f /dev/sdb1
#madam -D /dev/md1
(9) 模拟阵列1中的磁盘3移除
#mdadm /dev/md1 -r /dev/sdb1
#mdadm -D /dev/md1
(10) 模拟增加新盘替换 /dev/sdb6
#mdadm /dev/md1 -a /dev/sdb6
(11) 不想用时,停止阵列
#mdadm -S /dev/md0 如果想彻底不用,那么删除文件即可rm -rf /dev/md0
(12) 重新启用
#mdadm -A /dev/md0 /dev/sdb1 /dev/sdb2
(13)以后自动配置
#mdadm -D --scan > /etc/mdadm.conf
有冗余的级别才支持空闲盘,-x支持空闲盘选项
(14)指定条带大小
#mke2fs -j -E stride=16 -b 4094 /dev/m0
本文出自 “sunshine” 博客,请务必保留此出处http://1187695923.blog.51cto.com/6427672/1654734
原文地址:http://1187695923.blog.51cto.com/6427672/1654734