目录

RAID实现方式

RAID 0

RAID 1

RAID 5

RAID 10

管理RAID0

创建RAID

查看RAID

格式化和挂载

删除RAID

管理RAID1

创建RAID

查看RAID

格式化和挂载

增加热备盘

模拟故障

删除故障磁盘

删除RAID

管理RAID5

创建RAID

查看RAID

md5设备划分分区


RAID实现方式

从实现角度看,RAID主要分为:

  • 软RAID:所有功能均有操作系统和CPU来完成,没有独立的RAID控制/处理芯片和I/O处理芯片,效率最低。

  • 硬RAID:配备了专门的RAID控制/处理芯片和I/O处理芯片以及阵列缓冲,不占用CPU资源,成本很高。

  • 软硬混合RAID:具备RAID控制/处理芯片,但缺乏I/O处理芯片,需要CPU和驱动程序来完成,性能和成本在软RAID和硬RAID之间。

RAID 0

RAID0使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,而不进行冗余备份。数据被分成固定大小的块,并依次存储在每个磁盘上。

例如,如果有两个驱动器(驱动器A和驱动器B),一块数据的第一个部分存储在驱动器A上,第二个部分存储在驱动器B上,以此类推。这种条带化的方式可以同时从多个驱动器读取或写入数据,从而提高系统的性能。

适用于需要高性能而不关心数据冗余的场景

优点

  • 高性能:通过数据条带化和并行读写操作,RAID0可以提供更快的数据传输速度和更高的系统性能。

  • 成本效益:相对于其他RAID级别(如RAID1或RAID5),RAID0不需要额外的磁盘用于冗余备份,因此在成本上更具竞争力。

缺点

  • 缺乏冗余:由于RAID0不提供数据冗余,如果任何一个驱动器发生故障,所有数据都可能丢失。因此,RAID0不适合存储关键数据。

  • 可靠性降低:由于没有冗余备份,RAID0的可靠性相对较低。如果任何一个驱动器发生故障,整个阵列的可用性将受到影响。

RAID 1

优点

  • 数据冗余备份:RAID1通过数据镜像将数据完全复制到多个驱动器上,提供冗余备份,保护数据免受驱动器故障的影响。

  • 高可用性:由于数据的冗余备份,即使一个驱动器发生故障,系统仍然可以从其他驱动器中读取数据,保证数据的可用性和连续性。

  • 读取性能提升:RAID1可以通过并行读取数据的方式提升读取性能,从而加快数据访问速度。

缺点

  • 成本增加:由于需要额外的磁盘用于数据冗余备份,RAID1的成本相对较高。需要考虑额外的硬件成本。

  • 写入性能略低:由于数据需要同时写入多个驱动器,相对于单个驱动器的写入性能,RAID1的写入性能可能略低。

RAID 5

优点

  • 性能增强:通过数据条带化和并行读写操作,RAID5可以提供较高的数据传输速度和系统性能。

  • 数据冗余备份:通过分布式奇偶校验,RAID5可以提供数据的冗余备份,保护数据免受驱动器故障的影响。

  • 成本效益:相对于其他RAID级别(如RAID1),RAID5只需要额外一个驱动器用于奇偶校验信息,从而在成本上更具竞争力。

缺点

  • 写入性能受限:由于写入数据时需要重新计算奇偶校验信息,相对于读取操作,RAID5的写入性能较低。

  • 驱动器故障期间的数据完整性:如果一个驱动器发生故障,系统在恢复数据时需要进行计算,这可能导致数据访问速度较慢,并且在此期间可能会有数据完整性的风险。

RAID 10

优点

  • 高性能:通过数据条带化和并行读写操作,RAID10可以提供较高的数据传输速度和系统性能。

  • 数据冗余备份:通过数据镜像将数据完全复制到另一个驱动器上,RAID10提供了数据的冗余备份,保护数据免受驱动器故障的影响。

  • 较高的可靠性:由于RAID10采用镜像的方式进行数据冗余备份,即使一个驱动器发生故障,仍然可以从其他驱动器中读取数据,确保数据的可用性和连续性。

  • 快速的故障恢复:在RAID10中,如果一个驱动器发生故障,系统可以直接从镜像驱动器中恢复数据,而无需进行复杂的计算,从而加快故障恢复的速度。

缺点

  • 较高的成本:相对于其他RAID级别,RAID10需要更多的驱动器用于数据镜像,从而增加了硬件成本。

  • 低效的空间利用:由于RAID10的数据镜像特性,有效的存储容量只等于所有驱动器中一半的容量,因此空间利用率较低。

管理RAID0

创建RAID

#创建一个包含2个块设备的raid0设备/dev/md0
mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd{b,c}

查看RAID

#查看raid信息
cat /proc/mdstat
#查看raid设备详细信息
mdadm -D /dev/md0

格式化和挂载

