一,什么是RAID?
独立磁盘冗余阵列(RAID, Redundant Array of Independent Disks)简称硬盘阵列,其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘,RAID把多个硬盘组合成为一个逻辑磁区,因此,操作系统只会把它当作一个硬盘。

二,常用的RAID级别。
1)RAID 0


将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快,至少2 块磁盘。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘损坏,则所有的数据都会丢失。

2)RAID 1

两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同资料的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的

3)RAID 5

RAID Level 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是硬盘分割技术。RAID 5 至少需要三颗硬盘, RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。

4)RAID 6


raid 6是由一些大型企业提出来的私有raid级别标准,它的全称叫“independent data disks with two independent distributed parity schemes(带有两个独立分布式校验方案的独立数据磁盘)”。这种raid级别是在raid 5的基础上发展而成,因此它的工作模式与raid 5有异曲同工之妙,不同的是raid 5将校验码写入到一个驱动器里面,而raid 6将校验码写入到两个驱动器里面,这样就增强了磁盘的容错能力,同时raid 6阵列中允许出现故障的磁盘也就达到了两个,但相应的阵列磁盘数量最少也要4个。


5)RAID 10/01

RAID 10/01细分为RAID 1+0或RAID 0+1。

RAID 1+0是先镜射再分割资料,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 0+1则是跟RAID 1+0的程序相反,是先分割再将资料镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

效能上,RAID 0+1比RAID 1+0有着更快的读写速度。

可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。

因此,RAID 10远较RAID 01常用,


三,软RAID

1)首先对磁盘进行分区,将分区的标识符设置成fd(linux raid auto)

2)mdadm -C /dev/md0 -l 0 -n 2  /dev/sdb1 /dev/sdc1


-C参数为创建阵列模式
/dev/md0为阵列的设备名称
-l 0为RAID 级别,可以选择0,1,5等多种不同的级别,分别对应 RAID0,RAID1,RAID5
-n 2 RAID中活动磁盘的数目,/dev/sdb1/dev/sdc1 为参与创建RAID的磁盘名称


3)创建RAID1时候我们可以指定备盘:



mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1
-x1为RAID中备用磁盘的数目,在磁盘中将有一块是配用盘,当使用中的有换掉的时候自动替换上

之后格式化RAID,看下同步cat /proc/mdstat,也可以用mdadm -D /dev/md0 查看详细信息
同步好了之后就可以挂在使用了

4)mdadm -S /dev/md0 停止RAID



下面做个试验:

建立好RAID1并指定一块备盘。
#mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1

# mdadm -D /dev/md0
/dev/md0:
 ……
Failed Devices : 0
 Spare Devices : 1

Rebuild Status : 48% complete     //同步时间

          UUID : b8d7d5d3:79843b13:b9f7e33a:ca4d473e
        Events : 0.1

   Number   Major   Minor   RaidDevice State
      0       8        5        0      active sync   /dev/sdb1
      1       8        6        1      active sync   /dev/sdc1

2       8        8        -      spare   /dev/sdd1          //备盘信息


--file模拟sdc1是坏盘,也可以用 -f:
#mdadm --fill /dev/md0 /dev/sdc1 

在查看信息发现备盘已经自动替换上了,并且在同步。

之后我们可以将坏盘移除,--remove 和 -r 选项一个意思

#mdadm --remove /dev/md0 /dev/sdc1 

增加成为空闲盘,--add = -a
#mdadm --add /dev/md0 /dev/sde1

将空闲盘增加进写入盘
#mdadm -G /dev/md0 -n 4 

在试验期间我们可以多次用mdadm -D /dev/md0 查看Raid 的详细同步信息


最后有一个问题,当我们挂载增大了RAID后,发现文件系统还是原来的大小,这里我们需要知道,在系统中,有物理大小和文件系统大小,当我们将物理系统扩大时,但文件系统大小还是原来的,所有我们要重塑文件系统大小。
#resize2fs /dev/md0   后面也可跟大小,默认是扩大到物理大小,这里默认就可以。

扩大时是先扩大物理大小,在扩展文件系统大小
缩小时是先缩小文件系统大小,在缩小物理大小,不然就会容易溢出产生问题。
另外扩展是在线扩展,缩小则要先卸载


四、LVM

1)LVM实时的步骤


PV物理卷--->VG卷组--->LV逻辑卷--->格式化--->挂载使用文件系统

2)LVM管理命令

功能 物理卷 卷组 逻辑卷

scan(扫描) pvscan vgscan lvscan

create(创建) pvcreate vgcreate lvcreate

display(显示) pvdisplay vgdisplay lvdisplay

remove(移除) pvremove vgremove lvremove

extend(扩充) vgextend lvextend

reduce(减小) vgreduce lvreduce

3)LVM用法

pvcreate 设备名 创建PV

vgcreate 卷组名 物理卷名1 物理卷名2 创建VG

lvcreate -L 大小 -n 逻辑卷名 卷组名 创建LVM

4)增大LVM

lvextend -L +大小 /dev/卷组名/逻辑卷名 扩大LVM

resize2fs /dev/卷组名/逻辑卷名 更新文件系统

5)减小LVM

umount /dev/vg01/lv01 卸载分区

e2fsck -f /dev/vg01/lv01 检查分区

resize2fs /dev/vg01/lv01 450M 先减小文件系统

lvreduce -L 450M /dev/vg01/lv01 再减小分区

6)逻辑卷创建快照

lvcreate  -L SIZE -n NAME -s -p r /path/to/LV

-p r 是指定为只读




注:这里只列除部分,其他信息可以通过看man帮助手册获取。