RAID: 是Redundant Arrays of Independent Disk的缩写,即独立磁盘冗余阵列。也就是通过一些技术将多个磁盘组合成一个磁盘组,逻辑上看就是一个较大的磁盘设备。除了存储的功能,还可以根据不同RAID级别提供数据冗余备份的功能。

一 mdadm命令,用于管理RAID工具

-C 或者 --create:建立一个新阵列
-A: 机会磁盘阵列
-D 或者 --detail:打印阵列设备详细信息
-s或者–scan:扫描配置文件或者/proc/mdstat得到阵列缺失信息
-S: 停止磁盘阵列
-f:将设备状态定位故障
-a 或者 --add:添加设备到阵列
-v:显示详细信息
-r: 移除设备
-l 或者 --level: 设定磁盘阵列的级别
-n 或者–raid-devices: 指定阵列成员(分区/磁盘)的数量
-x或者–spare-devicds: 指定阵列备用盘数量
-c或者–chunk: 设定阵列的chunk大小,默认为4k
-G或者–grow: 改变阵型大小或者形态

热备份盘(hot spare or hot standby driver): 为了加强容错的功能以及使系统在磁盘故障的情况下能够迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可以使用热备份功能。

chunk: RAID存储数据的时候每一个数据段的大小。4k,64k等
如果chunk过大可能数据读写都限于一块磁盘上,如果过小,可能引发大量的读写操作,不能发挥并发性能,占用过多的控制器总线带宽。所以应该选择合适的chunk大小。

二 RAID-0(等量模式,stripe)

核心思想:
这种模式首先会将磁盘分割成等量的chunk(区块),比如4KB,64KB等。然后当文件要写入RAID时,该文件也会依据chunk大小切分好,然后再依次序将文件数据放入磁盘里。
是所有阵列级别中实现思路最简单的,而且也是读写性能最好的。那么RAID-0的容量就是各个磁盘组合而成的容量之和。

如上图所示,你的数据为100M要写入磁盘阵列,那么而每一个磁盘被分配25M。但是一旦某一个磁盘损坏了,那么文件数据也就损坏了,那么整个文件就没法读了。

RAID-0的特性:
#1 至少要有2块磁盘
#2 总容量是所有磁盘的总和,即磁盘容量利用率是100%
#3 数据等量分布或者也叫条带式分布,每一个磁盘上的数据量几乎差不多
#4 没有数据冗余或者备份,当一块磁盘损坏,那么整个RAID就几乎不可用
#5 读写性能最好,尤其是当磁盘都是相同型号和容量的时候。

2.1 创建RAID-0

用相同的磁盘创建2个主分区,模拟2块磁盘。
fdisk /dev/sdb
mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
这样磁盘阵列RAID0就启动了,设备就是/dev/md0。
查看磁盘阵列详细信息:

2.2 导出配置文件

mdadm -Ds > /etc/madam.conf
[root@integrate-01 ~]# cat !$
cat /etc/madam.conf
ARRAY /dev/md0 metadata=1.2 name=integrate-01:0 UUID=84762f0a:b88e860a:5fded0d9:55b664a0

2.3 格式化并挂载到指定目录

fdisk /dev/md0
[root@integrate-01 ~]# ll /dev/md0*
brw-rw---- 1 root disk 9, 0 Dec 31 08:13 /dev/md0
brw-rw---- 1 root disk 259, 0 Dec 31 08:13 /dev/md0p1
然后进行格式化:
mkfs.ext4 /dev/md0p1

挂载到/raid0
mkdir /raid0
mount /dev/md0p1 /raid0

.2.4 修改/etc/fstab永久挂载,即开机挂载

vim /etc/fstab,添加:
/dev/md0p1 /raid0 ext4 defaults 0 0

三 RAID-1(镜像模式,mirror)

核心思想:
镜像模式是指将2个或以上的磁盘组合成一个较大的逻辑磁盘设备,然后同一份数据同时保存在两个磁盘上,即允许数据冗余,这样就算一个磁盘坏了,另外一个磁盘的数据还在。

RAID-1特性:
#1 至少需要2块或以上的磁盘
#2 总容量是全部磁盘容量的一般,,即磁盘容量利用率是50%
#3 数据有备份,当一个磁盘损坏了还可以从另外一个磁盘读取
#4 写的性能不好,但是读的性能还可以