mkfs.xfs /dev/md0
mkdir /data/raid0
mount /dev/md0 /data/raid0
df -h /data/raid0#创建数据
cp /etc/ho* /data/raid0
ls /data/raid0/

删除RAID

#卸载
umount /dev/md0
#stop RAID阵列,将删除阵列
mdadm --stop /dev/md0
#清除原先设备上的 md superblock
mdadm --zero-superblock /dev/sd{b,c}

raid0条带不能增加新成员盘

raid0条带不能强制故障成员盘

管理RAID1

创建RAID

#创建一个包含两个块设备的raid1设备/dev/md1
mdadm -C /dev/md1 -l 1 -n 2 /dev/sd{a,b}

查看RAID

mdadm -D /dev/md1

等待同步完成

格式化和挂载

mkfs.xfs /dev/md1
mkdir -p /data/raid1
mount /dev/md1 /data/raid1
df -h /data/raid1#创建数据
cp /etc/ho* /data/raid1
ls /data/raid1/

增加热备盘

mdadm /dev/md1 -a /dev/sdd
mdadm -D /dev/md1 | tail -5

此时sdd的状态为spare(备用)

模拟故障

mdadm /dev/md1 -f /dev/sdb
#查看成员状态
mdadm -D /dev/md1 |tail -5

sdd立刻顶替故障磁盘,并进行同步。数据依然能够正常访问

删除故障磁盘

m3stopdadm /dev/md1 -r /dev/sdb
mdadm -D /dev/md1 |tail -5

删除RAID

#卸载
umount /dev/md1
#stop RAID阵列,将删除阵列
mdadm --stop /dev/md1
#清除原先设备上的md superblock
mdadm --zero-superblock /dev/sd{a..d}

管理RAID5

创建RAID

#创建一个包含4个块设备的raid5设备/dev/md5
mdadm -C /dev/md5 -l 5 -n 4 /dev/sd{b..e}

查看RAID

mdadm -D /dev/md5

md5设备划分分区

#创建两个分区
fdisk /dev/md5
lsblk /dev/md5

#格式化
mkfs.xfs /dev/md5p1
mkfs.xfs /dev/md5p2
#新建目录
mkdir /data/webapp /data/dbapp
#挂载
mount /dev/md5p1 /data/webapp/
mount /dev/md5p2 /data/dbapp/
#验证
df -h | grep md5
echo hello webapp > /data/webapp/test
echo hello dbapp > /data/dbapp/test
#添加备用盘
mdadm /dev/md5 --add /dev/sdf
#模拟故障
mdadm /dev/md5 --fail /dev/sdb
##此时会发现sdf立刻顶替了损坏的盘
#移除故障盘
mdadm /dev/md5 --remove /dev/sdf
#再次添加
mdadm /dev/md5 --add /dev/sdb
#扩容raid设备,将raid成员数增加到5个
mdadm -G /dev/md5 --raid-devices 5
mdadm /dev/md5 --add /dev/sdg
lsblk /dev/md5
#新建分区3
fdisk /dev/md5
lsblk
#文件系统扩容
df -hT /data/dbapp/
xfs_growfs /data/dbapp/
df -hT /data/dbapp/

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

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

相关文章

程序设计|C语言教学——C语言基础4:进阶

一、预处理指令预处理指令在编译前执行,除了#include,还有以下常用指令:1. #define 宏定义无参宏:定义常量或代码片段,编译时直接替换(无类型检查)。#define PI 3.1415926 // 定义常量 #define…

数据结构之heap算法

文章目录前言1. heap结构概述2. push_heap3. pop_heap4. sort_heap5. make_heap前言 heap这种数据结构,允许用户以任何次序将任何数据放入该结构中,但是最后取出数据的时候一定是权值最高(或者最低)的元素。主要和实现有关&#x…

MCU 软件断点调试注意事项!!!

——为什么调试器会在运行中改我的Flash程序?调试单片机时,很多人都有这样的疑问:明明我在调试前刷进去的固件是好的,为什么加了一个断点之后,调试器居然去改了 Flash? 如果我拔掉调试器,这个固…

启发式合并 + 莫队 恋恋的心跳大冒险

题目来源:2025 Wuhan University of Technology Programming Contest 比赛链接:Dashboard - 2025 Wuhan University of Technology Programming Contest - Codeforces 题目大意: Solution: 首先肯定要预处理出以每个节点为起点…

JCTools 无锁并发队列基础:ConcurrentCircularArrayQueue

ConcurrentCircularArrayQueue ConcurrentCircularArrayQueue 是一个抽象类,它为基于数组的并发循环队列提供了基础功能。从其命名可以看出几个关键特性:​​Concurrent​​:常指无锁并发。​​Circular Array​​:内部使用循环数…

力扣(LeetCode) ——622. 设计循环队列(C语言)

题目:622. 设计循环队列示例1: MyCircularQueue circularQueue new MyCircularQueue(3); // 设置长度为 3 circularQueue.enQueue(1); // 返回 true circularQueue.enQueue(2); // 返回 true circularQueue.enQueue(3); // 返回 true circularQueue.…

