RAID的全称是Redundant Array of Independent Disks,即独立磁盘冗余阵列(以前叫:Redundant Array of Inexpensive Disks,即廉价磁盘冗余阵列)。RAID的基本思想是将多个便宜的硬盘组合起来,成为一个硬盘阵列组,使性能能和那些价格昂贵,容量大的高性能硬盘媲美。

而RAID是怎么识别多个硬盘呢?RAID是把多个硬盘组合成成一个逻辑磁区,故操作系统会把它当作一个硬盘来使用。RAID常用于那些大型的服务器上,通过硬盘阵列,在一定程度上实现数据存放的安全性和快速的数据读写。

RAID的有七个级别,但有时候我们也可以把两个级别合在一起用,下面是我们常用的RAID的级别及各自的特点:

RAID 0:它是把多块硬盘当作一块硬盘,然后进行分区来使用。它的原理是把要写入的一块数据分成多个chunk存在多个磁盘上,多个chunk同时写入多个磁盘,这就增加了写入的速度;而当读数据的时候可以从这多个磁盘中读取存放的相应数据的多个chunk,这就提高了读出的速度;虽然,它大大提高了磁盘的性能,但是无冗余能力,因为数据是分chunk存放在多个磁盘中的,只要有一块磁盘坏掉,数据就不能用了。

RAID 1:通常组合2,4,6...块磁盘来使用,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。它的原理是:写入的时候一块数据分成多个chunk,此时并不是多个chunk同时写入多个磁盘,而是一个chunk一个chunk的写入,每个chunk不仅要写入存放数据的一块磁盘,而且还要写入用于做镜像的一块磁盘,这样写入的速度就会不变,但读出数据时,则是从数据磁盘和镜像磁盘一起读,读出的速度快。这个级别,增加了磁盘的读取性能,而且提供了冗余功能,保证了数据一定程度的安全性。

RAID 4:至少组合3块磁盘,其中有一块盘来用作校验盘。当存放数据的时候,校验盘用于存放数据的校验码,而数据本身分成多个chunk存放在多个磁盘上,读写性能都很高。由于有一个校验盘,如果有一块磁盘坏掉,可以利用校验盘和其它磁盘对数据进行恢复,这就增强了数据的安全性。而由于只有一块校验盘,每次操作都要计算校验码,会给校验盘带来很大的压力,校验盘容易坏掉。

RAID 5:与RAID 4不同的是,但是数据的校验码会轮流存放在多个磁盘中,减小了校验盘的压力。

RAID 6:至少需要组合4块磁盘,和RAID 5不同的是,校验码要存放两次,这样就可以允许坏掉两块磁盘。

RAID 10:是RAID O和RAID 1的组合,至少需要4块磁盘,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。它的原理是:写入的时候一块数据也是分成多个chunk,此时并不是多个chunk同时写入多个磁盘,而是多个chunk不仅同时写入存放数据的的一半的磁盘,而且还要同时写入用于做镜像的另一半磁盘,这样写入的速度还是相当快的;读出数据时,则是从多个磁盘中一起读取数据的多个chunk,读出的速度更快,要高于写入的速度。这个级别,不仅增加了磁盘的性能,而且提供了冗余功能,保证了数据一定程度的安全性,这个应用比较广泛。

RAID通常有软RAID和硬RAID之分:

硬RAID的机制是:服务器上自带的有RAID芯片,或是服务器上有一个插槽,可以插主机适配器。这种机制广泛用于商业环境。RAID设备在系统中一般被识别为:/dev/sd*

软RAID的机制是:在Linux中存在一个kernel模块,可以实现RAID。随着技术的发展,Linux现在这中应用机制已经比较成熟了。RAID设备在系统中一般被识别为:/dev/md*,并且软RAID还有一个局限是,它是以“磁盘分区”为单位创建RAID的。

下面我们以在Linux中实现软RAID为例,介绍一下RAID的配置:

