RAID( Blob3 )

RAID各级别特性及使用

 

Berkeley在1988年,发表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。之中提出RAID(Redundant Arrays of Inexpensive Disks 廉价磁盘阵列);

将多个IDE或SCSI设备并行组合成一个使用,以提高其“耐用性”及“并行读写能力(IOps)”

多个设备组织起来高效,就需要较好的硬件控制器,不同的公司生产出来的控制器,IOps和耐用性不同,所以RAID并不廉价,后更名RAID(Redundant Arrays of Independent Disks 独立磁盘阵列)

2

RAID特性
(1) 提高耐用性:磁盘自身拥有冗余能力;并非“其内部存储数据有冗余能力,仍需要备份”;
(2) 并行读写能力;IOps(IO能力);
* 为了在提升RAID的IOps,添加内存;
* 衡量硬盘性能:IO能力、平均寻道时间、读写速度;

RAID实现方式

硬件RAID:在主板支持RAID的BIOS界面完成配置
内接式RAID: 主板集成RAID控制器;
外接式RAID: 扩展卡、适配器;

软件RAID:
Linux:驱动:内核中的模块;md (multi disk);用户空间中的程序:mdadm (multi disk admin)

RAID级别
在Berkeley论文中,曾提出RAID有5个级别;不同的级别其工作方式所有不同;

常见RAID:RAID-0, RAID-1, RAID-5, RAID-6
混合类型:RAID-01, RAID-10, RAID-50,RAID-7, JBOD

常见RAID:

RAID-0

条带卷、Strip;

将多个磁盘并行组织在一起;控制器将数据切割成多个chunk,将其扔到不同的磁盘中;每个磁盘承载部分吞吐量;
chunk: 不是磁盘块;此时没有在文件系统级别;

多个同类的设备时,出错性可能性增加;
存储:非关键性数据;

特性:
(1) 读写性能提升;出错可能性随磁盘增加而增加;
(2) 可用空间;硬盘总数 * 所有硬盘中贡献最小值;
(3) 没有冗余能力;
(4) 最少磁盘数:2个及以上;

RAID-1

镜像卷、mirror;
将多个磁盘并行组织在一起;扔一个chunk至其中一个磁盘中,需要在另一个磁盘中存储相同的chunk;

存储空间复用率只有一半;
数据可分散读,没有分散写;

3

特性:
(1) 读性能提升、写性能略微下降;
(2) 可用空间:2块中最小值;
(3) 有冗余能力:1块;
(4) 磁盘数:2个;

RAID-4
既有RAID-1冗余,又有RAID-0的性能提升;
RAID-4是校验盘冗余,基于异或运算;是单独一个盘做校验;每次读写均会使用校验盘;校验盘压力过大,性能瓶颈;

RAID-5
轮流做校验;左对称和右对称;默认是左对称;
左对称:第3个盘做较验盘;
右对称:第1个盘做较难盘;
一块磁盘坏了转换为降级工作模式;

特性:
(1) 读性能提升;
(2) 可用空间:(所有盘 – 1校验盘) * 所有中最小值;
(3) 有冗余能力:1块;块数越多,浪费空间就越少;10G,10块只需要浪费1G;2块就5G;
(4) 磁盘数:3个及以上;

1

RAID-6
轮流做校验;比RAID-5多一个校验盘;
并行读写;至少2个;

特性:
(1) 读性能提升;
(2) 可用空间:(所有盘 – 2校验盘) * 所有中最小值;
(3) 有冗余能力:2块
(4) 磁盘数:4个及以上;

混合类型:

RAID-10
底层RAID-1,上层RAID-0
每组只能坏一个;
复用率1半;

特性:
(1) 读性能提升;
(2) 可用空间: (所有磁盘贡献最小值 * 所有盘)/2
(3) 有冗余能力:每组一块
(4) 磁盘数:4个及以上;

RAID-01
底层RAID-0,上层RAID-1;
只能同时坏一组;复用率1半;

