linux基础-磁盘阵列(RAID)实例详解
磁盘阵列(RAID)实例详解
raid技术分类
软raid技术
硬raid技术
Raid和lvm的区别
为什么选择用raid
RAID详解
RAID-0
RAID-1
RAID-5
Raid-10
Raid的管理
案例:创建一个raid10+冗余盘
磁盘阵列(RAID)实例详解
Raid(磁盘阵列)级别介绍
Raid有”廉价磁盘冗余阵列”的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的;也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘可以通过冗余数据计算出损坏磁盘的数据,这样就提高了数据储存的安全性。可以提供较普通磁盘更高的速度、安全性,所以服务器在安装时都会选择创建RAID。RAID的创建有两种方式:软RAID(通过操作系统软件来实现)和硬RAID(使用硬件阵列卡)。
raid技术分类
常见的raid技术分两类
基于硬件raid技术和基于软件的raid技术
软raid技术
在Linux下安装系统的过程中或者安装系统后通过自带的软件就能实现raid功能,使用软raid可省去购买硬件raid控制器和附件就能极大地增强磁盘的IO性能和可靠性,由于是用软件实现的raid功能,所以它配置灵活,管理方便,同时使用软件raid,还可以将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的
硬raid技术
基于硬件raid解决方案比基于软件raid技术在使用性能和服务性能上会更胜一筹,具体表现在检测和修复多位错误的能力,错误磁盘自动检测和阵列重建等方面,从安全性能考虑,基于硬件的raid解决方案也是更安全的,因此,在实际的生产场景工作中,基于硬件的raid解决方案应该是我们的首选,互联网公司常用的生产dell服务器,默认就会支持raid0,1。如果raid5,10就需要买raid卡(或者个别配置自带有,购买前,看参数)
Raid和lvm的区别
LVM(Logical Volume Manager)是Linux环境下对硬盘分区进行管理的一种机制,可以实现多块硬盘空间的动态划分和调整,跨硬盘储存文件等功能。常用于装备大量硬盘并随时需要增加或删除硬盘的环境,也同样适于仅有一、两块硬盘的环境。(可以灵活的管理磁盘容量,让磁盘分区随意变大变小,便于管理磁盘剩余的容量)如果过于强调性能和备份,还是优先选择硬件raid功能
为什么选择用raid
磁盘阵列可以把多个磁盘驱动器通过不同的连接方式连接在一起协同办公,大大提高了读写速度,同时把磁盘系统的可靠性提高到接近无措的境界,使其可靠性极高。
用raid最直接的好处是:
提高数据安全性
提升数据读写性能
提供更大的单一逻辑磁盘数据容量存储
RAID详解
RAID-0

|
D1 |
D2 |
|
数据1 |
数据2 |
|
数据3 |
数据4 |
|
数据5 |
数据6 |
RAID-0 :striping(条带模式)特点:在读写的时候可以实现并发,所以相对其读写性能最好,每个磁盘都保存了完整数据的一部分,读取也采用并行方式,磁盘数量越多,读取和写入速度越快。因为没有冗余,一个硬盘坏掉全部数据丢失。至少两块硬盘才能组成Raid0阵列。
容量:所有硬盘之和。磁盘利用率为100%。
生产应用场景
1、负载均衡集群下面的多个相同RS节点服务器
2、分布式文件存储下面的主节点或CHUNK server
3、MySQL主从复制的多个slave服务器
4、对性能要求很高,对冗余要求很低的相关业务
RAID-1

|
D1 |
D2 |
|
数据1 |
数据1 |
|
数据2 |
数据2 |
|
数据3 |
数据3 |
RAID-1 :mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区大小分为一样),数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;
磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。
RAID-5

|
D1 |
D2 |
D3 |
|
数据1 |
数据2 |
校验和1 |
|
校验和2 |
数据3 |
数据4 |
|
数据5 |
校验和3 |
数据6 |
特点:采用奇偶校验,可靠性强,磁盘校验和被散列到不同的磁盘里面,增加了读写速率。只有当两块磁盘同时丢失时,数据才无法恢复,至少三块硬盘并且硬盘大小应该相等才能组成Raid5阵列。
容量:所有硬盘容量之和减去其中一块硬盘的容量,被减去的容量被分配到三块硬盘的不同区域用来存放数据校验信息。
Raid-10

