深入探讨RAID 5的性能与容错能力:实验与分析(磁盘阵列)

news2025/3/17 1:18:32

前言——

本实验旨在探讨 RAID 5 的性能和容错能力。通过创建 RAID 5 阵列并进行一系列读写性能测试及故障模拟,我们将观察 RAID 5 在数据冗余和故障恢复方面的表现,以验证其在实际应用中的可靠性和效率。

首先说明:最少三块硬盘, 使用 4 块硬盘确实能获得更好的性能和更大的存储空间。让我们用 4 块硬盘(nvme0n2 到 nvme0n5)来构建 RAID 5。

最少三块,我这边用四块做实验。

你的硬盘类型可能和我的不一样 不过没有关系不影响操作实验

实验环境说明

  • 系统盘:nvme0n1(不参与 RAID)
  • 可用磁盘:
    • nvme0n2(20GB)
    • nvme0n3(20GB)
    • nvme0n4(20GB)
    • nvme0n5(20GB)

实验步骤

1.确认安装 mdadm
sudo yum install mdadm -y
2.清理现有分区

(因为已经有分区,需要先清理)清楚分区会删除数据 慎重操作

# 删除现有分区
sudo fdisk /dev/nvme0n2
# 输入 d 删除现有分区
# 输入 w 保存并退出

# 对其他磁盘重复相同操作
sudo fdisk /dev/nvme0n3
sudo fdisk /dev/nvme0n4
sudo fdisk /dev/nvme0n5
3.创建新的 RAID 分区

对每个磁盘创建新分区:

sudo fdisk /dev/nvme0n2

在 fdisk 中

  1. 输入 n 创建新分区
  2. 选择 p 创建主分区
  3. 分区号按默认(1)
  4. 起始扇区按默认
  5. 结束扇区输入 +15G(给每个磁盘分配15GB用于RAID)
  6. 输入 t 修改分区类型
  7. 输入 fd 设置为 Linux RAID
  8. 输入 w 保存并退出

按照顺序来 具体分配多少空间根据你的需求

对 nvme0n3、nvme0n4、nvme0n5 重复相同操作。

4.创建 RAID 5 阵列
sudo mdadm -Cv /dev/md0 -l 5 -n 4 /dev/nvme0n2p1 /dev/nvme0n3p1 /dev/nvme0n4p1 /dev/nvme0n5p1

