linux学习日记十三 软件磁盘阵列RAID




linux学习日记十三 软件磁盘阵列RAID

2022-07-20 20:31:08 网络知识 官方管理员

磁盘阵列的英文全称是RedundantArraysofInexpensiveDisks(RAID),即容错廉价磁盘阵列。可以通过一些技术将多个较小的磁盘整合成为一个较大的磁盘设备;而这个设备可不止存储功能而已,它还具有数据保护功能。

RAID的等级:

×RAID-0(等量模式,stripe):性能较佳

这种模式使用相同型号和容量的磁盘来组成,可以有多个,RAID会将每个磁盘划分成等量的区块(一般为4K,2K等等),然后当一个文件被写入时,该文件会依据块大小切割好,之后依序放到各个磁盘里面去,由于每个磁盘交错存放数据,因此当你的数据要写入RAID时,数据会被等量的放置到各个磁盘上去。越多磁盘组成RAID-0,那么的话性能肯定就越好了。

缺点:一个磁盘挂点,整个文件系统崩盘,无法恢复了。并且所有磁盘容量必须一样,不然性能会下降。

×RAID-1(映像模式,mirror):完整备份

这种模式也要相同型号,相同容量的磁盘,最好完全一样,一个模子刻出来的。

数据传送到I/O总线被复制多份到各个磁盘,因此写的性能会变得很差,不过如果你用硬件RAID(磁盘阵列卡),磁盘阵列卡会主动帮你复制,不需要I/O总线。但是磁盘阵列卡很贵滴呀呀,我买不起,所以很悲剧。RAID-1最大的用途在于备份,不过它的读取性能很好。

×RAID0+1,RAID1+0

RAID-0的性能较佳但是数据不安全,RAID-1数据安全但是性能不佳,那能不能组合下撒。

RAID0+1:先让N块磁盘组成RAID-0,同时再让另外的N块磁盘也组成RAID-0,这样子我得到了两组RAID-0,然后将这两组RAID-0再组成一组RAID-1。

RAID1+0:先让2N块磁盘组成N个组,每个组两个磁盘,每个组里面的两个磁盘组成RAID-1,然后将这N组RAID-1组成RAID-0。

缺点:磁盘有一半的容量用来做备份了,悲剧呀!!!

RAID-5:性能与数据备份的均衡考虑

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

RAID-5的容量要减掉一个磁盘容量,也就是阵列的磁盘总数N-1,因为需要一个磁盘容量来保存同位检查数据Parity

RAID-5的读取性能很不错,跟RAID-0有得一拼,但是写入性能就很尴尬了,在软件磁盘阵列的时候,CPU还得花时间去计算同位检查数据。同时它只能保证一个磁盘损坏数据的安全,如果两个磁盘损坏就挂了。

RAID-6:跟RAID-5类似,不过这次会使用两块磁盘容量作为Parity的存储,它可以支持两块磁盘同时损坏,这个概率应该比走在马路上被一辆驴车撞到的概率还低吧,^_^

====SpareDisk:预备磁盘的功能====

为了让系统可以实时在坏掉磁盘时主动重建,需要预备磁盘sparedisk的辅助,平时不包含在磁盘阵列中,当磁盘阵列有任何磁盘损坏时,sparedisk马上被主动拉入磁盘阵列中,并将坏掉的磁盘移除磁盘阵列,然后立即重建数据系统,如果你的磁盘阵列还支持热插拔就更爽了,因为这个时候只需要把坏的那颗磁盘拔下来,换上一个新的,再将新的磁盘设置成sparedisk,完成了,不用关机重启可以完成一切。这对服务器的稳定性有很好的帮助。

磁盘阵列的优点:

×数据安全与可靠性,这里指的是硬盘坏了数据可以挽回。

×读写性能,RAID-0可以加强读写性能,让你的系哦I/O系统部分得以改善

