天天看点

RAID磁盘阵列

   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

本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1187986,如需转载请自行联系原作者

继续阅读