RAID磁盘阵列

embedded/2024/9/24 21:26:23/

一、基本概念

raid磁盘阵列:也是可以用不同的硬盘分区,组成一个逻辑硬盘

高可用 冗余

raid:高可用

磁盘的组成方式不同也是不同的raid级别

raid0:条带化存储;数据分散在多个物理磁盘的存储方式。利用多个磁盘并行读取和写入。存储性能和读写性能是最好的(不足没有冗余能力)坏了一块盘数据就会丢失 :使用场景高吞吐和低延时的应用场景。视频大数据处理raid 最少要一块

硬盘利用率是100%

raid1:镜像存储两两复制,数据会保存在所有硬盘上,需要磁盘数N(偶数)可以提高读的性能,可以提供读性能,写的性能相对较低,数据在每个磁盘都要备份,可以提供冗余。磁盘利用率50%

raid5:条带 数据是分散存储,根据校验机制。循环均衡储存(有冗余)如果有热备份可以再坏一块盘,读写性能 ,读的性能好,写的性能相对较差,磁盘利用率(n-1)/n 66% raid

raid6:奇偶校验可以坏两块盘需要四块盘N>=4 磁盘利用率n-2/n 有冗余,奇偶校验,每个数据盘上数据一致,循环按照奇数偶数写入磁盘,最多可以坏两块盘,读性能和raid5差不多,比raid强,比raid5强 比raid1 低一些 写性能最差。可靠性安全性是做高的。对数据的完整性要求很高,选择raid6

raid10:最少需要四块,盘数必须是偶数,先做镜像在做条带(有冗余)可以坏两块,每个两两复制的硬盘当中可以坏一块(一组各坏一块)利用率n/2 50%。读写性能高,读性能和raid0差不多,稍低一些,写性能和raid1差不多,比raid1稍等

raid级别使用硬盘数量磁盘利用率冗余能力读写性能
raid0N100%读写性能是最好的
raid1N(偶数)50%坏一块读性能好,写相对较差
raid5N>=3n-1/n坏一块读性能好,写性能一般
raid6N>=4n-2/n坏两块读性能好,写性能差
raid10N>=4(N是整数)50%每个组中可以各坏一个读性能好,写性能一般

一般情况下raid5用的比较多

有四个硬盘你会怎么选择

raid0

raid1

raid5:经济实惠

raid6:可以坏两个

raid10:虽然是可以坏两个,但是磁盘利用率只有50%

当前条件raid5是比较合适的选择

还可以做热备盘

热备份:当阵列中,有一块硬盘坏了,热备份份盘可以随时顶替,相当于磁盘的最后一道保险。

工作原理:热备份相当于给raid又做了一个备份,raid当中坏了一块硬盘,热备盘在顶替过程中,利用校验算法,把阵列当中的数据同步过来

冷:固定

热:活动

在这里插入图片描述

二、实验

创建raid5

# mdadm -C -v /dev/md5 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

创建好后创建文件系统

# mkfs.xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=327296 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5236736, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, r

设置挂载点

# mount /dev/md5 /data
# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        38G  5.2G   32G   14% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.8M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs        19G   33M   19G    1% /home
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
tmpfs                   tmpfs     379M   12K  379M    1% /run/user/42
/dev/md5                xfs        20G   33M   20G    1% /data

这里,模拟磁盘损坏

# mdadm /dev/md5 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5

输入命令查看热配盘是否启用

输入命令产查看:mdadm -D /dev/md5
3       8       65        0      active sync   /dev/sde11       8       33        1      active sync   /dev/sdc14       8       49        2      active sync   /dev/sdd10       8       17        -      faulty   /dev/sdb1  这里显示热配盘已经自动顶上了

raid10

# mdadm -C -v /dev/md10 -l10 -n4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2 -x1 /dev/sdf  这里创建raid10
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10475520K
mdadm: largest drive (/dev/sdf) exceeds size (10475520K) by more than 1%
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.

​ 创建文件系统

