最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

磁盘阵列简介

网站源码admin3浏览0评论

磁盘阵列简介

磁盘阵列(Redundant Array of independent Disks, RAID)是由美国加州大学柏克莱分校于1987年提出的,其概念是将多个硬盘组成一个逻辑虚拟的硬盘。操作上和操作单一的一块硬盘没有差别。不过实际上,数据是存储在不同硬盘上的。

磁盘阵列的好处

整合多个硬盘:能将多个小的硬盘整合为一个大的硬盘。

数据具有较高的安全性:磁盘阵列具有修改错误的能力。他将校验码(parity)放在不同的硬盘上,当数据发生问题,即会用到校验码来恢复原始数据。

提高存取效率:当数据写入的时候,会切割成多个小块,同时写在不同的硬盘中,这样读数据的时候,能从不同的物理硬盘中读取,加快了磁盘的I/O速度。

磁盘阵列的分类

Linux磁盘阵列根据文件的存储位置分为七种。

Linear:数据会先放在第一块硬盘,当此用盘空间使用完是,再依次存储至第2,3……..个硬盘,当数据或硬盘发生故障,此模式不具有容错的能力。

RAID-0:当写入数据时,会将数据切割为非常多小块,并将这些块的数据分别存储到每一块硬盘上。和Linear方式不同,RAID会把数据平均分配到不同的硬盘。因此不具有容错能力。

RAID-1:此模式会把数据在每一个硬盘上存储一份,每一个硬盘的数据都一摸相同。

RAID-2:数据会以bit为单位分割,并分别存储到各个硬盘中,但存储时此方式会额外保留若干数量的硬盘。,写入数据时,磁盘阵列会同步计算存储到各个硬盘的校验码,然后有将此校验码放在保留的硬盘上。当有硬盘损坏时,就可利用此校验码恢复正确地数据,达到容错的目的。

RAID-3:一份数据会以字节byte为单位分割,分别存储到各个硬盘中。此方式会特别保留一个固定的硬盘存储同位校验码。但由于是将同位校验码存储在同一个硬盘中,因此该硬盘应该有较快的传输速度。否则会影响系统性能。

RAID-4:一份数据会被切割成固定大小的区块,并且分别存储到每一个硬盘中。此方式和RAID-3比较,除了分割方式不同以外,其他相同,也具有容错功能。

RAID-5:一份数据会被分割成固定大小的区块,并分别存储到每个硬盘中。虽然此方式和RAID-4相同以区块为单位分割数据,不同的是,RAID-5并不特别保留固定的一个硬盘来存储校验码,而是将校验码分散存储在所有硬盘中。因此,此方式不会因为存储校验码在一块硬盘上,而影响系统的性能。

4 Linux支持的磁盘阵列

    目前Linux支持Linear、 RAID-0、RAID-1、RAID-4、RAID-5五种磁盘阵列模式。在五种模式中,RAID-4和RAID-5运行方式相近。接下来将周详介绍Linear、RAID-1、RAID-5磁盘阵列创建过程。

1、 创建linear磁盘阵列

硬件需求:两块或以上的硬盘。

创建linear磁盘阵列:

设置文件为/etc/raidtab

文件格式如下:

raiddev /dev/md0              指定磁盘阵列的设备名称

raid-level       Linear        指定采用的是Linear模式

nr-raid-disks     2           此磁盘阵列由2个硬盘所组成

chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小

(单位为KB,且必须为2的次方)。由于在Linear

模式中,写入数据并不分块,而是循序写入到同

一磁盘中。

persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”

表示写入,设置“0”不写入。

device            /dev/sda2  按实际的情况,指定第一个硬盘分区的名称

raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个

硬盘。编号“0”开始。

device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。

raid-disk         1          设置上述的分区是此磁盘阵列所使用的第二块

硬盘。

创建好设置文件后,执行下面命令,初始化刚刚创建的/dev/md0磁盘阵列。

#mkraid /dev/mdo

#mke2fs ?j /dev/md0 格式化磁盘阵列

#mount ?t ext3 /dev/md0  mnt/md0将md0装载到/mnt/md0下。

    检查磁盘阵列状态记录文件,停止和启动磁盘阵列。

    停止磁盘阵列:首先卸下装载的磁盘阵列

                  #umount  /dev/md0

                  #raidstop  /dev/md0

    启动磁盘阵列:

                  #raidstart  /dev/md0

    查看磁盘阵列使用状态:

                  #more /proc/mdstat

    personalities:[linear]

    read_head 1024 sectors

    md0:active linear sda2(1) sdb(0)

    20483524  blocks 32k  rounding

    unused devices:

    上述状态是磁盘阵列处于运行状态时的相关信息。当磁盘阵列没有处于启动状态的时候,显示的状态如下:

    personalities:[linear]

    read_ahead 1024 sectors