给大家介绍一下每一个参数的作用 (不理解的话做出来也没有用

命令分解
  • mdadm: 用于管理Linux软件RAID设备的工具。
  • -C: 创建一个新的RAID设备。
  • -v: 显示详细输出,便于调试和查看进程。
  • /dev/md0: 创建的RAID设备的名称,表示第一个RAID设备。
  • -l 5: 指定RAID级别为5。RAID 5使用条带化和奇偶校验,提供较好的读性能和容错能力。
  • -n 4: 指定RAID阵列中的磁盘数量为4。这意味着RAID 5将使用4个设备来存储数据和奇偶校验信息。
  • /dev/nvme0n2p1 /dev/nvme0n3p1 /dev/nvme0n4p1 /dev/nvme0n5p1: 指定参与RAID阵列的具体设备。这些是四个NVMe设备的分区。

5.查看 RAID 状态
cat /proc/mdstat

可能会有疑惑 不是刚格式化创建好的分区,并没有创建什么文件数据之类的,为什么还要同步数据

  • 在RAID阵列创建过程中,系统会将所有参与的设备视为一个整体,并进行必要的操作(如奇偶校验的计算和写入),这就是为什么你看到有恢复进度。

创建文件系统

sudo mkfs.xfs /dev/md0    #创建文件系统

log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0               isize=512    agcount=16, agsize=491008 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=7856128, imaxpct=25
         =                       sunit=128    swidth=384 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

创建挂载点并挂载

sudo mkdir /raiddata
sudo mount /dev/md0 /raiddata

设置开机自动挂载

echo '/dev/md0 /raiddata xfs defaults 0 0' | sudo tee -a /etc/fstab

验证挂载

df -hT

对于四个10GB的磁盘,实际可用空间计算为: 可用空间=(磁盘数量−1)×每个磁盘的容量可用空间=(磁盘数量−1)×每个磁盘的容量 可用空间=(4−1)×10GB=30GB可用空间=(4−1)×10GB=30GB

6.如果需要删除 RAID

如果配置出错需要重来,可以使用以下命令:

bash
复制
# 停止 RAID
sudo mdadm --stop /dev/md0

# 清除超级块
sudo mdadm --zero-superblock /dev/nvme0n2p1
sudo mdadm --zero-superblock /dev/nvme0n3p1
sudo mdadm --zero-superblock /dev/nvme0n4p1
sudo mdadm --zero-superblock /dev/nvme0n5p1

# 从 fstab 中删除挂载项
sudo sed -i '/\/dev\/md0/d' /etc/fstab

性能测试实验

设计一系列实验来测试 RAID 5 的性能和容错能力。这些测试将展示 RAID 5 的主要特性:读写性能、数据冗余和故障恢复能力

这些测试将展示

  1. RAID 5 的读写性能
  2. 数据冗余和容错能力
  3. 在磁盘故障时的系统行为
  4. 重建过程的自动化

实验一:基础性能测试

首先创建一个测试文件

dd if=/dev/zero of=/raiddata/testfile bs=1M count=1024

这会创建一个 1GB 的测试文件

测试读取速度

dd if=/raiddata/testfile of=/dev/null bs=1M

测试写入速度

dd if=/dev/zero of=/raiddata/testfile2 bs=1M count=1024 conv=fdatasync

实验二:容错性测试(模拟磁盘故障)

  1. 首先创建一些重要数据
# 创建测试目录
mkdir /raiddata/important_data

# 创建一些测试文件
for i in {1..5}; do
    dd if=/dev/urandom of=/raiddata/important_data/file$i bs=1M count=100
done

# 计算文件的 MD5 值以便后续验证
[root@Centos8 ~]# md5sum /raiddata/important_data/* > /root/checksums.txt
[root@Centos8 ~]# cat /root/checksums.txt 
6640f67939d03071c27bda6ba5cf3c3d  /raiddata/important_data/file1
f5d97e43cb0678fe4f07f2a2221912ac  /raiddata/important_data/file2
16c63489a2ab7a15b857d6a265f33cdd  /raiddata/important_data/file3
af4cde80c4affa9480a56cf7887466dc  /raiddata/important_data/file4
3cadc5fc4dbd6a21d5d0d4e73374a306  /raiddata/important_data/file5

模拟磁盘故障

# 查看当前 RAID 状态
cat /proc/mdstat

# 标记其中一个磁盘为故障
sudo mdadm /dev/md0 --fail /dev/nvme0n2p1

# 查看 RAID 状态
cat /proc/mdstat
mdadm --detail /dev/md0

验证数据完整性

# 验证之前创建的文件是否仍然可以访问
ls -l /raiddata/important_data/

# 验证文件内容是否完整
md5sum -c /root/checksums.txt

实验三:重建测试

移除故障磁盘

sudo mdadm /dev/md0 --remove /dev/nvme0n2p1

添加新磁盘(假设我们修复了原来的磁盘)

sudo mdadm /dev/md0 --add /dev/nvme0n2p1

观察重建过程

# 实时监控重建进度
watch -n 1 cat /proc/mdstat

实验四:性能测试

  1. 安装性能测试工具
bash
复制
sudo yum install fio -y
  1. 运行综合性能测试
bash
复制
# 创建测试配置文件
cat > raid_test.fio << EOF
[global]
ioengine=libaio
direct=1
group_reporting
time_based
runtime=60

[sequential-read]
stonewall
rw=read
size=1g
directory=/raiddata
bs=1M

[sequential-write]
stonewall
rw=write
size=1g
directory=/raiddata
bs=1M

[random-read]
stonewall
rw=randread
size=1g
directory=/raiddata
bs=4k

[random-write]
stonewall
rw=randwrite
size=1g
directory=/raiddata
bs=4k
EOF

# 运行测试
fio raid_test.fio

执行完成脚本等待性能测试 然后输出各种参数和结果

实验总结

通过本实验,我们成功验证了 RAID 5 的高效读写性能和良好的容错能力。在模拟磁盘故障的情况下,数据仍然保持完整,且重建过程顺利进行。这表明 RAID 5 是一种可靠的存储解决方案,适合需要高可用性和数据安全性的场景。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯备赛-二分-技能升级

问题描述 小蓝最近正在玩一款 RPG 游戏。他的角色一共有 NN 个可以加攻击力的技能。 其中第 ii 个技能首次升级可以提升 AiAi​ 点攻击力, 以后每次升级增加的点数 都会减少 Bi。「AiBi⌉Bi​。「Bi​Ai​​⌉ (上取整) 次之后, 再升级该技能将不会改变攻击力。 现在小蓝可以…

电子招采软件系统,如何实现10年可追溯审计

一、在当前经济环境下&#xff0c;中小企业面临着巨大的生存压力&#xff0c;传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会&#xff0c;混合办公成为新常态&#xff0c;数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…

Ubuntu从源代码编译安装QT

1. 下载源码 wget https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz tar xf qt-everywhere-src-5.15.2.tar.xz cd qt-everywhere-src-5.15.22. 安装依赖库 sudo apt update sudo apt install build-essential libgl1-mesa-d…

X86 RouterOS 7.18 设置笔记七:不使用Upnp的映射方法

X86 j4125 4网口小主机折腾笔记五&#xff1a;PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一&#xff1a;基础设置 X86 RouterOS 7.18 设置笔记二&#xff1a;网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三&#xff1a;防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…

数字隔离器,如何提升储能系统的安全与效能?

随着全球对光伏、风电等可再生能源需求的持续增长&#xff0c;在全球能源转型的浪潮中&#xff0c;储能技术凭借着可平衡能源供需、提高能源利用效率等优势&#xff0c;已成为实现 “双碳” 目标的核心支撑。据国家能源局公布数据显示&#xff0c;截至2024年底&#xff0c;我国…

基于UniApp + Vue3开发的智能汉字转拼音工具

基于UniApp Vue3开发的智能汉字转拼音工具 项目简介 这是一个基于 UniApp Vue3 开发的智能汉字转拼音工具&#xff0c;前端使用 Vue3 构建界面&#xff0c;后端采用 Classic ASP 提供接口支持&#xff0c;通过 pinyin-pro 库实现精准的中文转拼音功能。本工具支持以下特性&…

PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法

在上一篇文章中&#xff0c;我们介绍了 Proximal Policy Optimization (PPO) 算法&#xff0c;并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法&#xff0c;这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…

Angular由一个bug说起之十四:SCSS @import 警告与解决⽅案

SCSS import 警告与解决⽅案 ⚠ 警告信息 在 SCSS 中&#xff0c;使⽤ import 可能会产⽣以下警告&#xff1a; Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. ? 为什么会有这个警告&#xff1f; Sass 官⽅已经废弃 imp…

PyTorch系列教程:基于LSTM构建情感分析模型

情感分析是一种强大的自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;用于确定文本背后的情绪基调。它常用于理解客户对产品或服务的意见和反馈。本文将介绍如何使用PyTorch和长短期记忆网络&#xff08;LSTMs&#xff09;创建一个情感分析管道&#xff0c;LSTMs在处…

SEO新手基础优化三步法

内容概要 在网站优化的初始阶段&#xff0c;新手常因缺乏系统性认知而陷入技术细节的误区。本文以“三步法”为核心框架&#xff0c;系统梳理从关键词定位到内容布局、再到外链构建的完整优化链路。通过拆解搜索引擎工作原理&#xff0c;重点阐明基础操作中容易被忽视的底层逻…

Tcp网络通信的基本流程梳理

先来一张经典的流程图 接下介绍一下大概流程&#xff0c;各个函数的参数大家自己去了解加深一下印象 服务端流程 1.创建套接字&#xff1a;使用 socket 函数创建一个套接字&#xff0c;这个套接字后续会被用于监听客户端的连接请求。 需要注意的是&#xff0c;服务端一般有俩…

PHP函数缺陷详解

无问社区-官网&#xff1a;http://www.wwlib.cn 本期无人投稿&#xff0c;欢迎大家投稿&#xff0c;投稿可获得无问社区AI大模型的使用红包哦&#xff01; 无问社区&#xff1a;网安文章沉浸式免费看&#xff01; 无问AI大模型不懂的问题随意问&#xff01; 全网网安资源智…

深度学习GRU模型原理

一、介绍 门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09; 是一种改进的循环神经网络&#xff08;RNN&#xff09;&#xff0c;专为解决传统RNN的长期依赖问题&#xff08;梯度消失/爆炸&#xff09;而设计。其核心是通过门控机制动态控制信息的流动。与LSTM相…

网络空间安全(31)安全巡检

一、定义与目的 定义&#xff1a; 安全巡检是指由专业人员或特定部门负责&#xff0c;对各类设施、设备、环境等进行全面或重点检查&#xff0c;及时发现潜在的安全隐患或问题。 目的&#xff1a; 预防事故发生&#xff1a;通过定期的安全巡检&#xff0c;及时发现并解决潜在的…

基于Python+SQLite实现(Web)验室设备管理系统

实验室设备管理系统 应用背景 为方便实验室进行设备管理&#xff0c;某大学拟开发实验室设备管理系统 来管理所有实验室里的各种设备。系统可实现管理员登录&#xff0c;查看现有的所有设备&#xff0c; 增加设备等功能。 开发环境 Mac OSPyCharm IDEPython3Flask&#xff…

面试系列|蚂蚁金服技术面【2】

今天继续分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经&#xff0c;复盘面试过程中踩过的坑&#xff0c;整理面试过程中提到的知识点&#xff0c;希望能给正在准备面试的你一些参考和启发&#xff0c;希望对你有帮助&#xff0c;愿你能够获得心仪的 offer ! 第一轮面试完…

【JavaEE】网络原理之初识

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

Vscode工具开发Vue+ts项目时vue文件ts语法报错-红波浪线等

Vscode工具开发Vuets项目时vue文件ts语法报错-红波浪线等 解决方案 问题如题描述&#xff0c;主要原因是开发工具使用的代码检查与项目的中的ts不一致导导致&#xff0c;解决办法&#xff0c;修改 vscode 中&#xff0c; 快捷键&#xff1a;command shift p, 输入&#xff…

ROS实践(五)机器人自动导航(robot_navigation)

目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…

【小沐学Web3D】three.js 加载三维模型(React)

文章目录 1、简介1.1 three.js1.2 react.js 2、three.js React结语 1、简介 1.1 three.js Three.js 是一款 webGL&#xff08;3D绘图标准&#xff09;引擎&#xff0c;可以运行于所有支持 webGL 的浏览器。Three.js 封装了 webGL 底层的 API &#xff0c;为我们提供了高级的…