3.1 创建RAID-1 并且添加1G的热备盘

创建三个分区:fdisk /dev/sdc
创建完毕之后,查看一下
fdisk -l /dev/sdc

创建RAID-1:
mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}

查看磁盘阵列状况:cat /proc/mdstat

生成配置文件:
mdadm -Ds > /etc/mdadm.conf

开始磁盘阵列的分区:
fdisk /dev/md1

mkfs.ext4 /dev/md1p1
mkdir /raid1
mount /dev/md1p1 /raid1/

3.2 模拟磁盘故障,自动顶替故障盘

可以监控磁盘阵列状况
watch -n 1 cat /proc/mdstat
模拟故障:
mdadm -f /dev/md1 /dev/sdc1
看到磁盘阵列的状况:

即备份盘消失了,顶替了sdc1,而sdc1则是出现了故障的盘

3.3 卸载阵列并删除阵列

将/dev/sdc1 从磁盘阵列/dev/md1中删除
mdadm -r /dev/md1 /dev/sdc1
cat /proc/mdstat
看一看出sdc1已经移除了

四 RAID-5

数据类似RAID0进行等量模式写入,不过在写入的过程中,每一次写入,会进行数据奇偶校验,即异或运算,然后这个值会放入一个磁盘中,每次总有一个磁盘来记录这个校验值。同时兼顾了读性能和数据冗余的特点。
什么是数据奇偶校验呢?
说白了就是异或运算:比如
3 7 10 parity?
3的二进制是0011
7的二进制是0111
10的二进制是1010
现在进行异或运算,即0011 xor 0111 xor 1010 = 1110
如果7所在磁盘算坏,那么就可以根据这个异或值推算出来这个值是0111。

RAID-5特性:
#1 至少需要三块磁盘
#2 总容量=(磁盘数量-1)* 容量,前提是容量相等。所以磁盘的利用率是(n-1)/n
#3 因为数据校验,可以提供数据冗余的功能,但是只支持一块磁盘的损坏。RAID 6原理跟RAID 5 差不多,可以支持2块磁盘损坏
#4 读的性能还行,跟RAID0差不多,但是写的性能并没有提升,因为要计算校验值

4.1 创建RAID-5,添加1G热备盘

创建3个主分区,1个扩展分区,然后2个逻辑分区,当三个主分区都给1G,然后剩余的都分给扩展分区
注意:一个Linux系统可以有至少一个最多4个主分区,扩展分区可以没有,最多一个。但是主分区+扩展分区数量不能超过4个,剩余的都是逻辑分区,硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和。
fdisk /dev/sdd

创建磁盘阵列/dev/md5,
mdadm -C -v /dev/md5 -l 5 -n 3 -c 32 -x 1 /dev/sdd{1,2,3,5}
提示我扩展分区不适合这个阵列,所以我换成了逻辑分区
cat /proc/mdstat

4.2 停止和激活磁盘阵列

停止磁盘阵列:
mdadm -S /dev/md5

激活磁盘阵列:

4.3 添加

mdadm -a /dev/md5 /dev/sdd6

五 RAID-10创建

核心思想:
由于RAID-0读写性能不错,但是没有备份,RAID-1虽有备份,但是性能不佳,所以就有了结合这两者的一个RAID方案即RAID10.
底层由磁盘组成2个或以上RAID-1,然后组成的RAID-1阵列再组成RAID-0.

RAID-10特点:
#1 应该至少需要4块磁盘
#2 总容量 = 所有磁盘的总容量的一半,即磁盘利用率50%
#3 数据冗余,性能提升

fdisk /dev/sdf
查看分区情况
fdisk -l /dev/sdf

先创建底层的2个RAID-1
mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf{1,2}
mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf{3,4}

然后创建上层RAID-0
mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md1{1,2}
mdadm -Ds > /etc/mdadm.conf

六 删除磁盘阵列

首先:如果已经挂载则先卸载
umount /dev/md1 /mnt
其次:停止RAID设备
mdadm -Ss(所有)
最后:删除RAID配置文件
rm -rf /etc/mdadm.conf

清除物理磁盘中的RAID标识
mdadm --misc --zero-superblock /dev/sdf{5,6}