RAID-50
底层RAID-5,上层RAID-0;
不可靠;最少6个盘;每组只能坏一个;
空间利用率:每组2/3

RAID-7
文件服务器;某公司的私有技术;

JBOD: Just a Bunch of Disks
可将多块磁盘的空间合并为一个大的连续空间使用;
可用空间;所有磁盘空间之和;

CentOS 7 软RAID实现;
内核模块/驱动:md
用户空间管理工具:mdadm;程序包: mdadm

mdadm [mode] <raiddevice> [options] <component-devices>
[mode]
创建模式: -C
显示模式: -D
监控模式: -F
管理模式: -f, -r, -a
<raiddevice>: /dev/md#
[options]
-a {yes|no}:是否自动创建<raiddevice>;
-l #: 创建RAID的级别;
-n #: 使用#个块设备来创建RAID;不包括空闲盘;
~]# mdadm -C /dev/md0 -a yes -n 3 -l 5 -x 1 /dev/sda{3,5,6}
-x #:指明空闲盘的个数;RAID1, RAID5, RAID10
空闲盘:磁盘坏掉时,某个盘能自动顶替上去;
-c CHUNK_SIZE: 指明块大小;默认
<component-devices>:
分区:建议使用不同磁盘不同分区;
硬盘:

创建一个可用空间的10G RAID1设备,要求chunk大小128k, 文件系统ext4,有一个空闲盘,开机可自动挂载至/backup目录;
注:RAID1是两个磁盘;可用空间为(所有磁盘贡献最小值 * 磁盘数)的一半;所有此时应该创建两个id为fd的10G大小分区;
查看可用磁盘:
~]# fdisk -l /dev/sd[a-z]
进行分区:
~]# fdisk /dev/sdb
Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors < — CentOS 7以扇区,划分分区;
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 fd Linux raid autodetect
/dev/sdb2 20973568 41945087 10485760 fd Linux raid autodetect
/dev/sdb3 41945088 62916607 10485760 fd Linux raid autodetect
查看内核是否已经识别新分区:
~]# cat /proc/partitions
重载内核分区表:
~]# partx -a /dev/sdb
~]# partx -a /dev/sdb
创建RAID:
~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 -c 128K /dev/sdb{1,2,3}
Continue creating array? y
~]# cat /proc/mdstat
[======>…………..] resync = 34.1% (3578624/10477568)
有冗余能力,需要此步骤,进行逐位对齐;基于异或运算;
查看状态:
~]# mdadm -D /dev/md0
Raid Level : raid1
Array Size : 10477568 (9.99 GiB 10.73 GB) 可用空间
Used Dev Size : 10477568 (9.99 GiB 10.73 GB) 已用空间
Resync Status : 96% complete < — 此状态到达100%,完毕后进行高格;
格式化:
~]# mke2fs -t ext4 /dev/md0
获取文件系统信息:
~]# blkid /dev/md0
/dev/md0: UUID=”c5f8b5c2-8242-4bf0-879e-a3d0fd127bd1″ TYPE=”ext4″
在/etc/fstab文件添加条目:
~]# mkdir -v /backup
~]# vim + /etc/fstab
UUID=”c5f8b5c2-8242-4bf0-879e-a3d0fd127bd1″ /backup ext4 defaults 0 0
测试自动挂载:
~]# mount -a
~]# mount
/dev/md0 on /backup type ext4 (rw,relatime,seclabel,data=ordered)

