RAID磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID)

RAID包含:RAID 0、RIAD 1、 RIAD 5、 RAID 1+0(也成RAID 10) 只介绍常见的几种企业会用得到的
RAID 0:又称striping(数据分条技术),通过把连接的数据访问分散到多个磁盘上来提高存储性能,这样数据请求就可以被多个磁盘 并行的执行。可以并行的读写,提供最快的速度,单没有冗余的能力,至少要两个磁盘,当其中的一个磁盘挂掉了,那整个数据就丢失了。可以用在只追求速度,而不在乎数据安全的系统上面
RAID 1:又称为Mirroring(镜像方式),也就是数据的冗余,把同样的数据同时写在硬盘中,用得到的容量为1/n,速度变慢,安全性提高,至少要两块磁盘,当磁盘坏掉一块之后,可以通过相对应的磁盘来恢复,(但是不能两个相对应的磁盘同时坏掉)我们也可以把 raid1理解为备份。
RAID 5:不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,当RAID5的一个磁盘数据发送损坏后,利用生效的数据和相应的奇偶校验信息区回风被损坏的数据,至少要三块硬盘,只能坏一块,磁盘的利用率为(n-1)/n,当RAID5坏掉一块后,RAID就不能使用了,必须恢复之后 才能使用,RAID 5的读出速度高,写入的速度一般,raid5有容错的方式(不是冗余)。
RAID 1+0(10):是RAID 0和RAID1的组合形式,继承了RAID 0的速度,又有RAID 1的冗余,但是浪费的空间比较大,使用的n/2,提供了安全性和速度,至少要用4块硬盘磁盘数为双数,存储数据的时候,是先进行的RAID 1的方式,在进行RAID 0的方式,数据先并行的写在一组磁盘,然后下一个数据在并行的写到下一组磁盘中,可以同时坏掉RAID 1的盘。raid1+0首先创  建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0。
说明:RAID分为软RAID和硬件RAID
硬件RAID:
 硬件RAID的实现,看你主板,如果主板支持RAID那直接省事,不支持RAID,那直接买RAID卡做RAID。
在主板设置开启raid。按照步骤提示创建
软件RAID:
 是基于系统的软件工作不稳定,如果系统坏了,RAID整列也就损坏,容易造成数据丢失
下面我们要讲的基于LINUX系统的软件RAID
在LINUX下管理RAID阵列的工具是mdadm工具
mdadm程序是一个独立的程序,能完成所有的软RAID管理功能
主要有7 种使用模式:
Create 使用空闲的设备创建一个新的阵列,每个设备具有元数据块
Assemble 将原来属于一个阵列的每个块设备组装为阵列
Build 创建或组装不需要元数据的阵列,每个设备没有元数据块
Manage 管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个
磁盘
Misc 报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息
Grow 改变阵列中每个设备被使用的容量或阵列中的设备的数目
Monitor 监控一个或多个阵列,上报指定的事件
由于这个工具太强大,不能一一为大家讲解
我们今天主要讲创建任意级别的RAID,和如何删除这个RAID
至于管理就只有您自己下来找资料研究了
往往廉价的东西,用的人都多
RAID分区的ID是fd
创建RAID的流程:
RAID创建----->RAID管理----->RAID的使用----->RAID的维护
RAID设备的成员是硬盘的分区,需要先对硬盘格式化,做RAID的效果是用不同的硬盘的分区来做RAID
1、先添加硬盘
我在已有一块硬盘的基础上面添加4块20G的SATA,sdb,sdc,sdd,sde
在对新添加的硬盘进行分区
sdb:sdb1--->10G  sdb2--->10G
sdc:sdc1--->10G  sdc2--->4G  sdc3--->4G   sdc4--->2G
sdd:sdd1--->10G  sdd2--->4G  sdd3--->4G   sdd5--->2G  
sde:sde1--->10G  sde2--->4G  sde3--->4G   sde5--->1G   sde6--->1G
输入命令 :
fdisk /dev/sdb(对那块硬盘操作就写那块硬盘)
  d   delete a partition     //删除一个分区
  l   list known partition types  //已知的分区类型列表
  m   print this menu          
  n   add a new partition     //添加一个新的分区
  o   create a new empty DOS partition table
  p   print the partition table  //打印分区表
  q   quit without saving changes  //退出但不保存配置
  s   create a new empty Sun disklabel
  t   change a partition's system id  //改变一个分区的系统标识
  u   change display/entry units     //改变显示/条目单位
  v   verify the partition table     //验证分区表
  w   write table to disk and exit   //保存
