西邮大三狗!!!
分类: 服务器与存储
2014-10-15 14:14:50
RAID的实现:
RAID:廉价冗余磁盘阵列,是将几块硬盘变成一个整体使用
后来因为它失去了原有的廉价目的,变得很昂贵,就更名为
独立冗余磁盘阵列
虽然我们无法实现硬件上得RAID因为实力有限,没有买那些设备,但是我们还是能实现RAID的
下面我们就来看一下如何实现软RAID:
第一:软RAID 0的实现:
首先介绍一下RAID 0 的原理,RAID 0是将一股数据流分成两份分别存在两个盘上,以实现提高一倍性能的
现象,不仅如此,它还提供了很大的吞吐量,下面我们就实现一下软RAID 0
第一首先要创建两个分区【当然大于两个也是可以实现raid 0的】,在创建一个大小为2G的RAID时需要
两个大小各为1G的分区,分区创建完之后记得让内核重读一下分区表,
|
Linux raid autodetect是建立软RAID 是需要的系统类型一定记得在分区的时候给需要划分的那两个分区指定成这样的类型,以下是所有可以为其指定的系统类型与系统类型的编号,在指定系统类型的时候只需要输入前面的编号即可
|
分区创建完之后记得输入w 保存退出,若以q退出则以上分区均没有了
分区创建完之后记得格式化,为其创建文件系统ext2或ext3,无论你指定怎样的文件系统类型,但是两个分区的文件系统类型必须一样,这样才能保持一致与同步工作
|
格式化完成之后就可以进行下一步了,建立软RAID 0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda5 /dev/sda6 |
【此命令的意思是创建/dev/md0,如果没有就直接创建/dev/md0,RAID等级为0,由/dev/sda5和/dev/sd6组成】
创建完之后对整个格式化,因为此时这两个分区已经在逻辑上属于一个硬盘了,
mke2fs /dev/md0 |
此时你可以看一下/proc/mdstat
|
这里的chunks 是磁盘读写的最小数据单位,单位是k,默认是64k
还有默认的数据块儿大小是4096k,所以,每次内核都需要计算读了多少个chunk
但是使用命令
mk2tfs -b 2048 -E stride=32 /dev/md0 |
可以直接把需要读多少个chunk告诉内核,这样可以大大的节省CPU的空间,-b是制定一个数据块儿的大小
接下来需要给RAID 0指定一个挂在点挂上就可以了
|
就可以挂载使用了,使用fdisk -l 可以查看
mdadm -D /dev/md0可以查看详细信息 |
此时,应该将RAID 0的配置信息保存,以备出现故障,下次可以恢复,
mdadm -D --scan /dev/md0 >> /etc/mdadm.conf |
下次可以直接使用
mdadm -A --scan直接挂载 |
如何卸载RAID 0
应该先将RAID 0 的挂载点卸载,即
umount /mnt/raid0 |
然后使用命令
mdadm -S /dev/md0 |
将其停止
此时再用 fdisk -l 就看不见了 就完成了完整的卸载
下次再使用时 直接
mdadm -A --scan |
内核会自动读取/etc/mdadm.conf实现挂载全部的软RAID
如果出现意外,RAID 0的一块儿盘坏了,那么将会丢失全部的数据,于是就出现了RAID 1
先介绍一下RAID 1的原理,RAID 1是将数据流同时存到两个盘上,就像镜子一样,两个盘上都有完整的数据,即便其中之一不幸挂了,那么照样还是有完整的数据的,但是,两个盘上存有相同的数据那么其中一块儿盘的空间就浪费了,但是它还是提供了强大的读取能力,虽然写入的速度会和原来一样活着不如以前,但是还是有强大的吞吐量
那么要创建一个大小为2G的RAID 1 那么久需要两个大小同为2G的盘,也就是两个同为2G大小的分区来实现软RAID 1
首先还是需要两个大小为2G的分区,系统类型还是
Linux raid autodetect
重读分区
partprobe /dev/sda |
分完区后格式化
|
然后就可以创建软RAID 1了
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sda7 /dev/sda8 |
此时再将这个整体格式化
mkfs.ext3注意格式化是要保持一致
创建挂载点
mkdir /mnt/raid1 |
挂载RAID1
mount /dev/md1 /mnt/raid1 |
此时就可以使用了
可以cd /mnt/raid1检测 ls -l 会看到
drwx------ 2 root root 16384 07-30 17:00 lost+found |
fdisk -l 也可以看到
此时记得保存其相关信息
mdadm -D --scan /dev/md1 >> /etc/mdadm.conf |
卸载的步骤与卸载RAID 0 一样,
下次使用只需要
mdadm -A --scan 即可挂载全部的RAID设备 |
如果出现意外RAID虽然也可以正常工作,但是它是工作在跛脚的状态下的,此时很容易造成另一块盘的损坏,那么就需要给它添加一个备用的盘,软raid也一样,需要一个备用的分区去做储备
那么再分一个与前两个相同的分区,系统类型依然是fd
分区完成后重读分区表,然后格式化成与RAID 1相同的文件系统然后
我们就模拟一个分区坏了,用命令
mdadm --fail /dev/md1 /dev/sda7 ,模拟md1下sda7坏掉了 |
此时就需要刚才那个分区来用了,
先将好的盘安装好之后再一处坏的盘,避免次生危害
mdadm --add /dev/md1 /dev/sda9【安装完成之后它会自动与另一块盘同步】 |
移除坏的盘:
mdadm --remove /dev/md1 /dev/sda7 |
由于RAID 0与RAID 1都有不足之处,所有都存在一定的风险,所以将两种方法组合起来将会减小一定的风险,并能提供很优越的读写性能,与强大的吞吐量,实现的方法就是用RAID 0做中间层提高读写的能力,用RAID 1做底层提供容错的能力,这样就降低了丢失全部数据的风险
实现软RAID 10是要保证RAID 0 与RAID 1没有挂载就是出去卸载状态的
mdadm -C /dev/md10 -a yes -l 10 -n 2 /dev/md0 /dev/md1 |
这样既可实现软RAID 10了
此时不需要格式化了
直接挂载就可以了
先建立挂载点
mkdir /mnt/raid10 |
挂载
mount/dev/md10 /mnt/raid10 |
即实现了软RAID 10
此时应先保存配置信息至
mdadm -D /dev/md10 >> /etc/mdadm.conf |
卸载的方法与前两种一样
重新装载也于前面相同
mdadm -A --scan既可 |
如此就实现以上三种软RAID!