磁盘阵列技术RAID介绍及安装实例RAID是“RedundantArrayofIndependentDisk”的缩写,中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年,由美国加州大学伯克利分校提出。简单地解释,就是将N台硬盘通过RAIDController(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。RAID的采用为存储系统(或者服务器的内置存储)带来巨大利益,其中提高传输速率和提供容错功能是最大的优点。常见的raid种类有0,1,5,10等。RAID0:无差错控制的带区组要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID0的速度是最快的。但是RAID0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。RAID1:镜象结构raid1对于使用这种RAID1结构的设备来说,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。而且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。RAID5:分布式奇偶校验的独立磁盘结构RAID5清晰图片从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。RAID5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。RAID3与RAID5相比,重要的区别在于RAID3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。RAID-5的话,优点是提供了冗余性(支持一块盘掉线后仍然正常运行),磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。RAID5最大的好处是在一块盘掉线的情况下,RAID照常工作,相对于RAID0必须每一块盘都正常才可以正常工作的状况容错性能好多了。因此RAID5是RAID级别中最常见的一个类型。RAID5校验位即P位是通过其它条带数据做异或(xor)求得的。计算公式为P=D0xorD1xorD2…xorDn,其中p代表校验块,Dn代表相应的数据块,xor是数学运算符号异或。(PS.在raid5中,任何一块硬盘出现错误甚至是完全损坏都没有问题,而且能完全修复,这就是奇偶校验的优势)RAID10:高可靠性与高效磁盘结构这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以互为镜像的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容量不大,但要求速度和差错控制的数据库中。(PS.raid10其实就是raid1+raid0)Linux下建立Raid(以raid1为例子)1、先用fdisk在硬盘上划分出空间。fdisk/dev/sdc(后面的根据自己实际情况修改,因为我这里是虚拟机,所以就用2个500M的来做成一个raid)然后将其的功能改为Linuxraidautodetect(也就是在fdisk下面用t选择功能然后输入--fd)2、建立raidmdadm-C/dev/md1-l1-n2/dev/sdc-n2/dev/sdc1/dev/sdc2mdadm-C【raid阵列所在】-l【raid等级】-n【设备数】【设备分别是什么】建立完毕之后,可以通过cat/proc/mdstat查看是否成功3、格式化mkfs.ext3/dev/md14、挂载mount/dev/md1/raid15、建立mdadm.conf文件mdadm-Ds/etc/mdadm.conf6、编辑mdadm.conf加入DEVICE/dev/sdc1/dev/sdc25、6部在一些人写的文章中很少提到,但是我在实际工作中遇到过如果不建立mdadm.conf文件导致服务器重启之后raid无法正常运行.Linux磁盘阵列实战RAID英文全称redundantarrayofindependentdisks意思“独立磁盘冗余”,简称磁盘阵列。Raid0是用来扩展磁盘,缺点如果一块硬盘坏掉系统崩溃;raid1是一个做存储一个做镜像备份,必须是偶数的硬盘,浪费磁盘空间;raid10是结合raid0和raid1的优点组成一个磁盘阵列;raid5是每个磁盘都有一部分作镜像,要求至少三块磁盘。环境:centos5.6我们首先增加一个10G新磁盘:我们fdisk-l,查看磁盘状态可以看到新磁盘目前不可用制作Raid0磁盘阵列Fdisk/dev/sdb//创建新分区我们接下来键入n建立新分区,尽量建立扩展分区,按e建立扩展分区,输入分区号,然后给分区分配大小,我们分配所有大小,于是从1开始按enter即可分配所有的大小。最后按p查看。扩展分区建立完毕,开始建立逻辑分区,按n开始建立新的分区。按“l”建立逻辑分区,使用“+100MB”分配一个大小为100MB的空间,按p查看即可。逻辑分区是从5开始的。我们建立了两个100MB的逻辑分区来测试RID1.我们需要更改磁盘的系统id,我们按“t”修改,然后选择“5”“代表第五块磁盘,然后按l可以查看支持的分区格式,我们选择fd格式。最后按w保存。我们这时在fdisk-l查看磁盘,会看到sdb已经有了新的内容。然后通过mdadm建立磁盘阵列,-C指md0阵列名,-ayes是激活为active状态,-l后接0代表raid0磁盘阵列,-n后接2位2块磁盘,最后接磁盘名,磁盘用{n1..n2}来简写。最后我们通过mdadm-D(detail)方式来查看,会看到阵列为raid0,并且两块磁盘都是active状态。Cat/proc/mdstat也可以查看状态。注:64Kchunks意思是磁盘是并行写入数据的,第一块磁盘写了多少开始写第二块……。Raid0做好了,我们创建3个文件分别挂载用。然后格式化磁盘mkfs.ext3/dev/md0接着mount挂载磁盘。这时我们重启电脑磁盘会丢失,我们将磁盘信息写入配置文件Vi/etc/fstab这时我们在模拟重启,umount卸载,mount-a检查,会自动挂载好的。制作Raid1磁盘阵列我们首先建立两块一样大小的磁盘7和8,然后分别给他们赋予100MB,格式为fd格式,然后保存,通过fdisk-l查看状态成功。然后我们创建raid1,使用mdadm建立磁盘阵列,接着使用mdadm-D查看会看到acitve信息和raid1.然后格式化磁盘,挂载磁盘,会看到磁盘挂载成功。Vi/etc/fstab测试一下重启是否可以正常挂载。制作Raid5首先建立3块磁盘,选择fd格式。创建raid5,然后查看结果。然后格式化挂载即可。修改/etc/fstab后,测试即可。如果要删除raid磁盘阵列,要先卸载挂载,然后删除umount/raid5mdadm-S/dev/md5mdadm--zero-superblock/dev/sdb{9..11}这边是raid的一些实战,希望对大家有帮助。Linux系统下当原来一块硬盘容量不够用了,需要新添加一块硬盘;或者原来组建RAID磁盘阵列的,现在不需要了,在取消了RAID,重装了系统的情况下,如何使用第二块磁盘此次的情况是原来是2块硬盘组建的RAID1,现在不需要组建RAID了,就取消了RAID,并重装了系统在进入系统后,使用fdisk–l命令来查看磁盘状况如下linux_156:/#fdisk-lDisk/dev/sda:146.8GB,146815733760bytes255heads,63sectors/track,17849cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/sda1126112097282682Linuxswap/Solaris/dev/sda2*261239171049044583Linux/dev/sda3391817849111908790fW95Ext'd(LBA)/dev/sda539181131959456533+83Linux/dev/sda6113201784752436128+83LinuxDisk/dev/sdb:146.8GB,146815733760bytes255heads,63sectors/track,17849cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/sdb112622104483+82Linuxswap/Solaris/dev/sdb2*26315681049044583Linux从以上信息,可以很明显的看出,我们有2块硬盘,分别是/dev/sda和/dev/sdb,大小都是146.8G其中磁盘/dev/sda被分为2个主分区和2个逻辑分区大小也差不多是146.8G,但是磁盘/dev/sdb只有2个主分区,其大小也只有12G,不知道为什么丢失了很多空间,我觉得可能是组建RAID1的原因,很多原来的空间未分区,只划分了部分swap分区和装操作系统的/分区,现在有2个办法来解决这个问题:1.使用fdisk在原来两个分区的基础上,将未被使用的空间重新分区2.格式化/dev/sdb盘,再重新分区我选择了方法2,因为我觉得原来的那两个分区的数据并没有保留的必要使用mkfs.ext3/dev/sdb命令格式化磁盘注:也可以使用mkfs-text3/dev/sdb命令mke2fs1.38(30-Jun-2005)/dev/sdbisentiredevice,notjustonepartition!注:系统会提示你/dev/sdb是整个磁盘Proceedanyway?(y,n)y注:这时选Y就好了,下来就开始格式化以上命令里的ext3,是指将该磁盘格式化成ext3文件