RAID阵列

一、RAID-0

1、这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳。
这种模式的RAID 会将磁盘先切出等量的区块(如4KB),然后当一个文件要写入RAID 时,该文件会依据区块的大小切割好,之后再依序放到各个磁盘里面去。
由于每个磁盘会交错的存放数据,因此当你的数据要写入RAID 时,数据会被等量的放置在各个磁盘上面。

举例来说,你有两颗磁盘组成RAID-0 ,当你有100MB 的数据要写入时,每个磁盘会各被分配到50MB 的储存量

2、RAID-0特点

1)组成RAID-0 时,每颗磁盘(Disk A 与Disk B) 都会先被区隔成为小区块(chunk)。
2)当有数据要写入RAID 时,数据会先被切割成符合小区块的大小,然后再依序一个一个的放置到不同的磁盘去。
3)由于数据已经先被切割并且依序放置到不同的磁盘上面,因此每颗磁盘所负责的数据量都降低了。
4)照这样的情况来看,越多颗磁盘组成的RAID-0 效能会越好,因为每颗负责的数据量就更低了,这表示我的数据可以分散让多颗磁盘来储存,当然效能会变的更好。

5)磁盘总容量也变大了,因为每颗磁盘的容量最终会加总成为RAID-0 的总容量。

3、缺点

必须要自行负担数据损毁的风险,由上图我们知道文件是被切割成为适合每颗磁盘分区区块的大小,然后再依序放置到各个磁盘中。如果某一颗磁盘损毁了,那么文件数据将缺一块,此时这个文件就损毁了。由于每个文件都是这样存放的,因此RAID-0 只要有任何一颗磁盘损毁,在RAID 上面的所有数据都会遗失而无法读取。

如果使用不同容量的磁盘来组成RAID-0 时,由于数据是一直等量的依序放置到不同磁盘中,当小容量磁盘的区块被用完了,那么所有的数据都将被写入到最大的那颗磁盘去。

4、创建RAID-0

1)新建分区
创建RAID0 需要两块硬盘,所以我们拿/dev/sdb和/dev/sdc来实验。

# fdisk/dev/sdb//对sdb进行分区

RAID阵列

2)修改分区类型

默认新建分区的类型是Linux,代号83,我们需要将其修改为raid 类型。输入"t" ,然后输入"L" 列出所有的文件格式,这里我们选择"fdLinux raid auto", 输入"fd",然后再输入"p" 查看分区情况,这是分区格式已经变成了Linux raid autodetect.

RAID阵列

3)保存分区

输入"w" 保存分区。

RAID阵列

4)查看现在的状态

# fdisk-l /dev/sdb/dev/sdc

RAID阵列

5)开始创建RAID0
# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd{b,c}1

RAID阵列

说明:
-C--create创建阵列;
-a--auto同意创建设备,如不加此参数时必须先使用mknod命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-l--level阵列模式,支持的阵列模式有linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-n --raid-devices阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
/dev/md0阵列的设备名称;

/dev/sd{b,c}1参与创建阵列的磁盘名称;

6)查看raid0 状态

RAID阵列

7)创建RAID 配置文件/etc/mdadm.conf

创建/etc/mdadm.conf
# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf

# mdadm–Ds >> /etc/mdadm.conf

8)格式化磁盘阵列

# mkfs.ext4 /dev/md0

RAID阵列

9)建立挂载点并挂载
# mkdir/mnt/raid0

# mount /dev/md0 /mnt/raid0

RAID阵列

10)写入/etc/fstab

为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab文件中。

RAID阵列

然后reboot 测试开机是否自动挂载,raid0 创建完毕。

二、RAID-1:完整备份

1、RAID-1需要相同的磁盘容量的,最好是一模一样的磁盘。如果是不同容量的磁盘组成RAID-1 时,那么总容量将以最小的那一颗磁盘为主。

RAID-1主要是让同一份数据,完整的保存在两颗磁盘上头。

