这张磁盘有写保护_架构师不得不了解的硬件知识 - 磁盘阵列RAID

65846b2b39d1e803c3c94c38efea1557.png

概述

什么是RAID? RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能数据冗余的技术。RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。

RAID 中主要有三个关键概念和技术:镜像( Mirroring )数据条带( Data Stripping )数据校验( Data parity )

镜像:将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。

数据条带:将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。

数据校验:利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。

对于系统需要采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

常见的RAID等级有:

  • 标准RAID
    RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、RAID6 七个等级定为标准的 RAID 等级
  • 混合RAID:RAID10、RAID50、RAID60...

下面我们分别介绍一下各种RAID级别并做个简单对比。

RAID0

2939b48bf6385b2b210034bf4c2693a2.png

使用N块磁盘进行组合实现性能翻N倍的效果,写入数据会分成N部分进行,读取数据会从磁盘中组合起来读,这样就实现了读写性能翻倍。
优点:使用RAID0 可以将磁盘空间利用率最大化,能达到100%;性能快,磁盘越多性能越强。

缺点:没有数据保护,甚至比单盘的风险还大。任意坏了一块磁盘都会导致数据丢失。

RAID 1

2af1c89813eaf603e03120c35d344389.png

RAID 1 中的磁盘互为镜像,写入的数据会存放N份,读取的时候可以从任意一块磁盘读取。实现了读性能翻倍,写性能与单盘一样的效果。

优点:安全性依照阵列中的实体硬盘数量倍数成长。

缺点:空间利用率低,是所有阵列中利用率最低的。

RAID 5

0cef698857e697eb1d0cdcd6e1d880a4.png

RAID5 既考虑了空间利用率又考虑了性能的提升,采用校验码的而非镜像的方式组合而成,RAID5 阵列需要至少3块磁盘。在上图中使用了4块磁盘组合而成,任意一份数据写入会被分成三个数据块+一个校验块分别放入4个盘,数据块与校验块之间交叉分布,最终每个盘上既有数据块又有校验块。读数据时A时从Disk 0 ,1 ,2 分别读取到A1,A2,A3然后组合成A;如果此时有一块磁盘比如Disk2 损坏,则会通过读取到的A1、A2+ 校验码算出A3,再组合生成数据A对外提供。RAID 5 可以容忍一块盘的损坏。

优点:读的情况下是单盘数据的三倍;有一定的安全性,可以容忍损坏一块磁盘
缺点:由于每次写数据都需要计算校验块,导致写性能下降;仅能容忍坏一块磁盘损坏

RAID 6

50dc57016bc28711cc2181d69635fc79.png

RAID6可以灵活设计数据库和校验块的比例,上图中被设计成3个数据块+2个校验块的组合,增加了数据可靠性。RAID 6在备份的数据场景使用较多,提供的数据可靠性比RAID 5要高很多。
优点:容错硬盘数量比RAID5高
缺点:运算量比RAID5大、空间利用率比RAID5低

RAID 10

049c0ebf0354f5ae38cfdf2fce02e4b9.png

首先把两块盘做镜像,再按照RAID0的方式组合,既实现了数据的冗余又实现了性能翻倍的效果。RAID 1+0多适用于数据库场景。

RAID 50

6566956264df35e575887324f47ec49e.png

先做成RAID5的组再组合成RAID0,兼顾RAID5和RAID0的特性。

RAID 60

48911431ea994a3b4dec512da2abf2e3.png

image.png

先做成RAID6的组合再组合成RAID0,兼顾RAID6和RAID0的特性。

各种组合之间的对比

eafa4148d05ac82fcf57f0ef0c38c259.png


好了,各位朋友们,本期的内容到此就全部结束啦,能看到这里的同学都是优秀的同学,下一个升职加薪的就是你了!

如果觉得这篇文章对你有所帮助的话请扫描下面二维码加个关注。"转发" 加 "在看",养成好习惯!咱们下期再见!

11ed2a89da7c3c45913210a2531e7cfb.png

更多内容请移步至 个人博客 :JAVA日知录

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

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

相关文章

金蝶二次开发好跳槽吗_金蝶财务软件不会操作怎么办?

还在为不会操作金蝶软件而头疼吗?今天,小编和大家分享一些金蝶软件实操技巧,让大家更快速的完成工作!接下来,跟着小编一起来学习吧~1、新增凭证快捷键2、修改、删除凭证3、凭证审核说明:4、凭证过账说明&a…

可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...

关注“留学壹周刊”,回复专业名称,如“金融”,可以自由查询相关资料介绍本篇微信主要包括如下内容:1、2020Fall英国工业工程与运筹学专业授课类硕士(共26个项目)2、2020Fall英国工业工程与运筹学专业研究类PHD(共14个项目)3、2020…

怎么把此电脑放到桌面_Win10我的电脑怎么放到桌面

