RAID

在上世界八十年代的时候RAID还没有开发出来的时候,一般公司还在使用SLED(Single Large Enpensive Disk),这种存盘优势非常大,单个的十分巨大的储存空间,只是伴随着它的巨大优势,还有很昂贵的代价,一般公司承受不起这样的代价,在这样的环境下,很多公司都在寻找一种能把几个或多个廉价的硬盘组合成一种,甚至尝试着提高它的读写速度,以及冗余能力。终于在1987年,在美国加州Clifornia Berkeler大学的几个教授 Patterson,Gibson和Katz发表了一篇很出名的论文A case for Redundant Arrays of Inoxpensive Disks.这个就是RADI的原型胚胎。翻译成咱们中文就是廉价冗余磁盘阵列,简单来说就是把多块磁盘组合成一块来使用。随着后来者在这个基础上不墩的开发不断的完善,RAID已经成为比较完善的技术,许多公司都用这个技术。下面就详细总结一下这个技术。

 首先多个磁盘组合在一起就能提升数据的读写能力,一个2G大小的文件,如果是四个磁盘的话就会分成4份存进四个磁盘中,读取的话也是一样,这样就相当于速度提升了四倍,这是相当可观的。但是组合多少个磁盘为好呢?这要取决于你的设备的插槽个数和你设备本身的设计使用能力。这种将多块磁盘组合起来促合成一个阵列当作逻辑设备来使用的机制,我们就把成为ARID。

 那我们把数据向多个磁盘储存的时候一次存多少呢?1K?2K?这就又牵扯到另一个概念--条带。数据在通过控制芯片发向底层控制芯片并储存在磁盘上的时候,它首先倍条带化以后,分割储存在各各磁盘上的,这就叫做条带。
 
条带(RAID0)的好处就是提升了读写速度,提升率几乎就是n倍,但是也硬伤,就是没有冗余能力,一旦其中任何一块磁盘损坏,全部数据都统统损坏了,当然五块磁盘损坏的几率要是一块的五倍了。这样的话人们又发明了镜像存储。

镜像(RAID1)简单来说就是每个数据都给他备份一下,这样的弊端相信大家一下子就看出来了,浪费了一般的空间。一般的空间都用来储存相同的东西了,写入东西的话还要写入双份,功能当然就下降了,读功能还是有一点提升的。当然他最大的优势就在与冗余能力,因为他同时备份了一份文件,所以一旦数据有损坏,只要不是连带镜像中的文件一起损坏的,就能完全还原回来。

既然镜像技术要浪费一半的储存空间,那它的代价也是不低的,一些大企业为了稳妥起见还是用这种方法,那句话怎么说来着,人类的进步就是在不断妥协中前进的过程,于是人来在这种的情况下有开发了RAID2,RAID3,RAID4,RAID5,RAID6.

相比较于RAID1来说,2,3,4,5都有他的不好之处,只不过因为廉价所以有许多小公司还是使用他们。这里就挑还是稍微多见一点的RAID5来说一下。

假设我们有四块磁盘,RAID5就是把数据分存为三份在前三个磁盘上,第四个磁盘存上校验码。这样的话任何一块磁盘损坏都可以来修复,它的弊端就是一旦损坏两块存盘,所有数据就完蛋了,并且在磁盘使用过程中,系统会默认多使用存有校验码的磁盘,时间长了就要以这个磁盘的速度来判定我们的速度了,这是很不理想的。损坏一块磁盘的话我们可以通过另外三块磁盘找出丢失的数据,刻录在另外一块空磁盘上,这个过程我们叫硬盘修复过程,而这个过程中另外三块磁盘一旦损坏也是致命的,事实上这种事情经常发生,所以还是很不安全的,但是又有人发明了四个磁盘轮流储存校验码,这就比前面的方法稍微改善了一点。

后来有出现了RAID10以及RAID01的组合。这种速度又安全又高效,出了代价有点高以外还是很受大家欢迎的
RAID10的话就是先镜像再条带,这样每一组中都是两个一模一样的文件存在,同一组上损失一个文件的话就可以靠着镜像立马修复他,但是不能同组的磁盘同时损坏,那样数据就完了。
RAID01就是先条带在镜像了这样的话就算是同组的磁盘全部损坏都没事,因为还有镜像中的数据存在,但是两边的磁盘各自损坏了一个就彻底完了。
两种方法性能几乎是同等的,只是在修复上,RAID01修复数据的时候要调动其余的全部磁盘来计算出丢失的数据,而RAID10只需要把丢失的数据对应的镜像磁盘刻录过来就行了。总体来说这两种方法差别不大,看用的时候需要那种。
还有最后一种叫做Jbod,这种技术是在一个磁盘上连接另一个磁盘,让他们成为一个磁盘来储存那些超大的数据,只是为了扩大内存,读写性能没什么提高,也没有冗余能力。


下面我们来说一下软RAID。
我们软RAID必须把文件类型表示为fd格式的,表示为fd类型以后,我们的模块往上边存数据的时候他会在这个数据之外存一些其他的语言数据,将来哪怕你重装了操作系统,只要把这个模块装进来,让这个模块自身去扫描这两个设备才能把它们重新组合起来,这是需要额外的步骤,呵呵,我们的服务器本来就很繁忙,CPU可能本来就不够用,在拿来让CPU去管理数据,操作系统一崩溃还可能导致数据丢失,所以说软RAID非常不适合去使用,不到万不得已的情况下我们尽量不要去用软RAID,所以我们在这里就简单的说明,不做深入的研究。
下来我们就来说说使用软件创建软RAID。

在我们Linux上提供软RAID设备需要内核模块叫md,这个模块得能装载进来,此外在用户空间有个命令让我们去配置RAID的命令叫mdadm:支持将任何块设备做成RAID。在我们Linux上只有一块盘,所以说哪怕是只有两个分区也可以做成RAID,只不过这个在实际上是没有意义的,都在一块设备上,读写速度不会提升,并且硬盘损坏的话所有数据都损坏。在实际上可以在多个磁盘上做,或者使用位于不同磁盘上的分区

mdadm:    模式化的命令:
    创建模式
        -C
            专用选项:
                -l: 级别
                -n #: 设备个数
                -a {yes|no}: 是否自动为其创建设备文件
                -c: CHUNK大小, 2^n,默认为64K
                -x #: 指定空闲盘个数
    管理模式
        --add, --remove, --fail
        mdadm /dev/md# --fail /dev/sda7
    监控模式
        -F
    增长模式
        -G
    装配模式
        -A
    查看RAID阵列的详细信息
        mdadm -D /dev/md#
          --detail
   
    停止阵列:
        mdadm -S /dev/md#
           --stop
          
          
以上就是我对RAID以及软RAID的了解,以及一些基本的使用方法。