创建一个可用空间的10G RAID10设备,要求其chunk大小256k,文件系统ext4,开机可自动挂载至/mydata目录;
注:RAID-10可用空间为(所有磁盘贡献最小值 * 磁盘数)的一半;所有磁盘总空间为20G;RAID-10至少4个设备,每个设备用5G;分为2个组,每组冗余一个所以需要空闲盘2个;总大小30G;总共6个分区;
查看可用磁盘:
~]# fdisk -l /dev/sd[a-z]
进行分区:
~]# fdisk /dev/sdb
/dev/sdb5 62918656 73404415 5242880 fd Linux raid autodetect
/dev/sdb6 73406464 83892223 5242880 fd Linux raid autodetect
/dev/sdb7 83894272 94380031 5242880 fd Linux raid autodetect
/dev/sdb8 94382080 104867839 5242880 fd Linux raid autodetect
/dev/sdb9 104869888 115355647 5242880 fd Linux raid autodetect
/dev/sdb10 115357696 125843455 5242880 fd Linux raid autodetect
查看内核是否已经识别新分区:
~]# cat /proc/partitions
重载内核分区表:
~]# partx -a /dev/sdb
~]# partx -a /dev/sdb
创建RAID:
~]# mdadm -C /dev/md10 -a yes -l 10 -n 4 -x 2 -c 256K /dev/sdb{5,6,7,8,9,10}
~]# cat /proc/mdstat
[=======>………….] resync = 36.4% (3820416/10477568)
查看状态:
~]# mdadm -D /dev/md10
Raid Level : raid10
Array Size : 10477568 (9.99 GiB 10.73 GB)
Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
Chunk Size : 256K
格式化:
~]# mke2fs -t ext4 /dev/md10
获取文件系统信息:
~]# blkid /dev/md10
/dev/md10: UUID=”bae12010-b73b-490c-9d15-56d32ff52bb9″ TYPE=”ext4″
在/etc/fstab文件添加条目:
~]# mkdir -v /mydata
~]# vim + /etc/fstab
UUID=”bae12010-b73b-490c-9d15-56d32ff52bb9″ /data ext4 defaults 0 0
测试自动挂载:
~]# mount -a
~]# mount
/dev/md0 on /backup type ext4 (rw,relatime,seclabel,data=ordered)
/dev/md10 on /mydata type ext4 (rw,relatime,seclabel,stripe=128,data=ordered)

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89044

(1)
上一篇 2017-11-27 17:19
下一篇 2017-11-27 23:03

相关推荐

  • N25_第一周博客作业

    一、计算机组成及其功能      1、CPU:          运算器:计算功能,对数据进行加工处理的部件。          控制器:负责从存储器读取指令,控制计算器之间的运行状态和结果;     &nbs…

    Linux干货 2016-12-04
  • varnish

    缓存 缓存之所以能够生效是程序的运行具有局部性特征: 时间局部性:一个数据被访问过之后,可能很快会被再次访问到; 空间局部性:一个数据被访问时,其周边的数据也有可能被访问到 缓存的是热区数据 时效性: 缓存空间耗尽:LRU,最近最少使用; 过期:缓存清理 缓存命中率:hit/(hit+miss) 页面命中率:基于页面数量进行衡量 字节命中率:基于页面的体积进…

    Linux干货 2017-07-03
  • N25-第十一周

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送者: 1.使用单项加密算法提取生成数据的特征码 2.使用自己的私钥加密特征码附加在数据后面 3.生成用于对称加密的临时密钥 4.用此临时密钥加密数据和已经使用私钥加密后的特征码 5.使用接收方的公钥加密此临时密钥,附加在对称后的数据后方 接收方: 1.使用自己的私钥解密的临时秘钥;从而获得对方的对称密钥 2…

    2017-06-05
  • grep命令系列:grep中的正则表达式

     grep :是一款文本过滤工具 。其作用:根据用户指定的“模式”对目标文本进行逐个的匹配检查。  正则表达式 REGEXP:有一类特殊字符及文本字符所编写的模式,其中有些字符不表示字面的意义,而表示控制或通配的功能。    正则表达式分为两种:         基本正则表达式:…

    Linux干货 2017-04-10
  • keepalived实现lvs高可用并负载均衡lamp

    一、安装lamp     1、安装httpd(172.16.23.211) [root@cs1 ~]# yum install -y httpd     2、安装php(172.16.23.211) [root@cs1 …

    Linux干货 2016-05-14
  • 如何学好C语言

    有人在酷壳的留言版上询问下面的问题 keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢! 我相信,这可能是很多朋友的问题,我以前…

    Linux干货 2016-08-15