Linux RAID部署

Linux RAID部署

欢迎来到 来到大浪涛天的博客

一、Linux RAID部署

1. RAID简介

RAID的出现最开始是由于scsi硬盘的兴起,当很多SCSI硬盘的出现的时候,之前的IDE的硬盘缺点开始展现,比如硬盘容易故障,速度较低等等。但是相对于SCSI硬盘来说,IDE的硬盘便宜,适合中小型用户大量使用。

于是伯克利大学的一个教授出版了一个专题: A Case for Reundundent Arrays of Inexpenive Disks RAID。随着RAID的技术的发展,以及RAID它扩展了单块硬盘的速度和安全方面的局限性,让RAID广泛流行,

2. RAID的优势及实现的方式

  • 提高IO能力,磁盘并行读写;
  • 提高耐用性,磁盘冗余来实现;
  • 各种级别:多块硬盘组织在一起实现的工作方式有所不同;
  • RAID的实现方式:
    1. 外接式磁盘阵列:通过扩展卡提供适配能力,扩展卡包含有独立的cpu和内存及BBU,当有数据存储的时候是先存储到内存在写入硬盘,所以BBU异常的重要,当数据写到一半关机或者停电了,BBU能够撑住将扩展卡内部内存的数据写入到硬盘。
    2. 内接式的RAID:主板集成RAID控制器
    3. Software RAID:依赖于操作系统,由内核的md模块提供模拟RAID控制器来进行冗余读写。

3. RAID 级别的介绍

  1. RAID0,条带卷,strip,优势如下:
  • 读写性能提升;
  • 可用空间:N*min(s1,s2,......),N块硬盘的容量是,最小硬盘容量的N倍
  • 无容错能力,且故障率因为硬盘数量的提升而加倍增大,因为这一个严重缺陷,导致基本上无人使用RAID0
  • 最少磁盘数量为2,2+
  1. RAID1,镜像卷,mirror,优势如下:
  • 读性能提升,写的性能略有下降
  • 可用空间:总的硬盘数的二分之一
  • 带有容错能力
  • 最少硬盘为2或者2的N倍
  1. RAID3和RAID4很相似,都是有一块单独的硬盘用做校验盘,其余硬盘做为数据盘来做数据存储,优势是具有冗余能力,读有提升,写的话受限于校验盘计算,有所下降,而且校验盘压力较高,性能较差。
  2. RAID5,RAID3和RAID4的升级版本,校验盘不局限于某块单独的硬盘,而是写数据和校验信息每块硬盘轮流写,这样把校验的压力均衡在了所有硬盘上,带来的优势有:
  • 读写性能的提升
  • 可用空间:(N-1)*min(s1,s2,......)
  • 有容错能力:1块硬盘
  • 最少磁盘数:3,3+
  1. RAID6和R,RAID5类似,但是它包含有两块校验盘,具有更好的容错能力
  • 读、写性能提升
  • 可用空间:(N-2)*min(s1,s2,......)
  • 有容错能力:2块硬盘
  • 最少的磁盘数:4,4+
  1. RAID10,先把硬盘两两分组,分别做成镜像卷,然后再做成条带化,这样既发挥了RAID0的优势性能大幅提升,又发挥了RAID1的优势,容错能力大幅提升,在每个镜像卷当中都可以损坏一块硬盘。
  • 读、写性能提升
  • 可用空间:N*min(s1,s2,......)/2
  • 有容错能力:每个镜像卷当中都可以损坏一块硬盘
  • 最少的磁盘数:4,4+
  1. RAID01 先把硬盘平分为两组,每组硬盘再做成条带卷,和RAID10类似,但是容错方面比RAID10低很多,因为同一组镜像卷当中损坏的一块硬盘几率相对较低,而不同镜像组都坏一块硬盘的几率大很多,这就造成了RAID01的劣势。
    所以一般企业都是采用的RAID10级别来构建RAID。

4. RAID的实现方式

4-1. 1. 软件实现方式

centos上是采用内核中md模块(multi devices)

4-2. 2. 硬件实现方式

通过扩展卡提供适配能力,扩展卡包含有独立的cpu和内存及BBU,当有数据存储的时候是先存储到内存在写入硬盘,所以BBU异常的重要,当数据写到一半关机或者停电了,BBU能够撑住将扩展卡内部内存的数据写入到硬盘。

5. Linux 上实现软RAID的方式

5-1. 1. mdadm命令

mdadm支持的RAID级别有:LINEAR md devices, RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER;
语法格式:

mdadm [mode] <raiddevice> [options] <component-devices>

raiddevice: /dev/md#
component-devices:任意块设备
模式[mode]:

  1. 创建:-C
  • -n #:使用#个块设备来创建此RAID;
  • -l #:指明要创建RAID的级别;
  • -a {yes/no}:是否自动创建目标设备的RAID设备文件;
  • -c CHUNK_SIZE:指明块大小;
  • -x #:指明空闲盘(相对于热备盘)的个数;
  • 例如创建一个10G可用空间的RAID5
[root@test01 ~]# cat /proc/mdstat
[root@test01 ~]# mdadm -C /dev/md0 -n 3 -a yes -l 5 -x 1 /dev/sdb{5..8}
  1. 装配:-A
  2. 监控:-F
  3. 管理:-f,-r,-a,D
    例如:
  • 查看RAID组的状态
[root@test01 ~]# mdadm -D /dev/md0
  • 标记RAID组中的某块硬盘故障
[root@test01 ~]# mdadm -f /dev/md0 /dev/sdb8
mdadm: set /dev/sdb8 faulty in /dev/md0
  • 移除故障硬盘
[root@test01 ~]# mdadm -r /dev/md0 /dev/sdb8
mdadm: hot removed /dev/sdb8 from /dev/md0
  • 添加硬盘
[root@test01 ~]# mdadm -a /dev/md0 /dev/sdb8
mdadm: added /dev/sdb8
[root@test01 ~]# mdadm -D /dev/md0
  1. 观察md的状态
[root@test01 ~]# cat /proc/mdstat 
持续观察
[root@test01 ~]# watch -n1 "cat /proc/mdstat"  
  1. 如果需要删除md设备的话,必须先停止md设备
[root@test01 ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
posted @ 2020-09-22 21:30  OuYangTao  阅读(244)  评论(0编辑  收藏  举报