• 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
  • 相关阅读:
    通过日志过滤的方法,统计每天内容详情页面的PV数
    模拟开户接口,使用python脚本实现批量用户开通
    模拟开户接口,使用shell脚本实现批量用户开通
    TCP的socket资源被耗尽的问题
    excel文件使用navicat工具导入mysql的方法
    MYSQL主从同步/主主同步
    django在创建用户时设置一个默认的密码
    django 字段默认值
    django中写入数据时给密码加密
    django后台admin页面表单自定义
  • 原文地址:https://www.cnblogs.com/chacha51/p/13715017.html
Copyright © 2020-2023  润新知