linuxRAID(软)
RAID是一种存储机制,英文全名为“RedundantArrays of Inexpensive Disks”,即容错廉价磁盘阵列。RAID可以通过一些技术(硬件或者软件)将多个磁盘整合起来,不仅是一个存储,还具有数据保护、提高IO能力等功能。不同等级的RAID有不同的功能。常见的RAID级别为RAID-0,RAID-1、RAID-5、RAID-6AID 1+0、RAID 1+0
RAID的实现方式:软件RAID、硬件RAID
硬件RAID:
外接式磁盘阵列:例如通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
软件RAID
chunk:每块组成RAID-0的磁盘,都会被分隔为固定大小的小区块即chunk。当一个文件要写入RAID是,依据小区块(chunk)的大小切割好,一次放入RAID中。
RAID-0(等量模式,stripe):
最少磁盘数:2
可用空间:N*min[s1,s2……]
优点:提升IO能力,读写性能均有提高
缺点:没有冗余,耐用性降低
数据存储方式:此处以两块磁盘为例。当有一个20M大小的数据写入时,每个磁盘将会被分配10M的数据
RAID-1(mirror,镜像模式)
最少磁盘数:2
可用空间:min[s1,s2……]
优点:
提升IO能力,写性能没有提(甚至会降低)高,读性能提高。
有冗余,耐用性提高
缺点:可用空间减少,由于每份数据都要完整的保存到两块磁盘,容量几乎减少50%。
数据存储方式:此处以两块磁盘为例。当有一个20M大小的数据写入时,每个磁盘将会被分配20M的相同数据。
RAID-10和RAID-01:RAID-0性能佳但是数据不安全,RAID-1数据安全但是性能不佳。所以可以将两者结合起来组成RAID-10和RAID-01。
RAID-10:举例来说,先将;两块磁盘组成RAID-1,并且这样的设置共有两组,然后将这两组RAID-1组成RAID-0。
最少磁盘数:4
可用空间:N*min[s1,s2……]/2
优点:
提升IO能力,读写性能提高。
有冗余,耐用性提高
缺点:可用空间减少,由于每份数据都要完整的保存到两块磁盘,容量几乎减少50%。
数据存储方式:此处以四块磁盘为例。A和B组成第一组RAID-1,C和D组成第二组RAID-1,然后这两组在组成RAID-0。当有一个40M大小的数据写入时,由于RAID-0的特性,每组RAID-1会写入20M数据。由于RAID-1的特性,每块磁盘会写入20M数据。
RAID-01:先组成RAID-0在组成RAID-1。
RAID4
最少磁盘数:3
可用空间:(N-1)*min(s1,s2,23.......)
优点:
提升IO能力,读性能提高,写性能不一定增加,因为软RAID写入的数据还要经过计CPU算同位校验码(parity)
有冗余,耐用性提高允许坏一块盘
缺点:可用空间减少一块单独一块做校验盘容易成为系统瓶颈。
数据存储方式:此处以3块磁盘为例。A、B、C三块磁盘中有一块存储其他两块盘的校验码(此处认定为C盘)。有40M数据写入时,A、B各存储20M,C用来存放A、B盘的校验码。
RAID-5:以三块盘为例,与RAID4基本相同,不同的是RAID5是三块盘轮流做校验盘
最少磁盘数:3
可用空间:(N-1)*min(s1,s2,23.......)
优点:
读写性能均提升。
有冗余,耐用性提高,允许坏一块盘。
linux上软RAID的实现
在centos上要实现软RAID,依赖于内核的md(multi model)模块。
命令:mdadm(multi model admin)
语法:mdadm [model] <raiddevice> [options] <component-devices>
model:
创建:-C
装配:-A
监控:-F
管理:--manage
-f(--fail):将raid中某块磁盘标记为出错状态
-r(--remove):
-a(--add):
raiddevice:/dev/md#。指名要创建或者管理的RAID设备。
component-devices:指明raid组成成员是哪些盘
-C:创建模式
-n#:使用#快设备创建RAID
-L#:创建RAID的级别
-c chunk_size:指名块大小默认64M
-x #:指定空闲盘的个数
-a {yes|no}:自动创建目标RAID设备的设备文件
示例:创建一个RAID-5设备,三块磁盘做存储,一块空闲磁盘。
第一步查看磁盘状态,并创建新的分区如下图创建sda{5,6,7,8}四个分区
将分区的类型更改为fd。上图中新建的四个分区System还是Linux,需要将其改为fd。
重读磁盘分区表
使用:partprobe命令即可
查看系统是否已经存在md设备:cat /proc/mdstat。可以看到并没有md设备。此步骤主要是查看主机是否曾经创建过md设备,一次确定本次创建的md设备名称
创建RAID-5
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sda{6,7,8,9}
初始化raid设备
mke2fs -t ext4 /dev/md0
挂载使用
mount /dev/md0 /mydata
仿真RAID出错状态处理
查看raid详细信息:mdadm --detail /dev/md0
将磁盘sda6标记为错误状态
查看raid信息,可以看到有一个错误状态的磁盘,并且空闲磁盘自动加入到raid中
将出错的磁盘删除并且加入新的磁盘/dev/sda10:mdadm --manage /dev/md0 -a /dev/sda10 -r /dev/mda6
关闭raid
linuxRAID(软)的更多相关文章
- Android性能优化之巧用软引用与弱引用优化内存使用
前言: 从事Android开发的同学都知道移动设备的内存使用是非常敏感的话题,今天我们来看下如何使用软引用与弱引用来优化内存使用.下面来理解几个概念. 1.StrongReference(强引用) 强 ...
- Atitit.研发管理软件公司的软资产列表指南
Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...
- 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...
- Android 弱引用和软引用
软引用 和 弱引用 1. SoftReference<T>:软引用-->当虚拟机内存不足时,将会回收它指向的对象:需要获取对象时,可以调用get方法. 2. WeakRefere ...
- Android中点击隐藏软键盘最佳方法——Android开发之路4
Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...
- Android之弹出/隐藏系统软键盘
Android弹出/隐藏系统软键盘的代码如下: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT ...
- 软工实践——github文件整理
软工实践中,整理github上文件遇到的一些问题 先扔github链接Transcend/ActivityHelper 1.原来呢我们团队的github上的文件的安排十分凌乱,没有归档.把说明文档.源 ...
- tp5 model 中的软删除
model中需use traits\model\SoftDelete; // 数据表中需添加一个 delete_time 字段保存删除时间 namespace app\index\model; use ...
- Oracle SQL的硬解析和软解析
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据定义语言),他们是从来不会共享使用的,也 ...
随机推荐
- SpringCloud Config(配置中心)实现配置自动刷新(十六)
一.实现原理 1.ConfigServer(配置中心服务端)从远端git拉取配置文件并在本地git一份,ConfigClient(微服务)从ConfigServer端获取自己对应 配置文件: 2.当远 ...
- hystrix原理
一.hystrix 产生背景 微服务是解决复杂服务的一个方案,在功能不变的情况下,对一个复杂的单体服务分解为多个可管理的分支.每个服务作为轻量的子服务,通过RPC实现服务间的关联,将服务简单化.每个服 ...
- python str的一些操作及处理
一.str的定义:Python中凡是用引号引起来的数据可以称为字符串类型,组成字符串的每个元素称之为字符,将这些字符一个一个连接起来,然后在用引号起来就是字符串. 二.str的简单操作方法: conu ...
- 使用ESP8266 打造一款物联网产品---新版ESP8266-RTOS-SDK(V3.1以上)串口使用指南
问题背景: 使用乐鑫的ESP8266做一个物联网的项目,要使用串口0通信,串口1作为打印log.本来是一个非常简单的事情.没想到居然里面有个大坑.本着前任踩坑,后任抱娃的原则. 这里就做个记录,给后面 ...
- RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true
1.现象 很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台B ...
- NOIP模拟18 T2
不知道为什么很多人拒绝这题打搜索...其实搜索在充分剪枝后时间是非常优秀的,不管数据怎样基本都可跑出 首先一个显然结论:对于某种状态,他抓到的小精灵一定是一个连续的区间. 因此我们可以枚举这个区间的左 ...
- 硬件内存模型到 Java 内存模型,这些硬核知识你知多少?
Java 内存模型跟上一篇 JVM 内存结构很像,我经常会把他们搞混,但其实它们不是一回事,而且相差还很大的,希望你没它们搞混,特别是在面试的时候,搞混了的话就会答非所问,影响你的面试成绩,当然也许你 ...
- javaScript中this到底指向谁
1.前言 在JavaScript中,this的指向一直是大多数初学者的易错点,总是搞不清楚this到底指向谁,而在求职面试中,this的指向问题往往又是高频考点.本篇博文就来总结一下在JavaScri ...
- 利用爬虫爬取LOL官网上皮肤图片
今天在浏览网页时,看到一篇很有意思的文章,关于网络爬虫的.该文章是讲述如何利用request爬取英雄联盟官网皮肤图片.看过文章后觉得挺有用的,把代码拿过来运行了一下,果真爬取成功.下面给大家分享一下代 ...
- Python 基础之re 模块
Python 基础之大话 re 在使用re模块中主要会用到一下几个方法: re.match() #从头匹配一个字符串 re.search() #浏览全部字符串,匹配第一个符合规则的字符串 re.fin ...