1/5点击右键选择“个性化”2/5进入后,点击“主题”3/5在主题页面的右侧点击“桌面图标设置”4/5最后勾选“计算机”5/5再点击“确定”即可

vmware虚拟机安装win7_图文分享虚拟机怎么安装win7系统

最近有朋友问有什么方法可以在不重装系统的情况下体验到其他的操作系统。那就是使用虚拟机吧,下面就以win7为例给大家分享一下在虚拟机安装WIN7的步骤。1,打开运行虚拟机,然后点击界面左上方的“文件”按钮,菜单栏选择“新建虚拟机…

usb接口供电不足_1个USB接口变成4个?什么东西那么“牛”?请你花2分钟了解一下...

USB分线器可以说是许多电脑用户日常生活中必不可少的配件,有了这东西,能让你的USB接口多出许多,关键是通过延长线可以把USB接口放置在你随手可得的地方,可谓是一款家庭、办公都很实用的小配件。USB分线器通常可以分为4、6、8个USB…

js中的new file_JS中的new操作符

一、什么是new?众所周知,在JS中,new的作用是通过构造函数来创建一个实例对象。像下面这样:(和普通函数不一样,当函数用作 构造函数 时,首字母一般要大写,以作区分。)function Foo(name) { th…

css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢

今天咱们聊点啥呢?要不还是聊点Python基础的东东吧,大家已经都知道啦,Python呢是一种面向对象的脚本编程语言,那面向对象的编程语言呢,都会支持面向对象的三大特性,你知道是哪三大特性吗?当然是…

R 回归 虚拟变量na_【R语言进阶】Logistic回归及哑变量设置

点击上方“蓝字”,我们一起分析数据Logistic回归是最常用的多因素回归模型,在医学研究中,常用于研究疾病的危险因素,下面我们一起来看看,R语言是如何实现Logistic回归的。1第一步 导入数据首先,在excel里全选数据集,右键复制。然后&#xff0…

logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

前情提要:通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数&#…

tensorflow适用于python版本_tensorflow用python哪个版本更好?

tensorflow用python哪个版本?一、安装anaconda tensorflow是基于python脚本语言的,因此需要安装python, 当然还需要安装numpy、scipy、six、matplotlib等几十个扩展包。如果一个个安装,装到啥时候去?(我曾经光安装scip…

php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

0x01 前言这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的。0x02 正文之绕过filter_var和preg_match本片文章主要深入一种php ssrf的技术——如何绕过例如filter_var(), preg_match()和parse_url()等函数。本次我进行测试的php版本全部为php v5.6.30php…

python json解析_python读取json文件并解析

原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setdefaultencoding(utf-8) filelistos.listdir(E:\\log\\files\\) for ite... 相关推荐 2019-12-05 20:03 − 如何使用 Python 语言来编码和解码 JSON 对象。 JSON(Jav…

python中文词云图代码_Python简单实现词云图代码及步骤解析

一、安装 wordcloud pip install wordcloud 二、加载包、设置路径 import os from wordcloud import WordCloud import matplotlib.pyplot as plt os.chdir(E:\\pyspace\\tmp) 三、词云图示例 1、默认参数示例 text Keep it simple and stupid. wc WordCloud() # 实例化词云图…

usb大容量存储设备驱动程序_20年历史了!为什么USB接口还存在?网友:原来如此...

USB接口作为计算机领域应用最广泛的数据接口,已有20多年的历史。和它的名字一样,USB(Universal Serial Bus)最初也是为统一的数据接口而设计的。你几乎可以用它来代替计算机的各种外部数据接口,只需为它设计相应的驱动程序。随着市场对USB接口…

linux终端炫酷命令,你不得不知道11个炫酷的 Linux 终端命令

很多朋友都很喜欢Linux ,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可…

lasso回归_一文读懂线性回归、岭回归和Lasso回归

(图片由AI科技大本营付费下载自视觉中国)作者 | 文杰编辑 | yuquanle本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后介绍了线性回归中常用的两种范数来解决过拟合和…

springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理

微服务平台架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。微服务系统可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

本文始发于个人公众号: TechFlow题意Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Link: https://leetcode.com/problems/longest-palindromic-substring/翻译给定一个字符串s&#xff0c…

spring和mybatis结合做简单的增删查改系统_springbootamp;amp;vue简单的景点信息管理系统...

springboot&&vue简单的景点信息管理系统这两天闲着没有什么事,就根据陈哥的教程,试着写了一个springboot和vue的简单的景点信息管理系统。也就大致实现了最基本的增删查改。先看看效果图吧:1、登陆界面: 2、注册界面&…

spark算子_十、Spark之详解Action类算子

常用Action类算子列表reduce(func): 通过func函数来对RDD中所有元素进行聚合运算,先运算分区内数据,再运算分区间数据。scala> val rdd1 sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] ParallelCollectionRDD[4] at makeRDD at :24# 对…