关于软raid的实现及常见问题

RAID概念

  • 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。 磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中
  • 为什么要用RAID
  • RAID(Redundant Arrays of Independent Disks,磁盘阵列):把相同的数据存储在多个硬盘的不同的地方的方法
  • 通过RAID可以提高磁盘I/O能力(磁盘并行读写)以及提高耐用性(磁盘冗余)。
  • RAID级别:多种磁盘组织在一起的工作方式有所不同
软件 RAID 和硬件 RAID   
  • 软件 RAID 的性能较低,因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前,操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。
  • 硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时,即使出现电源故障,它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。
实现方式
  • 外接式磁盘阵列:通过扩展卡提供适配能力
  • 内接式磁盘阵列:主板集成RAID控制器
  • Software RAID:在软件层面实现RAID
 RAID级别
  • RAID 0:Data Stripping数据分条技术
  • RAID 1:磁盘镜像
  • RAID 2:带海明码校验
  • RAID 3:带奇偶校验码的并行传送
  • RAID 4:带奇偶校验码的独立磁盘结构
  • RAID 5:分布式奇偶校验的独立磁盘结构
  • RAID 10:高可靠性与高效磁盘结构
  • RAID 01:RAID0和RAID1技术结合起来
  • RAID 的两个关键目标是提高数据可靠性和 I/O 性能。

    RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。
  • 1.镜像:
    • 镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。
  •  2.数据条带:
    • 数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。
  • 3.数据校验
    • 数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。
RAID 主要优势有如下几点
  • (1) 大容量
    • 这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。
  • (2) 高性能
    • RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。
  • (3) 可靠性
    • 可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。
  • (4) 可管理性
    • 实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。
RAID几种常见的类型RAID几种常见的类型

   

RAID-0 (条带化)

  • 条带 (strping),也是我们最早出现的RAID模式
  • 需磁盘数量:2块以上(大小最好相同),是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可.
  • 特点:成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,速度快.
  • 任何一个磁盘的损坏将损坏全部数据;磁盘利用率为100%

RAID-1 (镜像化)

  • mirroring(镜像卷),需要磁盘两块以上
  • 原理:是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,(同步)
  • RAID 1 mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区大小分为一样),数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;
  • 磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。

RAID-5 (分布式奇偶校验)

  • 需要三块或以上硬盘,可以提供热备盘实现故障的恢复;只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将都会损坏。
  • 空间利用率: (n-1)/n   
  •  RAID-6( 双分布式奇偶校验磁盘)
  • RAID 6 和 RAID 5 相似但它有两个分布式奇偶校验。大多用在大数量的阵列中。我们最少需要4个驱动器,即使有2个驱动器发生故障,我们依然可以更换新的驱动器后重建数据。

RAID-10 (镜像+条带)

  •   RAID 10是将镜像和条带进行两级组合的RAID级别,第一级是RAID1镜像对,第二级为RAID 0。

创建软raid(基于V10-server-GFB-x86)

1、查看并确定需要配置的磁盘(如图所示,有3块1G的盘做测试)

  1. 使用系统自带mdadm创建raid1并有一个热备

[root@localhost ~]# mdadm -Cv /dev/md1 -a yes -l1 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd

  1. 查看状态 cat /proc/mdstat

#相关信息,chunk大小及RAID等级说明,后面的两个U代表正常,若不是U则代表有误

  1. 使用工具查看状态 mdadm -D /dev/md1

[root@localhost 桌面]# mdadm -D /dev/md1

/dev/md1:   #RAID的设备文件名

           Version : 1.2

     Creation Time : Wed Dec  1 11:53:21 2021  #创建RAID的时间

        Raid Level : raid1   #RAID的等级

        Array Size : 1046528 (1022.00 MiB 1071.64 MB)  #整组RAID的可用量

     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)  #每颗磁盘的可用容量

      Raid Devices : 2 #组成RAID的磁盘数量

     Total Devices : 3 #包括spare的总磁盘数

       Persistence : Superblock is persistent

       Update Time : Wed Dec  1 11:53:27 2021

             State : clean  #目前这个RAID的使用状态

    Active Devices : 2  #启动的设备数量

   Working Devices : 3  #目前使用于此RAID的设备数量

    Failed Devices : 0  #损坏的设备数量

     Spare Devices : 1  #预备磁盘的数量