×容量:可以让多个磁盘组合起来,因此单一文件系统可以有相当大的容量。

centos提供的软件磁盘阵列为mdadm这套软件,以分区或磁盘为单位,也就是说你不需要多个磁盘就可以设计你的磁盘阵列了。此外,mdadm支持刚刚提到的RAID-0,RAID-1,RAID-5等级,还支持sparedisk的功能。而且提供的管理机制还可以达到类似可以热插拔的功能,可以在线(文件系统正常使用)进行分区的抽换,使用上非常的方便。。

注意:硬盘磁盘阵列在linux看起来就是一个大的磁盘,所有设备文件名为/dev/sd[a-p],因为使用到SCSI的模块的原因。而软件磁盘阵列因为是系统仿真,因此使用的设备文件名时系统的设备文件,文件名为/dev/md0,/dev/md1,两者注意区别。

====软件磁盘阵列的设置====

#mdadm–detail/dev/md0

#mdadm–create–auto=yes/dev/md[0-9]–raid-device=4–level=[015]–spare-device=2/dev/sd5/dev/sd6

–create:为新建RAID的参数

–auto=yes:决定新建后面接的软件磁盘阵列设备,即/dev/md0,/dev/md1等

–raid-devices=N:使用N个磁盘作为磁盘阵列的设备

–spare-devices=N:使用N个磁盘作为备用spare设备

–level=[015]:设置磁盘阵列的等级。支持很多,不过建议只要用0,1,5即可

–detail:后面所接的那个磁盘阵列设备的详细信息

注意最后面接的设备文件名,可以时整块磁盘,比如/dev/sdb,也可以是一个分区,比如/dev/sdb1,不过这些设备文件名的数量总数必须等于–raid-devices和–spare-devices的个数总和才行。

下面我来试试建立一个RAID-5的软件磁盘阵列,貌似这个比较常用,很适合。

我希望这个RAID-5环境时这样子的:

×利用4个分区组成RAID-5

×每个分区大约为1G大小,需要确定每个分区一样大较佳

×另外加一个分区设置为sparedisk

×这个sparedisk的大小与其他RAID所需分区一样大

×将此RAID-5设备挂载到/mnt/raid目录下面

先用fdisk构建5个1G的分区:

#fdisk/dev/sda
前面省略。。。
Command(mforhelp):n

每次分1000M空间大小,注意,我不知道神马原因,first扇区要手动输入,用p选项查看后,用最后一个分区的扇区号+2049才是第一个空闲扇区号,这个可能时fedora的一个bug,分区居然不是连续的,不管了,自己去试试。囧

最后的分区用p查看后,是这样子的:

设备BootStartEndBlocksIdSystem
/dev/sda120482068471024007HPFS/NTFS/exFAT
/dev/sda2*206848169859071848261127HPFS/NTFS/exFAT
/dev/sda31698590724628278211464843757HPFS/NTFS/exFAT
/dev/sda44628295689767731192569717765Extended
/dev/sda546283366446324326320480083Linux
/dev/sda64632453126311813118396800083Linux
/dev/sda76311833607991193598396800083Linux
/dev/sda8799121408803315711209715282Linuxswap/Solaris
/dev/sda9803317760805365759102400083Linux
/dev/sda10805367808807415807102400083Linux
/dev/sda11807417856809465855102400083Linux
/dev/sda12809467904811515903102400083Linux
/dev/sda13811517952813565951102400083Linux
后面的从9到13就是刚刚我分的5个分区,每个大概1G,大小都相同。

#partprobe

接下来就简单啦啦,,通过mdadm来创建磁盘阵列吧。哦也

#mdadm–create–auto=yes/dev/md0–level=5–raid-devices=4–spare-devices=1/dev/sda{9,10,11,12,13}

查看下(等下,先去喝杯咖啡先,因为如果你直接立马运行,可能出现下面的正在building数据的信息):

复制代码

发表评论:

最近发表
网站分类
标签列表