在JVM跑JavaScript脚本 | Oracle GraalJS 简介与实践

这是2024年初的 GraalVM 系列博文,当时写了大纲,知道一年半后的现在才得以完成发布😄 1、概述 实话说,标题的场景为小众需求,日常开发基本用不到,我是最近在做一个低代码轮子玩具 app-meta 需要实现 FaaS&…

基于 EC 数据与大模型技术实现天气预报:从数据到上线的全栈方法

1. 先校准“EC 数据”与“AI 预报”的语境 EC 数据家族(常用) IFS/HRES:确定性全球模式,水平分辨率约 9 km,常用预报范围 10 天; IFS/ENS:51 成员集合预报,提供 15 天概率信息; ERA5:再分析数据,小时级、0.25,可追溯至 1940 年,用作训练/评测黄金基准。 AI 预报…

迭代器模式及优化

迭代器模式(Iterator Pattern)是一种行为型设计模式,用于提供一种统一的方式遍历聚合对象(如集合、容器)中的元素,而无需暴露对象的内部实现细节。它将遍历逻辑与聚合对象分离,使得遍历操作可以…

纯Qt手撕gb28181协议/gb28181协议服务端/gb28181协议设备端/gb28181设备模拟器/gb28181虚拟监控设备

一、前言说明 搞完onvif设备模拟器,总想着把28181设备模拟也实现,因为之前已经花了大力气把28181平台软件端实现了,为了实现这个组件,头发掉了一大把,专门把国标文档看了好几遍,逐行阅读,针对需…

【渗透实战】无下载器环境(curl/wget)下玩转 Metasploit 自动利用

1. 背景与问题场景 在渗透测试或漏洞利用中,Metasploit(MSF)是业界最常用的框架之一。 其许多 RCE(远程代码执行)模块在落地 payload(如 Meterpreter 或反弹 shell)时,采用了 CMD St…

jd-hotkey探测热点key

对任意突发性的无法预先感知的热点数据,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如恶意爬虫刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。然后…

C#WPF实战出真汁07--【系统设置】--菜品类型设置

1、菜品设置介绍 菜品设置跟餐桌设置的功能目的是相同的,包括了新增,删除,编辑,分页,查询,重置,全选,全消,列表功能,实现流程也是布局设计,后台逻…

aave v3 存款与借款利息的计算方式

本文只涉及到利率计算的数学原理,不作源码解析:存款首先我们假设小明在aave里面存了10000usdt,存的时候年化收益率是5%,那么半年后其存款的利息是多少呢?常规的计算方式如下:利息10000*5%*(存款的时长/一年的时长)这么做有什么问题呢?假设现…

Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析

📋 目录 项目概述 技术架构深度解析 核心功能模块详解 代码实现分析 使用场景与实战案例 性能优化与最佳实践 扩展开发指南 总结与展望 项目概述 什么是Windows-MCP.Net? Windows MCP.Net是一个基于.NET 10.0开发的Windows桌面自动化MCP&…

Boost.Asio学习(7):Boost.Beast实现简易http服务器

namespace beast boost::beast;beast::flat_buffer是一个用于 Boost.Asio 和 Boost.Beast 网络读写的缓冲区实现。专为 一次性顺序读取 / 消费 场景设计,比 std::string 或 std::vector 高效,因为它是扁平内存结构(contiguous memory&#x…

深入解析JVM内存区域划分:从理论到实践

Java虚拟机(JVM)是Java程序运行的核心环境,它负责管理内存分配、垃圾回收、字节码执行等关键任务。理解JVM的内存区域划分,对于优化Java应用性能、排查内存问题(如OutOfMemoryError、StackOverflowError)至…

滑窗|贪心|✅滚动数组

lc17.08pair按身高升序、相同时体重降序排序结果是找体重序列的最长递增子序列长度核心&#xff1a;转化为二维最长递增子序列问题求解vector<int> dp;for (auto& p : hw) {int w p.second;auto it lower_bound(dp.begin(), dp.end(), w);if (it dp.end()) {dp.pu…

深入理解数据库架构:从原理到实践的完整指南

一、数据库存储架构的多维度分类体系 1.1 基于数据组织方式的存储架构分类 数据库的存储架构从根本上决定了其性能特征、适用场景和扩展能力。理解不同的数据组织方式是选择合适数据库技术的基础&#xff0c;这种分类不仅反映了技术实现的差异&#xff0c;更体现了对不同业务需…

体彩排列三第2025218期号码分析

大家好&#xff0c;本人蔡楚门来此平台分享一下本期得经验和思路&#xff0c;希望能够给大家带来好的运气和灵感&#xff01;体彩排列三第2025218期号码分析&#xff0c;大小号码数字分析&#xff0c;上期开出全小号码最多&#xff0c;最近两期的开奖号码全部都是全小号码最多&…