Consistency Policy : resync

              Name : localhost.localdomain:1  (local to host localhost.localdomain)

              UUID : b30b8efc:5567d7d9:08a3b0b4:7ac8eccc

            Events : 17

    Number   Major   Minor   RaidDevice State

       0       8       16        0      active sync   /dev/sdb

       1       8       32        1      active sync   /dev/sdc

       2       8       48        -      spare   /dev/sdd

  1. 格式化并挂载使用

# mkfs.xfs /dev/md1          #格式化刚刚创建的RAID 1

# mkdir /test       #创建挂载点

# mount /dev/md1 /test       #挂载

# df -hT /test      #确认挂载,使用起来和普通文件系统没有区别

文件系统       类型  容量  已用  可用 已用% 挂载点

/dev/md1       xfs    1016M   40M   977M    4% /test

#将挂载信息写入/etc/fstab中进行开机自动挂载了,设备名可以是/dev/md1,也可以是设备的UUID。

# blkid /dev/md1     #查询该RAID 5的UUID

/dev/md1: UUID="34f71cfc-cf64-406e-bee6-fe364e15c2cb" BLOCK_SIZE="512" TYPE="xfs"

vim /etc/fstab   #打开/etc/fstab,写入下面内容

UUID=34f71cfc-cf64-406e-bee6-fe364e15c2cb /test xfs     defaults    0 0

#mount -a

常见问题

1、配置时报错

如提示:报错,md设备只能用md命名,正确的命名

2、更换坏盘(这里用命令模拟坏盘)

可以看到热备盘已经自动顶替故障盘

  1. 删除坏盘
  1. 添加新盘
  1. 删除raid
  1. 取消挂载
  1. 停止raid设备
  1. 清除磁盘中的raid标识
  1. 常用参数介绍

mdadm命令常见参数解释:

-A 激活磁盘阵列

-C 建立一个新阵列

-D 打印阵列设备的信息

-G 改变阵列大小或形态

-S 停止阵列 -r 移除设备

-l 设定磁盘阵列的级别

-n 指定阵列磁盘的数量

-x 指定阵列中备用盘的数量

-f 将设备状态定为故障

-a 添加设备到阵列

-v 显示详细信息软RAID

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207468.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Docker]九.Docker compose讲解

docker-compose 是 docker 官方的一个开源项目,可以实现对 docker 容器集群的快速编排, docker-compose 通过一个 配置文件 来管理多个 Docker 容器,在配置文件中,所有的容器通过 services 来定义,然后使用 docker-compose脚本 来 启动&am…

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录,其中base为基础配置,即在任何语言环境下都会加载的资源, color.json:用于配置颜色,如页面的背景和文字的颜色。 string.json:用于设置文字&#…

基于单片机声光控智能路灯系统仿真设计

**单片机设计介绍, 基于单片机声光控智能路灯系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的声光控智能路灯系统是一种利用单片机技术实现智能控制的路灯系统。它通过感知环境音量和光照强度…

opengl制作天空盒

首先创建顶点数组 unsigned int m_uiVaoBufferID; glGenVertexArrays(1, &m_uiVaoBufferID); 然后创建顶点缓冲区 float skyboxVertices[] {// positions-1.0f, 1.0f, -1.0f,-1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, 1.0f, -1.0f,-1.0f, 1.…

visual studio 如何建立 C 语言项目

安装这个 模块。 新建 空项目 创建完成 写demo 点击运行:

Java如何获取泛型类型

泛型(Generic) 泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Vis…

合并区间问题

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals [[1,…

基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言一…

深度学习之基于YoloV5车辆和行人目标检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…

UML建模图文详解教程——类图

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著 类图概述 类图用来描述系统内各种实体的类型以及不同…

【华为OD题库-033】经典屏保-java

题目 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示"屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹:请根据如下要求,实现屏保Logo坐标的计算算法 1、屏幕是一个800 * 600像素的矩形&…