RAID 学习及Linux软RAID实现

我写的不一定是正确的,但我是这么理解的(知识体量有限,错了望提醒)

RAID 是什么

基本思想就是把多个硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘

简单说就是把多个硬盘组成一个逻辑扇区来使用,在操作系统层面这就是一个硬盘,能够动态的完成硬盘的增大跟缩减通常有硬件RAID跟软件之分

RAID 的优势

  • 增大I/O能力
  • 更高的数据安全
  • 更大的容量
  • 高效恢复磁盘数据
  • ……

硬件RAID

  • 主板上会集成一个RAID控制器,这个控制器连接到外部的一个硬盘组盒来实现硬件RAID
  • 类似上面,就好像多个插在STAT口上多块硬盘,主板上有一个RAID控制器,管理这几块连在STAT口上的硬盘组成RAID

软件RAID

  • 这就没什么好说的了,就是通过软件来模拟RAID,软件RAID的风险也比较大,生产绝对不建议

为什么要组建RAID

类型接口传输速率

  • IDE:3.3MB/s到16.6MB/s不等
  • SCSI:160MB/s 最大
    商用居多(以前),cpu占用低,它内部有个小控制器,有些也会带缓存,保证数据的持久化
  • USB 3:640MB/s
  • STAT 3:600MB/s

以上都是理论速度,cpu跟内存的数据交互两都是按GB计算,硬盘的速度有时确实是服务器的瓶颈,不考虑现在的 USB3.1和雷电3接口,这个时候就需要组建RAID了

RAID 的级别

RAID 0 (条带)

基本原理
raid0.png

如上图,有disk0,1两块磁盘,在组建RAID 0 之后,RAID 控制器将一个文件一分为多分,比如1G 大小的文件,分成30MB大小的N个文件,分别放入两个磁盘中,以STAT口最大传输速率为例,单个传输在600M/s,两个一起就是1GB/s 左右每秒的数据传输。同样也可以三块硬盘组建RAID 0,那时这个RAID 0 的速率就是接近单块硬盘的3倍,但至少是2块硬盘组建RAID 0

RAID 0特性

  • 性能读写提升N倍(N为磁盘数量)
  • 冗余能力(容错能力)没有
  • 空间利用率:Ns(N磁盘数量,s磁盘大小)
  • 至少两块磁盘

RAID 1 (镜像)

基本原理
raid1.png

如上图:在存储文件的时候在DISK 0 中存储一份,然后还在DISK 1 中存储一份,写速度不变,不过在读取数据的时候可以交叉读取,提高读速度。这种RAID组合通常是为了数据安全性,两块硬盘同时坏的几率肯定比一块硬盘坏的几率小太多了

RAID 1特性

  • 写性能下降,读性能提高(相比单块硬盘)
  • 有冗余能力
  • 空间利用率是1/2
  • 至少两块硬盘

RAID 4 (校验码)

基本原理
raid4.png

如上图:在存储数据的时候会被依次分片存入DISK 0,1,2 中,DISK 3 不存放数据,存放DISK 0,1,2的校验码。如一个90M的文件被被分别存入A1,A2,A3位置,Ap就是存放着A1,A2,A3的校验码;在读取数据的时候如果A1,A2,A3的数据取出后校验码不能跟Ap相同,那就数据出现问题。这种情况,校验码盘DISK 3是RAID的瓶颈,所以用的比较少,如果RAID 3 出现问题,就要重新换盘或重新计算校验码,影响线上业务

特性

  • 读写性能都有提高
  • 有冗余能力
  • 空间利用率(N-1)N
  • 至少三块硬盘

RAID 5 (循环冗余校验码)

基本原理
raid5.png

如上图:跟RAID 4 差不多,只是每个盘都参与当校验码盘,这种情况如果两块硬盘挂了,那数据就没了

特性

  • 读写性能提高
  • 有冗余能力
  • 空间利用率(N-1)N
  • 至少三块硬盘

RAID 01 (条带+镜像)

基本原理
RAID01.png

如图:先将4块硬盘分成两个为组共两组,每组各做成RAID 0 然后将每组连接起来在组成RAID 1,也就是先条带(RAID 0),然后镜像(RAID 1),RAID 在存储数据的时候先左右各存一份也就是DISK 0,1跟DISK 2,3存的东西是一模一样的,然后数据到每组的时候在以条带的方式分批存入两个硬盘,如果其中一组RAID 0 挂了,那不会影响业务,因为另一组的跟挂掉的那组数据一样。如果不同组同一个数据位的硬盘挂了那就真挂了

特性

  • 读写性能提高
  • 有冗余能力
  • 空间利用率1/2
  • 至少四块硬盘

RAID 10 (镜像+条带)

基本原理
RAID10.png

如图:跟上面RAID 01 差不多,不解析了,大概理解下也就是先分组做RAID 1 然后将每组做成RAID 0

JBOD(磁盘簇)

基本原理
JBOD.svg.png

如上图:将多个硬盘组成一个逻辑盘,可以自由扩大或缩小,扩大或缩小不损坏数据,RAID就不一定,一般硬盘需要分区、格式化、挂载才能用。JBOD能够动态增减硬盘容量

特性

  • 无性能表现
  • 无冗余能力
  • 利用率100%
  • 至少两块硬盘

至于RAID 3、RAID 4、RAID 50啥特性的自行搜索下

RAID 的级别差异