Linux之磁盘冗余阵列相关推荐

  1. RAID磁盘冗余阵列

    转 https://zhuanlan.zhihu.com/p/51170719 RAID的不同级别 RAID即独立磁盘冗余阵列,简称磁盘阵列,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从 ...

  2. linux磁盘冗余阵列

    RAID防止硬盘物理损坏以及增加存储设备的吞吐量,RAID常见的组合有0.1.5.和10RAID0:至少需要两块硬盘,可以有效提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力将多块硬盘通过硬件或 ...

  3. Linux学习第九课、磁盘容量配额、RAID磁盘冗余阵列

    磁盘容量配额 Linux系统的设计初衷就是让许多人一起使用并执行各自的任务,从而成为多用户.多任务的操作系统.但是,硬件资源是固定且有限的,如果某些用户不断地在Linux系统上创建文件或者存放电影,硬 ...

  4. 独立磁盘冗余阵列:RAID

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fsx2550553488/articl ...

  5. RAID独立磁盘冗余阵列,对比各模式下的性能优劣

    一.RAID 概述 首次提出: 1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 "A Case of Redundant Array of Inexp ...

  6. LINUX 存储管理 RAID’廉价磁盘冗余阵列

    #千锋逆战班,郭燕 夜间打卡学习分享'LINUX 存储管理 RAID'廉价磁盘冗余阵列 千锋学习第15天 但行好事,莫问前程 RAID(Redundant Array Independent Disk ...

  7. Linux之RAID(磁盘软件阵列)

    内容概要 1.什么是RAID 2.RAID的级别 RAID 0 RAID 1 RAID 1+0 RAID 5 RAID 6 2.阵列卡的缓存 3.创建软件RAID磁盘阵列步骤: 1.什么是RAID R ...

  8. linux的磁盘文件系统特点总结

    背景 我们经常安装操作系统时,会遇到选着文件系统,那到底应该选一个什么文件系统呢?centos/redhat 7 默认将文件系统设置为xfs.拿Centos7.5为例,默认分区的文件系统为xfs,但是 ...

  9. Linux系统磁盘管理总结

    1. Linux系统磁盘管理体系 (1) Linux的磁盘管理主要分为5个步骤: ① 在Linux服务器上添加相应的硬盘(如/dev/sda.sdb.sdc-): ② 对全新的服务器(没有操作系统)做 ...

最新文章

  1. 【转】select和epoll模型的差异
  2. C# 函数参数object sender, EventArgs e
  3. IntelliJ IDEA快捷键总结
  4. 独家 | 一文读懂Apache Kudu
  5. hdu 1423 最长公共递增子序列
  6. 使用 ML.NET 识别乐高颜色块
  7. ICDAR 2019 文本识别冠军方案将开源!
  8. rabbitmq topic 收不到数据_RabbitMQ和Kafka到底怎么选?
  9. Mybatis XML文件如何编写In语句
  10. 仅此一文让你明白ASP.NET MVC原理
  11. 美国算法交易的影响和启示
  12. [论文笔记]QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION
  13. 如何高效阅读英文数据手册?
  14. linux显卡驱动安装在哪个文件夹,linux 下安装Nvidia显卡驱动
  15. 关于 小程序 传值的 几个方法
  16. Spring MVC学习(6)—Spring数据类型转换机制全解【一万字】
  17. 照片webp格式怎么改成jpg?
  18. 使用OpenCV进行高动态范围(HDR)成像(C ++ / Python)
  19. mysql 页分裂_[翻译] InnoDB 页合并与页分裂
  20. 国产统信UOS使用FTP跨网段访问桌面云神州网信版windows的共享文件

热门文章

  1. 梅森旋转产生随机数c语言实现,C++生成随机数的实现代码
  2. html网页如何引入用linkcss文件,[网页设计]link和@import url()引入外部css文件的区别...
  3. html拖拽吸附插件,前端拖拽插件gridster.js
  4. 业务监控系统如何做,一起来看看如何使用Statsd+Graphite+Grafana搭建业务监控系统
  5. 解析xml文件的几种技术
  6. 初入java行业,环境你可知如何配置
  7. java 排队实现_实验排队功能实现(JAVA)
  8. 最大期望算法 (EM算法)
  9. PageHelper 分页Total总是为pageSize的问题
  10. matplotlib 添加偏移量