1 创建磁盘阵列
磁盘阵列(Redundant Array of Independent Disks,RAID) 是由美国加州大学柏克菜分校与1987年提出的,其概念是将多个硬盘组成一个逻辑上的虚拟的硬盘。
使用磁盘阵列的好处:
磁盘阵列的分类方式
- 按硬件设备来区分
- 按数据存储位置来区分:可分为7种
1.1 按数据存储位置来区分
- Linear:数据会先放在第一个硬盘,当此硬盘空间已经使用完时,在依次存储至2、3….个硬盘
- RAID-0:当写入一份数据时,会将数据切割成多个小区块,并将这些 区块分别存储到每个硬盘中
- RAID-1:把数据在每个硬盘中均存储一份,每个硬盘中所存储的数据是一模一样
- RAID-2:数据会以位(bit)为单位切割,并分别存储到各硬盘中,但存储时,此方法会额外保留若干数据的硬盘。支持同步校验码;
- RAID-3:一份数据会以字节(byte)为单位切割,并分别存储到个硬盘中,保留一个固定硬盘存储同位效验码
- RAID-4:一份数据会被切割成固定大小的小区块,并分别存储到个硬盘中。保留一个固定硬盘存储同位效验码
- RAID-5:一份数据会被切割成固定大小的小区块,并分别存储到个硬盘中。将同步校验码分散储存在所有的硬盘。
2 Linux支持的磁盘阵列
图1 Linux支持的磁盘阵列
2.1 Linux支持的磁盘阵列
Linear模式的磁盘阵列,是将多个硬盘组成一个空间更大的硬盘。当存储数据时,会优先放在第1个硬盘中,直到第一个硬盘的空间用完,才会放到第2个硬盘,然后依次类推。
图2 Linux模式的磁盘阵列
2.2 硬件需求
至少需要2个硬盘
注:由于linear磁盘阵列实际上只具有硬盘 分区合并的效果,所以这2个硬盘分区并不需要有相同的容量的硬盘空间
3 创建磁盘阵列
磁盘阵列的配置文件为/etc/raidtab
注:默认并没有此配置文件,需要自行编辑
1、创建配置文件
Raiddev
/dev/md0
raid-level
linear
nr-raid-disks
2
chunk-size
32
persistent-superblock
1
device
/dev/hdb1
raid-disk
0
device
/dev/hdc1
raid-disk
1
2、初始化刚刚创建的/dev/md0磁盘阵列
#mkraid /dev/md0
3、重启,系统便会自动启动此磁盘阵列
4、格式化并挂载此磁盘阵列
#mke2fs –j /dev/md0
#mount –t /ext3 /dev/md0 /mnt/raid
3.1 查看磁盘阵列状态记录文件,停止或启动磁盘阵列
1、停止已启动的磁盘配额:
先卸载已挂载的目录,然后再执行raidstop命令停止指定的磁盘阵列
#umount /dev/md0
#raidstop /dev/md0
注:raidstop命令的作用仅到系统关机为止
2、启动停止中的磁盘阵列
#saidstart /dev/md0
3、查看状态记录文件
可以列出/proc/mdstat状态记录文件的内容
3.2 变更磁盘阵列配置情况与删除磁盘阵列
变更磁盘阵列配置情况
- 先执行raidstop命令停止磁盘阵列
- 修改/etc/raidtab配置文件
- 执行mkraid重新初始化磁盘阵
删除磁盘阵列
- 先执行raidstop命令停止磁盘阵列
- 删除/etc/raidtab配置文件(或改名)
4 容错能力分析
1、容错能力测试
Linear模式虽然不具有容错能力,但如果有硬盘发生故障,并不会导致数据全毁。仍然可以挂载其他正常的硬盘分区,并挽回在这些硬盘中的数据
2、不支持配用硬盘
3、空间利用率分析
如有N台硬盘组成linear磁盘阵列,且每台硬盘的容量均为S,则可存储数据的总容量为N*S
4、读写性能分析
5 创建RAID-5磁盘阵列
ARID-5磁盘阵列存储方式是利用同位校验码的方式来达到数据容错的目的。具体是RAID-5将数据分成大小相同的区块,并分别存储到不同的硬盘中,会保留硬盘的一部分来存储同位校验码。
5.1 硬件需求
由于RAID-5需要存储同位校验码,因此要创建此模式的磁盘阵列,至少需要3个以上的硬盘。硬盘大小最好一致,否则就算有一个硬盘的容量比较大,RAID-5也是不会使用那些多出来的。
5.2 创建磁盘阵列
我们以3个硬盘的分区hdb1、hdc1、hdd1组成RAID-5的磁盘阵列,并讲解如何创建/etc/raidtab磁盘阵列配置文件:
raiddev /dev/md0 //指定磁盘阵列名称
raid-level 5 //指定使用的RAID-5磁盘阵列
nr-raid-disks 3 //此磁盘阵列由3个硬盘所组成
nr-spare-disks 0 //此磁盘阵列的备用硬盘数目
chunk-size 32 //当数据要写入磁盘阵列时,每个写入的大小(单位为KB,且必须为2的幂次方).此设置值的大小,会影响磁盘阵列的读写效率,不过理想的设置值,则按每不计算机的使用情况而异,并无绝对的结果.
persistent-superblock 1
//设置是否要写入磁盘的superblock:设成“1”表示写入,否则设成“0”.若将此参数设成“1”则当磁盘阵列中有硬盘损坏时,系统仍可继续启动;若有备用硬盘,也会同时启用备用硬盘
parity-algorithm left-symmetric
//指定要用哪一种算法计算同位校验吗,可使用的算法有left-symmetric,left-asymmetric,right-symmetric 及right-asymmetric等4种.一般采用left-symmetric能有最好的存取效率
device /dev/hdb1 //指定所有使用的第1个硬盘分区名称
raid-disk 0 //设置上述的分区是此磁盘阵列所使用的第1个硬盘(编号由“0”开始)
device /dev/hdc1 //指定所要使用的第2个硬盘分区名称
raid-disk 1 //设置上述的分区是此磁盘阵列所使用的第2个硬盘
device /dev/hdd1 //指定所要使用的第3个硬盘分区名称
raid-disk 2 //设置上述的分区是此磁盘阵列所使用的第3个硬盘
创建好配置文件,然后执行mkraid、mke2fs及mount命令
5.3 查看磁盘阵列状态记录
当初始化或存储大量数据到RAID-5磁盘阵列时,系统会执行硬盘间的同步,以确保数据正确无误。因此,如果发觉计算机的硬盘指示灯闪烁不停,即可列出/proc/mdstat状态记录文件,查看磁盘阵列是否正在同步硬盘的数据。
5.4 容错能力分析
1、容错能力测试
2、支持备用硬盘:
由于RAID-5磁盘阵列具有容错能力,因此也支持了备用硬盘。要加上备用硬盘,可以自行修改/etc/raidtab配置文件。修改完以后保存退出,依次执行raidstop及mkraid命令
3、空间利用率分析
4、读写性能分析