|
D1 |
D2 |
D3 |
D4 |
|
数据1 |
数据1 |
数据2 |
数据2 |
|
数据3 |
数据3 |
数据4 |
数据4 |
Raid10(Raid1+Raid0)是现在比较常用的一种磁盘阵列级别,它的容错好,读写数据效率较高,但经费相对也较高。
特点:备份和并发式存取数据,可靠性强。D1、D2组成一个阵列Raid1,其中D1是数据盘,D2是备份盘;D3、D4也组成一个Raid1,其中D3是数据盘,D4是备份盘;在这个基础上将D1、D2作为一个整体,将D3、D4也作为一个整体,这两个整体之间再组成一个Raid0阵列。这样不仅仅读取数据会非常快,并发写入的速度也会随着磁盘的增多而变快。至少四块硬盘并且每块硬盘大小应该相等才能组成Raid10阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来备份数据)。
Raid的管理
主要用到的命令:mdadm;
参数: -C或–creat 建立一个新阵列 -r 移除设备 -A 激活磁盘阵列 -l 或–level= 设定磁盘阵列的级别 -D或–detail 打印阵列设备的详细信息 -n或–raid-devices= 指定阵列成员(分区/磁盘)的数量 -s或–scan 扫描配置文件或/proc/mdstat得到阵列缺失信息 -x或–spare-devicds= 指定阵列中备用盘的数量 -f将设备状态定为故障 -c或–chunk= 设定阵列的块chunk大小 ,单位为KB -a或–add 添加设备到阵列 -G或–grow 改变阵列大小或形态 -v –verbose 显示详细信息
CentOS7中mdadm默认已安装,如果没有安装,可以使用yum在线安装,如下:
首先确保已经连接到互联网,搜索一下yum服务器上是否存在mdadm
[root@localhost ~]# yum search mdadm
案例:创建一个raid10+冗余盘
总共7块盘,创建一个raid 10 使用4块盘,热备2块,使用中1块出现故障,热备顶上,再加一块热备,把坏的T下来
1、创建raid阵列
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 2 /dev/sd{b,c,d,e,f,g}
2、查看raid阵列信息
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdg[5](S) sdf[4](S) sde[3] sdd[2] sdc[1] sdb[0]
41910272 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=====>...............] resync = 27.5% (11542784/41910272) finish=2.4min speed=206250K/sec
unused devices: <none>
// 四块盘在用,两块S热备
3、生成配置文件
[root@localhost ~]# mdadm -D --scan > /etc/mdadm.conf
4、格式化挂载使用
[root@localhost ~]# mkfs.ext4 /dev/md0
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/md0 /data/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 333M 19G 2% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 1.9G 7.4G 21% /usr
/dev/mapper/vg0-var 20G 113M 19G 1% /var
/dev/md0 40G 48M 38G 1% /data
//我一块20G,raid10一半数据,一半备份数据
5、模拟故障一个磁盘
先往data目录拷贝点文件,看看坏了一块数据是否丢失
[root@localhost ~]# du -sh /data/
1.4M /data/
//输入命令或者直接把硬盘断开连接
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdg[5] sdf[4](S) sde[3] sdd[2] sdc[1] sdb[0](F)
41910272 blocks super 1.2 512K chunks 2 near-copies [4/3] [_UUU]
[=>...................] recovery = 6.6% (1400064/20955136) finish=1.6min speed=200009K/sec
unused devices: <none>
// sdb (F) 故障状态了,原来sdg的S没有了,说明,已经顶上去了
[root@localhost ~]# du -sh /data/
1.4M /data/
//数据没有丢失
6、把坏的T下去,把新硬盘加上去
硬盘坏了,肯定要加新的热备盘上去,把旧的卸下来
//把故障硬盘卸载下来
[root@localhost ~]# mdadm -r /dev/md0 /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
//添加新的硬盘
[root@localhost ~]# mdadm -a /dev/md0 /dev/sdh
mdadm: added /dev/sdh
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4](S) sde[3] sdd[2] sdc[1]
41910272 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
//查看状态,已经发现新硬盘,旧硬盘已经没有了
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
5 8 96 0 active sync set-A /dev/sdg
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
4 8 80 - spare /dev/sdf
6 8 112 - spare /dev/sdh
//阵列还是原来的,没变
linux基础-磁盘阵列(RAID)实例详解的更多相关文章
- Linux计划任务Crontab实例详解教程
说明:Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序 下面通过详细实例来说明在Linux系统中如何使用Crontab 操作系统:CentOS ...
- Linux基础知识之挂载详解(mount,umount及开机自动挂载)
Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...
- Linux的find命令实例详解和mtime ctime atime
这次解释一下三个Linux文件显示的三个时间,然后展示一下find命令的各个功能 在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime mo ...
- [转载]查看Linux系统硬件信息实例详解
linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说. cpu lscpu命令,查看的是cpu的统计信息. blue@blue-pc:~ ...
- 【Linux基础】ps命令详解
PS命令介绍 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动 ...
- 【Linux基础】iconv命令详解(编码转换)
对于给定文件把它的内容从一种编码转换成另一种编码. iconv -f GBK -t UTF- file1 -o file2 //将GBK转换为UTF8,输出到file2.没-o那么会输出到标准输出 i ...
- Linux备份数据库,mysqldump命令实例详解
mysqldump是mysql数据库中备份工具,用于将MYSQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 语法: mysqldump (选项) 选项: --add-drop-ta ...
- Linux下rz命令使用的实例详解
Linux中rz命令和sz命令都可用于文件传输,而rz命令主要用于文件的上传,下面将通过几个实例来给大家详细介绍下Linux下rz命令的用法,一起来学习下吧. rz命令可以批量上传文件,当然也可上传单 ...
- Cocos2d-x 3.X手游开发实例详解
Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...
随机推荐
- 不显示cmd窗口运行jar包
今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...
- Hive安装部署
目录 一. 安装Hive. 1 1. 选择CDH版本的... 1 2. 解压文件... 1 二. 配置Hive. 1 1. 配置环境变量 ...
- Basic Tutorials of Redis(5) - Sorted Set
The last post is mainly about the unsorted set,in this post I will show you the sorted set playing a ...
- Java多线程整理(li)
目录: 1.volatile变量 2.Java并发编程学习 3.CountDownLatch用法 4.CyclicBarrier使用 5.BlockingQueue使用 6.任务执行器Executor ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- hibernate的get和load的区别
在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对 ...
- C#Excel文件加密实现,支持xlsx、docx、pptx(C#\Net\Asp.Net)
从此刻开始,我已封闭!概不接客! 像风一样的男人,像风一样的性格,无拘无束,不拘一格.那么问题来了,当风遇到沙,不一定你是风儿,我是沙儿的缠缠绵绵,.也许是漫天黄沙,飞粒走石.如果我们期望擒住这漫天的 ...
- Normalize.css的使用及下载
Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性.相比于传统的CSS reset,Normalize.css是一种现代的.为HTML5准备 ...
- Android 底部弹出Dialog(横向满屏)
项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog). 效果图如下所示(只显示关键部分): 步骤如下所示: 1.定义一个dialog的布局(lay ...
- 【容器云】传统金融企业的 Docker 实践
基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution ...