19 Star 187 Fork 90

baoke / Linux学完就忘系列

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
18.RAID技术.md 4.27 KB
一键复制 编辑 原始数据 按行查看 历史
baoke 提交于 2019-07-19 17:36 . 更新 18.RAID技术.md

RAID: Redundant Arrays of Independent Disks 独立冗余磁盘阵列

提高IO能力:磁盘并行读写;
提高耐用性:磁盘冗余来实现;

RAID实现方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
Software RAID

级别 level:多块磁盘组织在一起的工作方式有所不同;
RAID-0: 0,条带卷,strip;
RAID-1: 1,镜像卷,mirror;
RAID-2
...
RAID-5
RAID-6
组合RAID-0和RAID-1的两种级别:
RAID10
RAID01

RAID-0:
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2,2+

RAID-1:
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2,2+

RAID-4:
1101,0110,1011

RAID-5:
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:1快磁盘
最少磁盘数:3,3+

RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:2块磁盘
最少磁盘数:4,4+

混合类型
RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能块一块
最少磁盘数:4,4+

RAID-01、RAID-50、RAID7

JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用;
可用空间:sum(S1,S2,...)

常用级别:RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD

软件实现方式(了解即可,没有硬件做实验)
CentOS6上的软件RAID实现:
结合内核中的md(multi devices)

mdadm:模式化工具
命令的语法格式:mdadm [mode] [options]
支持的RAID级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10;

模式:
创建:-C 装配:-A (主机坏了,还可以使多个硬盘装配成RAID使用)
监控:-F 管理:-f,-r,-a

:/dev/md#
:任意块设备

-C:创建模式
-n #:使用#个块设备来创建此RAID;
-l #:指明要创建的RAID的级别;
-a {yes|no}:自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE:指明块大小;
-x #:指明空闲盘的个数;

-D:显示RAID的详细信息;
mdadm -D /dev/md#

管理模式:
-f:标记指定磁盘为损坏;
-a:添加磁盘;
-r:移除磁盘;

查看所有md类型的状态:
cat /proc/mdstat

停止md设备:
mdadm -S /dev/md#

watch命令:

-n #:刷新间隔

#每间隔一秒刷新网卡信息,-n1代表秒数
watch -n1 'ifconfig ens33'

示例:创建一个4G可用空间的RAID5

首先先创建4个4G的逻辑分区
要想使用软RAID:分区需要使用fd这种类型,即:linux raid auto;所以将4个分区调整为fd类型;
使用cat /proc/mdstat查看所有md设备的状态;也可用ls /dev | grep "md"查看是否用md设备,以免名字重复;
创建RAID5:mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{5,6,7,8}
使用watch cat /proc/mdstat查看4个磁盘按位对齐的进度
做格式化:mke2fs -t ext4 /dev/md0
创建目录:mkdir /mydata
挂载:mount /dev/md0 /mydata 并使用mount | grep /dev/md0查看挂载的信息
查看磁盘信息:df -lh
查看设备md0的详细信息:mdadm -D /dev/md0
标记某个磁盘为损坏:mdadm /dev/md0 -f /dev/sda5
使用watch -n 1 cat /proc/mdstat可以看到它会重新做同步操作
再次查看设备md0的信息:mdadm -D /dev/md0,发现/dev/sda5被标记为faulty(损坏),空闲磁盘/dev/sda8自动启用,数据会自动修复完成
再标记某个磁盘为损坏mdadm /dev/md0 -f /dev/sda6
使用mdadm -D /dev/md0查看发现状态变为:State:degraded了,代表降级使用,磁盘还是可以进行操作,只是性能差了些
我们也可以用命令移除损坏的磁盘:mdadm /dev/md0 -r /dev/sda5 /dev/sda6
再次查看mdadm -D /dev/md0,损坏(faulty)损坏的磁盘已经不在了
假设新买了2块硬盘要加入到RAID中,可以使用mdadm /dev/md0 -a /dev/sda5 /dev/sda6 查看加入的磁盘mdadm -D /dev/md0等recovering完后,RAID恢复到State:Clean(完整)状态

练习:

1、创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录;
2、创建一个可用空间为10G的RAID0设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录;

Shell
1
https://gitee.com/abcd1234567_1/linux.git
git@gitee.com:abcd1234567_1/linux.git
abcd1234567_1
linux
Linux学完就忘系列
master

搜索帮助