首先,我们先了解一下mdadm命令,它是一个管理程序,用于和kernel模块通信,实现对RAID的管理。

mdadm有五种模式,分别是:

Assemble:装配模式,将已经停用的RAID设备重新装配使用

Create:创建模式,主要建立新的RAID设备

Follow or Monitor:监控模式,主要用于监控RAID设备的工作

Grow:增长模式,可以用于给RAID设备增加新硬盘

Manage:管理模式,用于删除,增加RAID设备。当使用--add,--fail,--remove等选项时,默认工作在管理模式

mdadm  命令

-A 指定装配模式

-C 指定创建模式

-F 指定监控模式

-G 指定增长模式

--add 用于添加磁盘设备

--fail 用于停掉一块磁盘设备

--remove 用于移除磁盘设备

-v 可以显示详细信息

-s 可以扫描或测试RAID

-n 指定有几个分区来常见RAID

-x 用于指定备用的空闲盘的个数

-c 指定chunk的大小,默认为64K

-l 创建RAID的级别

-a 如果创建的设备不存在则自动创建

-D 查看指定模块的详细信息

一:要创建一个新的RAID设备,要做以下几步:

fdisk /dev/sda

创建磁盘分区,并且修改分区的id为“fd”,保存退出

partprobe /dev/sda

使kernel识别我们新分的区

mdadm -C /dev/md1 -a yes -l 5 -n 3 /dev/sda6 /dev/sda7 /dev/sda8

创建一个RAID 5设备md1,此设备有3个设备组成sda6,sda7,sda8

lsmod | grep "dm_mod"

查看dm_mod这个模块是否已经被kernel加载,如果没有搜索到,说明没有被kernel加载,则需要加载这个模块,使用命令:modprobe dm_mod

mke2fs -j /dev/md1

把这个RAID设备格式化为ext3的文件系统

mkdir /myraid

vi /etc/fstab

/dev/md1 /myraid ext3 defaults 0 0

在这个文件中添加如上行,可以保证这个raid设备在开机时被挂载,当下不生效

mount /dev/md1 /myraid

现在挂载这个RAID设备,这样我们现在就可以使用了

二,查看信息

mdamd --detail /dev/md1

mdamd -D /dev/md1

查看这个模块的详细信息

三,添加移除,移除RAID设备

mdadm /dev/md1 --add  /dev/sda9  (这个分区id必须为“fd”)

增加这个空闲设备,如果其中有一块磁盘设备坏掉的话,它可以自动添加进去,并会自动进行数据同步

mdadm /dev/md1 --remove /dev/sda9

移除这个设备

mdadm /dev/md1 --fail  /dev/sda9

使这个设备标识为失败,这样/dev/sda9就不能用了

四,停用RAID设备

umount /myraid

卸载RAID设备(如果想永久不使用此RAID,修改/etc/fstab,把上面对应的行删掉)

mdadm -S /dev/md1

停用这个RAID设备

五,重新组装设备

第一种方法:

mdadm -A /dev/md1 /dev/sda6 /dev/sda7 /dev/sda8

可以重新组装起这个设备,必须指定创建RAID的那几个分区,否则会失败

第二种方法:

mdadm -D -s >> /etc/mdadm.conf

如果事先将RAID的信息保存在/etc/mdadm.conf这个文件中,默认mdadm会从/etc/mdadm.conf这个文件中读配置信息

mdamd -A /dev/md1

直接就可以组装这个RAID设备

本文出自 “佳” 博客,请务必保留此出处http://leejia.blog.51cto.com/4356849/798010

转载于:https://blog.51cto.com/4052845/798057