此时操作系统并不知道已经有新的分区了,所以需要探测一下分区的变化
命令partprobe
具体怎么分区,这里不再累赘
2、创建raid
RAID 0的创建:空间使用率100%,没有容错能力,其中一个磁盘损坏,那么数据全部丢失,并行的写到不同的磁盘特点速度快,不安全
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdc4 /dev/sdd5  (把分区中的两个2G做raid0)
RAID 1的创建:空间使用率50%,容错能力最强,其中一个磁盘损坏,在另外一个磁盘上有完整的数据
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdc2 /dev/sdd2
mdadm -C /dev/md1 -a yes -l 1 -n 2 -x 1 /dev/sdc3 /dev/sdd3 /dev/sde3(建立带热备的raid1)
如果没有建立带热备的raid,当raid的其中一个分区坏掉之后解决的方法:
模拟分区坏掉: mdadm  /dev/md1 -f /dev/sdc2
分区坏掉之后马上移出去:  mdadm  /dev/md1 -r /dev/sdc2
把新的分区添加到raid中: mdadm /dev/md1 -a /dev/sde2
如果建立热备的raid,那只需要把坏掉的分区移出即可,raid1需要两个分区,热备也需要一个分区 ,当坏掉一个分区后。热备分区会立即从spare状态变为active状态
RAID 5的创建:空间使用率n-1/n,是保证速度和容错能力的折中方案,只允许一个磁盘的数据损坏,超过1个磁盘损坏,数据丢失。
mdadm -C /dev/md5 -a yes -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1(建立带热备的raid5)
RAID 10的创建:
mdadm -C /dev/md0 -l1  -n2 -x1 /dev/sdb1  /dev/sdc1 /dev/sdd1
mdadm -C /dev/md1 -l1  -n2 -x1 /dev/sdb2  /dev/sdc2 /dev/sdd2
mdadm -C /dev/md2 -l1  -n2 -x1 /dev/sdb3  /dev/sdc3 /dev/sdd3
mdadm -C /dev/md3 -l0  -n3 -x1 /dev/md0   /dev/md1  /dev/md2
参数解释:
-C 代表创建
-l 代表创建的级别
-n 代表活动的分区,也就是你要给这个级别多少个分区
-x 就是热备份的分区
mdadm的相关命令:mdadm -D /dev/md0  (查看raid的详细信息) -f是删除  -r是移出  -a是添加  -S停用
使软RAID永久生效
mdadm -D -s >> /etc/mdadm.conf
3、把创建的raid格式化(分区只有格式化了才能使用)
mkfs -t ext3[ext4]  /dev/md0
4、把raid挂载
mount  /dev/md0  /data/raid0
实现开机挂载
echo "/dev/md0     /data/raid0    ext4    defaults  0 0" >> /etc/fstab
也可以把/dev/md0改成相应的UUID号  /dev/md0 <------> UUID= 26c7f009-f2280f44-69cea438-3125d40a
5、卸载raid
先卸掉挂载umount---->在停用raid mdamd -S /dev/md0---->使用超级块覆盖raid信息----->mdamd --zero-superblock  /dev/sdb1 /dev/sdc1 /dev/sdd1------>在用fdisk 删除分区
创建:
RAID 0
空间使用率100%,没有容错能力,其中一个磁盘损坏,那么数据全部丢失
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb1 /dev/sdc1
RAID 1(带热备盘)
空间使用率50%,容错能力最强,其中一个磁盘损坏,在另外一个磁盘上有完整的数据
mdadm -C /dev/md1 -a yes -l 1 -n 2 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1
RAID 5(带热备盘)
空间使用率n-1/n,是保证速度和容错能力的折中方案,只允许一个磁盘的数据损坏,超过1个磁盘损坏,数据丢失。
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
查看:
mdadm --detail
mdadm -D -s
模拟容错实验,以RAID5示例:
破坏一个磁盘
mdadm /dev/md5 -f /dev/sdb1
移除损坏的磁盘
mdadm /dev/md5 -r /dev/sdb1
添加新磁盘
mdadm /dev/md5 -a /dev/sde1
在线添加硬盘或者磁带机:
第一步:将新硬盘或者磁带机做好物理连接;
第二步:在Linux系统中以root用户运行命令:
echo "scsi add-single-device x y z u" >> /proc/scsi/scsi
其中:
x是硬盘或者磁带机所在SCSI控制器号;
y是硬盘或者磁带机所在SCSI通道的编号;
z是硬盘或者磁带机的SCSI ID号;
u是硬盘或者磁带机的lun号默认情况都是0
如果x y z参数不正确,系统是不能识别添加的硬盘和磁带机的可以通过 cat /proc/SCSI/SCSI命令来核实是否添加成功。
移除硬盘或者磁带机:
第一步:在Linux系统中以root用户运行命令:
echo “scsi remove-single-device x y z u”> /proc/scsi/scsi
x y z u的定义同上
第三步:物理上断开硬盘或者磁带机连接。
创建以个RAID0设备:
mdadm --create /dev/md0  --level=0  --chunk=32 --raid-devices=3  /dev/sd[i-k]1
创建以个RAID1设备:
mdadm -C /dev/md0 -l1 -c128 -n2 -x1 /dev/sd[i-k]1
创建以个RAID5设备:
mdadm -C /dev/md0 -l5  -n5 -x1 /dev/sd[c-g]1    /dev/sdb
创建以个RAID10设备:
mdadm -C /dev/md0 -l10  -n6 -x1 /dev/sd[b-g]1  /dev/sdh
创建以个RAID1+0设备:
1.安装四块磁盘 分区
rpm -vih mdadm-2.5.4-*
fdisk -l
fdisk /dev/sdb
n
p
t
fd
w
2.做raid5卷
mdadm -Cv /dev/md5 -a yes -n4 l5 /dev/sd[b-e]1
3.做lvm卷
partprobe
pvcreate /dev/md5
vgcreate yan /dev/md5
lvcreate -L 10G -n wei yan
mkfs -ext3 /dev/yan/wei
4.磁盘配额
mkdir /aaa
echo "/dev/yan/wei  /aaa ext3 defaults,usrquota,grpquota 0 0" >> /etc/fstab
mount /dev/yan/wei /aaa
groupadd accp
useradd jerry
useradd -G accp tom
quotacheck -augcv
edquota -u tom
edquota -g accp
quotaon -ugv /aaa