# mkfs.xfs /dev/md10
meta-data=/dev/md10              isize=512    agcount=16, agsize=327296 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5236736, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

设置挂载点

# mkdir /data1
# mount /dev/md10 /data1
# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        38G  5.2G   32G   14% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.8M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs        19G   33M   19G    1% /home
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
tmpfs                   tmpfs     379M   12K  379M    1% /run/user/42
/dev/md5                xfs        20G   33M   20G    1% /data
/dev/md10               xfs        20G   33M   20G    1% /data1

模拟磁盘损坏

# mdadm /dev/md10 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md10
# mdadm -D /dev/md10 4       8       80        0      active sync set-A   /dev/sdf1       8       34        1      active sync set-B   /dev/sdc22       8       50        2      active sync set-A   /dev/sdd23       8       66        3      active sync set-B   /dev/sde20       8       18        -      faulty   /dev/sdb2

显示热备盘已经启用了


http://www.ppmy.cn/embedded/45534.html

相关文章

Spring中的事务

目录 一.什么是事务? 二.事务的操作 三.Spring 中事务的实现 1.Spring 编程式事务(手动操作) 2.Spring 声明式事务 四.事务隔离级别 1.MySQL 事务隔离级别 2.Spring 事务隔离级别 五.Spring 事务传播机制 一.什么是事务? 事务是指作为单个逻辑工作单元执行的一系列操…

C语言题目:数字不重复排列

题目描述 有4个互不相同的数字,输出由其中三个不重复数字组成的排列。 输入格式 4个整数。 输出格式 所有排列 样例输入 1 2 3 4样例输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1 2 4 1 4 2 2 1 4 2 4 1 4 1 2 4 2 1 1 3 4 1 4 3 3 1 4 3 4 1 4 1 3 4 3 1 2…

算法(十三)回溯算法---N皇后问题

文章目录 算法概念经典例子 - N皇后问题什么是N皇后问题?实现思路 算法概念 回溯算法是类似枚举的深度优先搜索尝试过程,主要是再搜索尝试中寻找问题的解,当发生不满足求解条件时,就会”回溯“返回(也就是递归返回&am…

C++ ─── string的完整模拟实现

本博客实现了string的常见接口实现 下面是用到的一些函数,供大家回顾复习 改进1:流提取的改进 原来的代码中流提取中是一个一个字符提取,扩容频率太快,消耗太多 采用buff的方式,buff在栈上,开空间快。 ist…

【开发日记】ElementUI表单使用原生@submit提交表单数据

使用submit.native.prevent为el-form设置提交方法。 使用native-type为el-button设置原生按钮类型。 示例如下&#xff1a; <el-form class"search" submit.native.prevent"submitSearch"><div classsearch-item>人员ID :<el-input sizemi…

msgpack-c使用指南

msgpack MessagePack 是一种高效的二进制序列化格式&#xff0c;可在多种语言之间交换数据&#xff0c;但它更快、更小。小整数被编码为单个字节&#xff0c;而短字符串除了字符串本身之外只需要一个额外的字节。 msgpackcxx使用指南 msgpackcxx是一个纯头文件库。 安装指南…

新浪测试社招要个25K,第一次面大厂挂了

一面 1、讲下被测系统和你负责测试的模块功能&#xff1f; 2、为什么选择这个测试框架&#xff0c;这个测试框架有什么优缺点&#xff1f; 3、测试文件的目录&#xff0c;包含哪些包&#xff0c;这些之间是怎么调用的&#xff1f; 4、UI自动化和接口自动化都是怎么做的&…

K8S中Prometheus+Grafana监控

1.介绍 phometheus:当前一套非常流行的开源监控和报警系统。 运行原理&#xff1a;通过HTTP协议周期性抓取被监控组件的状态。输出被监控组件信息的HTTP接口称为exporter。 常用组件大部分都有exporter可以直接使用&#xff0c;比如haproxy,nginx&#xff0c;Mysql,Linux系统信…