Linux中RAID机制的实现相关推荐

  1. linux 使用了哪个存储阵列卡,Linux中RAID概述及配置实验

    Linux中RAID概述及配置实验 一.RAID磁盘阵列概述 RAID 0 (条带化存储) RAID 1(镜像存储) RAID 5 RAID 6 RAID 1+0(先做镜象,再做条带) RAID 0+ ...

  2. 深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式

    linux中的分段机制 前面说了那么多关于分段机制的实现,其实,Linux以非常有限的方式使用分段.因为,Linux基本不使用分段的机制(注:并不是不使用,使用分段方式还是必须的,会简化程序的编写和运 ...

  3. linux中raid扩容,Linux停软Raid1扩容方案

    Linux下软Raid1扩容方案 系统下的RAID1结构 通过命令: mdadm -D /dev/md0 可以看到raid1由/dev/sdb1和/dev/sdc1两块硬盘分区组成,并且状态为&quo ...

  4. linux中阻塞机制

    一,阻塞与非阻塞 阻塞是指没有获得资源则挂起进程,直到获得资源为止.被挂起的进程进入休眠状态,被调度器的运行队列移走,直到等待条件被满足. 非阻塞是不能进行设备操作时不挂起,或放弃,或反复查询,直到可 ...

  5. linux poll 作用,Linux中poll机制的理解

    首先分析下应用程序的执行过程: int main(int argc, char **argv) { int fd; unsigned char key_val; int ret; struct pol ...

  6. linux中RAID是什么意思,Linux中Raid的介绍

    RAID(Redundant Array ofInexpensiveDisks)称为廉价磁盘冗余阵列.RAID的基本想法是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大.价 ...

  7. Linux中消息机制的通信原理,android QMI机制---概论

    前言: Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机) 对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设 ...

  8. linux中的软RAID实现,逻辑卷和btrfs文件系统

    RAID: Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列:              Redundant Arrays of Independent D ...

  9. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...

  10. linux中的热插拔和mdev机制

    mdev手册(自己翻译的留着看) mdev实现U盘或SD卡的自动挂载 mdev的使用以及mdev.conf的规则配置--busybox linux中的热插拔和mdev机制 关于实现udev/mdev自 ...

最新文章

  1. 网络工程师_要记录下来的一些题_3
  2. 用matlab解公式,怎么用matlab解这个公式A MATLAB script that solves the differential e
  3. 【AI白身境】深度学习必备图像基础
  4. Java集合--TreeMap
  5. html文本框样式大全,HTML文本框样式大全
  6. CentOS虚拟机时间同步
  7. 2015职称计算机考试模拟,2015职称计算机考试《Dreamweaver》模拟试题(9)
  8. thinkphp出现此页面不能重定向
  9. javascript将页面设为首页代码大全
  10. 代码调用SPSS功能执行分析
  11. 【文章翻译】Reinforced Variational Inference
  12. JQuery EasyUI 结合ztrIee的后台页面开发
  13. pip常用方法与升级到18.0升级报错问题
  14. matlab 图案 柱状图_如何用matlab画柱形图 - 卡饭网
  15. 【Android】关于Call requires API level **(current min is **)却没有错误提示及抛异常...
  16. 如何在网上回复负面评论
  17. bootloader技术内幕
  18. 一文读懂Q-Learning,DQN,DDPG的连接关系
  19. 蛋白质相互作用系列:GN算法
  20. 初学者古琴入门知识——【唐畅古琴】

热门文章

  1. 无法将Mac键盘、Mac鼠标和mac控板连接到Mac电脑的解决方法、速看~
  2. Swift 获取字符的个数 、字符串的遍历
  3. vue-admin自定义后台管理系统(二)之vue-cli3创建前端项目
  4. 双网卡mode6模式 同时工作 冗余互备
  5. 使用so动态链接库g++正确,gcc undefined reference错误
  6. 跨境网上收款 找PayPal没错(获取Client ID 和 secret)
  7. Shared File System Master Slave 全配置以及测试
  8. linux管道学习资料
  9. poj 无向图最小环问题 详解,模板
  10. Hash函数加密算法(一)