unused devices:

  删除磁盘阵列:首先停止磁盘阵列,然后删除/etc/raidtab文件即可。

2、 创建RAID-1磁盘阵列

RAID-1磁盘阵列存储方式,是将同一份数据同时写到每个硬盘中,那一个硬盘所存储的数据是一模相同的。

硬件需求:要创建RAID-1磁盘阵列,至少需要2块硬盘,每一块硬盘最佳大小一致。这是因为每一个硬盘存储相同的数据,因此有一个硬盘比其他的容量大时,磁盘着烈也无法使用多出来的硬盘空间。

创建磁盘阵列:本例采用2个硬盘的分区 sda1和sdb1创建磁盘阵列。以下是/etc/raidtab内容。

raiddev /dev/md0              指定磁盘阵列的设备名称

raid-level       1            指定采用的是RAID-1模式

nr-raid-disks     2           此磁盘阵列由2个硬盘所组成

nr-spare-disks    0           磁盘阵列备用磁盘数目

chunk-size        4         当数据写入磁盘阵列时,每个写入区块的大小

(单位为KB,且必须为2的次方)。由于在Linear

模式中,写入数据并不分块,而是循序写入到同

一磁盘中。

persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”

表示写入,设置“0”不写入。

device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称

raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个

硬盘。编号“0”开始。

device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。

raid-disk         1          设置

创建好设置文件后,创建文件系统、启动、查看运行状态等方法和Linear相同。

3、 创建RAID-5磁盘阵列

在此介绍RAID-5,是在RAID-0和RAID-1中取一个平衡点,同时具有容错能力,也不会浪费太多硬盘空间,并有助于提高磁盘的I/O性能。

硬件需求:

由于RAID-5需要存储同位校验码,因此要创建此模式的磁盘阵列,至少需要3块或以上的硬盘。

创建磁盘阵列:本例以sda1、sdb1、sdc1,3个分区组成RAID-5磁盘,下面是设置文件/etc/raidtab。

raiddev /dev/md0              指定磁盘阵列的设备名称

raid-level       5        指定采用的是Linear模式

nr-raid-disks     3          此磁盘阵列由2个硬盘所组成

nr-spare-disks    0          磁盘阵列备用磁盘数目

chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小

(单位为KB,且必须为2的次方)。由于在Linear

模式中,写入数据并不分块,而是循序写入到同

一磁盘中。

persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”

表示写入,设置“0”不写入。

Parity-algorithm   left-symmetric 指定用哪一种算法计算同位校验码,可是用的算法有:left-symmetric,left-asymmetric,right-symmetric,right-asymmetric4种。一般采用left-symmetric有最佳的存储效率。

device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称

raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个

硬盘。编号“0”开始。

device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。

raid-disk         1          设置

device            /dev/sdb1  按实际情况,指定第三块硬盘分区的名称。

raid-disk          2          设置

修改完毕设置文件后依次执行创建磁盘阵列、启动、停止、查看状态等操作。

在本章,我们只介绍RAID-Linear、RAID-1、RAID-5、最常用的磁盘阵列设置方法。

至于其他种类的磁盘阵列设置方法,和上面讲述的设置方法类似,请读者自行设置。

最后,我们比较一下上面三种磁盘阵列。

磁盘阵列比较:

磁盘空间:Linear模式最节省磁盘空间,磁盘阵列总空间是所有硬盘的和。

          RAID-1(磁盘映像)最浪费磁盘,因为每个硬盘存储的数据都相同。

          RAID-5将利用一个磁盘来存储同位校验码。因此磁盘容量为n-1个

          磁盘的容量。

读写性能:Linear模式中,由于数据是依次存到硬盘上,此方式和一块硬盘运行

          并没有什么不同。此模式也不会提高读写效率。如果有多个人把数据

          放在不同的硬盘上,并且同时访问,那么就能提高磁盘读写效率。

          RAID-1由于每个硬盘都存储相同的数据,需要耗费较多的CPU时间。

          就会影响写入的数度。读数据,由于能从不同硬盘读出数据,因此理论上会有较快的数度。在RAID-5模式中,由于读写数据时,是将数据分成区块,在以区块为单          位同步存储到硬盘中,明显能提高存取速度。理论速率为n-1不过实际不会达到那么高的传输效率。

容错能力:Linear磁盘阵列没有所有容错能力,如果其中一块硬盘出现故障,那么整个磁盘阵列的数据都会丢失。RAID-1有非常好的容错能力,因为每一块硬盘的数据都是相同的,所以当一块硬盘发生故障。系统仍然能继续工作。RAID-5磁盘阵列,当其中一块硬盘发生故障,此时能借助其他硬盘计算出正确地数据,只要不是2块或2块以上的硬盘同时发生故障,这是同位校验码也不足以恢复数据了,意味着数据无法挽救了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2012-03-20,如有侵权请联系 cloudcommunity@tencent 删除存储磁盘数据效率硬件

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论