RAID级别 读性能 写性能 冗余能力 利用率% 硬盘数量
RAID 0 单盘N倍 单盘N倍 100 2
RAID 1 接近单盘N倍 低于单盘写能力 50 2
RAID 4 (N-1)/N * s倍 (N-1)/N * s倍 (N-1)/N 3
RAID 5 (N-1)/N * s倍 (N-1)/N * s倍 (N-1)/N 3
RAID 01 Ns/2倍 Ns/2倍 50 4
RAID 10 Ns/2倍 Ns/2倍 50 4
JBOD 100 2

Linux RAID实现

内核(kernel)中有个模块叫md(multi disk),这个是用来模拟软件RAID的,这个跟dm是两码事

linux是通过设备文件访问每个硬件的(/dev/目录下),软件RAID在/dev/ 目录下生成/dev/md# 开头的设备(逻辑RAID)让linux来实现软件RAID,实际底层还是存储到各个设备中(/dev/sd#)

  • mdadm是上层用户用来管理软件RAID的一个命令工具
  • mdadm可以将任何块设备做成RAID

RAID 基本操作

# mdadm
创建模式
  -c 设备名
    专用选项
      -l:RAID级别
      -n:#:指定设备个数
      -a {yes|no}:自动为其创建设备文件
      -c:CHUNK大小,默认是64k,每个条带大小
      -x #: 指定空闲盘个数 
    # mdadm -C /dev/md0 -l 0 -a yes -n 2 /dev/sda{0,1}
管理模式
  --add(-a):新增;--remove(-r):移除; --fail(-f):模拟损坏
  # mdadm /dev/md# --fail /dev/sda1 : 模拟硬盘损坏
监控模式
  -F 设备名
增长模式 
  -G 设备名  指定块设备
装饰模式
  注意:将现有做成RAID 的设备放置到别的主机,通过装配模式进行重新识别
  -A

查看RAID阵列的详细信息
  # mdadm -D /dev/md#: 显示设备详细信息
  # /proc/mdstat: 查看RAID信息

停止阵列
  # mdadm -S /dev/md#

将当前RAID信息保存至配置文件,以便以后进行装配
  # mdadm -D --scan > /etc/mdadm.conf

由于演示我就一块磁盘来模拟RAID各个级别,只要是块设备都能用来做RAID

Linux RAID实例

分区信息

这里使用一块20G磁盘进行模拟

RAID 0 实例

RAID 0 要保证至少需要两个设备这里用sdb{1,2}进行模拟
mdadm -C /dev/md0 -l 0 -a yes -n 2 /dev/sdb{1,2}

创建RAID 0
  1. 使用mdadm -C 指定创建逻辑RAID名称,-l指定RAID级别,-a同意自动为其创建设备文件,-n指定设备数量(不能小于块设备数量)

  2. 使用mdadm -D /dev/md0 查看详细信息(应该看得懂吧)

  3. mke2fs -j /dev/md0:格式化逻辑RAID

  4. 挂载(看到lost+found文件就标识成功了)


    挂载目录

RAID 1 实例

这里RAID 1 使用sdb{3,5}进行模拟

mdadm -C /dev/md1 -l 1 -a yes -n 2 /dev/sdb{3,5}

raid1

第二个红框在查看RAID设备的时候看到红框3的进度条,这是RAID 1的特性,盘1数据跟盘2保持一致也就是sdb3跟sdb5保持一致,之后会显示同步完成

同步完成

  • 之后就是格式化挂载看到lost+found表示可以使用了
模拟磁盘损坏
  1. 先拷贝文件(我拷贝文件/etc/fstab)到挂载目录,我挂载的是/media目录,模拟mdadm /dev/md1 -f /dev/sdb5损坏(/dev/sdb5)

    模拟损坏

  2. 查看挂载目录fstab文件内容


    fstab内容

这就是RAID 0的特性,允许一块磁盘损坏,依然不影响数据

  1. 现在添加sdb6至md1(RAID 1)中,在模拟sdb3损坏,查看数据是否可以访问
# mdadm /dev/md1 -r /dev/sdb5:移除损坏盘
# mdadm /dev/md1 -a /dev/sdb6:新增盘
# mdadm /dev/md1 -f /dev/sdb3:模拟sdb3损坏
# cat /media/fstab
模拟损坏

cat /media/fstab

查看fstab内容

文件依然可用

mdadm命令的其他模式的用法自行搜索理解吧

总结

首先只要理解RAID是什么?然后用在什么地方?特性是什么?怎么用,就能大概了解跟理解他了

  • 是什么
    也就是一个大容量,冗余可伸缩,增大I/O能力的一个逻辑设备(理解成硬盘吧)
  • 用在什么地方
    如果这几个特性是工作或者生产想要实现或体现的那自己就知道要用在什么地方了
    • 就比如DIY不愿意升级SSD,可以买个RAID盒子里面放两个机械组成一个RAID 0,不过这里注意如果最后I/O接口速度都不能大于你单块机械硬盘的传输那用了也白用,就比如RAID 盒子是通过USB链接到你电脑的,那如果是3.0就白搭了,最好是3.1或者雷电的
  • 特性(RAID 级别)
    • RAID 0(条带):增大带宽
    • RAID 1(镜像):提高安全性
    • RAID 5 (循环校验码):提高安全性跟带宽
    • ......
  • 怎么用?分硬件RAID跟软件RAID
    • 硬件RAID 主板自带,自己上BIOS设置或其他地方设置(现在DIY主板应该都有)
    • 软件RAID 上文说的使用Linux内核自带的md模块实现软RAID就是一种,方法还有其他,感兴趣自己搜索就好
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342