2、RAID-1特点
1)一份数据传送到RAID-1 之后会被分为两股,并分别写入到各个磁盘里头去。
2)由于同一份数据会被分别写入到其他不同磁盘,因此如果要写入100MB 时,数据会被复制多份到各个磁盘,结果就是数据量感觉变大了。

3)因此在大量写入RAID-1 的情况下,写入的效能可能会变的非常差(因为我们只有一个南桥)。

3、优点:

由于两颗磁盘内的数据一模一样,所以任何一颗硬盘损毁时,你的数据还是可以完整的保留下来的!所以我们可以说,RAID-1 最大的优点大概就在于数据的备份!读取的效能则还可以,这是因为数据有两份在不同的磁盘上面,如果多个processes 在读取同一笔数据时,RAID 会自行取得最佳的读取平衡。

4、缺点:

不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半而已。RAID-1 的写入效能不佳。

5、RAID 0+1,RAID 1+0

所谓的RAID 0+1 就是:(1)先让两颗磁盘组成RAID 0,并且这样的配置共有两组;(2)将这两组RAID 0 再组成一组RAID 1。这就是RAID 0+1。反过来说,RAID 1+0 就是先组成RAID-1 再组成RAID-0 的意思。

三、RAID-5

1、RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似RAID-0 ,不过每个循环的写入过程中,在每颗磁盘还加入一个同位检查数据(Parity) ,这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。

2、优缺点:
在读写效能的比较上,读取的效能与RAID-0 差不多,不过写的效能一般,这是因为要写入RAID 5 的数据还得要经过计算同位检查码(parity) 的关系。由于加上这个计算的动作,所以写入的效能与系统的硬件关系较大。

3、Spare Disk:预备磁盘的功能
1)当磁盘阵列的磁盘损毁时,就得要将坏掉的磁盘拔除,然后换一颗新的磁盘。
2)换成新磁盘并且顺利启动磁盘阵列后,磁盘阵列就会开始主动的重建(rebuild) 原本坏掉的那颗磁盘数据到新的磁盘上!然后你磁盘阵列上面的数据就复原了!这就是磁盘阵列的优点。不过,我们还是得要动手拔插硬盘,此时通常得要关机才能这么做。
3)为了让系统可以即时的在坏掉硬盘时主动的重建,因此就需要预备磁盘(spare disk) 的辅助。
4)所谓的spare disk 就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何磁盘损毁时,则这颗spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列!然后立即重建数据系统。

5)若你的磁盘阵列有支持热拔插那就更完美了!直接将坏掉的那颗磁盘拔除换一颗新的,再将那颗新的配置成为spare disk ,就完成了!

4、磁盘阵列的优点
你的系统如果需要磁盘阵列的话,其实重点在于:
1)数据安全与可靠性:指的并非资讯安全,而是当硬件(指磁盘) 损毁时,数据是否还能够安全的救援或使用之意;
2)读写效能:例如RAID 0 可以加强读写效能,让你的系统I/O 部分得以改善;
3)容量:可以让多颗磁盘组合起来,故单一文件系统可以有相当大的容量。

4)尤其数据的可靠性与完整性更是使用RAID 的考量重点!毕竟硬件坏掉换掉就好了,软件数据损毁那可不是闹着玩的!

5、mdadm 常见参数解释

RAID阵列

6、创建RAID-5

RAID5 至少需要三块硬盘,我们拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi这四块硬盘来做实验,三块做为活动盘,另一块做为热备盘。

新建分区并修改分区类型

RAID阵列

开始创建RAID5

# mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1

RAID阵列

说明:"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。

查看raid5 状态
# cat /proc/mdstat
# mdadm-D /dev/md5
添加raid5 到RAID配置文件/etc/mdadm.conf并修改
# echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf
# mdadm–Ds >> /etc/mdadm.conf
格式化磁盘阵列
# mkfs.ext4 /dev/md5
建立挂载点并挂载
# mkdir/raid5

# mount /dev/md5 /raid5/

写入/etc/fstab
软件磁盘阵列的配置--创建RAID5

RAID阵列

然后reboot 测试开机是否自动挂载,raid5 创建完毕。