zoukankan      html  css  js  c++  java
  • Linux之RAID

    简介

    作用

    • Raid(磁盘阵列)由多个独立的物理磁盘构成具有冗余能力的阵列功能
    • Raid将多块便宜的物理磁盘通过硬件(Raid)或者软件(MDADM)组合在一起形成一个容量巨大的磁盘 提升磁盘的性能
    • 磁盘阵列将数据进行切割可以存储在不同的物理磁盘上
    • 磁盘阵列可以利用同位检测技术当有磁盘发送损坏的时候仍然可以读取数据 在数据重构时 可以将数据写入新的磁盘中
    1:RAID核心思想是将多个硬盘组合在一起提高冗余性提高并发性
    2:RAID虽然可以防止预防误操作之外的数据丢失 但是不能完全保证你的数据不会丢失 仍然需要备份重要数据
    

    关键技术

    • 镜像:保证数据的安全性 在同一个阵列中同时产生两个完全相同的数据副本 但是成本比较高
    • chunk条带:其是为了提高I/O 数据在磁盘中进行磁头寻道定位 无法与高速的CPU进行匹配 调带技术将数据以块的形式分布式存储在多个磁盘中 提高数据的并发处理
    • 数据的校验 镜像冗余性虽然高 但是成本也比较高昂 条带无数据的可靠性 数据校验通过校验数据安全性用来监测数据 并且在条件允许的情况下进行数据重构 重新写入硬盘

    RAID详解

    RAID0

    • 如上图所示 当数据进行存储的时候会被拆分进行分布式存储 分别存储在不同的硬盘上
    • 当数据分布在不同的磁盘上可以从多个磁盘进行读取数据 提高数据的并发量
    • 每一块磁盘都能被完全利用 空间利用率百分之百
    • 但是当其中有一块磁盘发生损坏的时候 会导致数据数据不完整 不能打开数据
    1:RAID0使用条带技术拥有高并发 高利用率等特点 但是不提供数据的冗余性 当其中一块硬盘被破坏导致数据不完整 不能打开数据
    2:RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
    

    RAID1

    • 如上图所示数据进行分布式存储被完全备份在另外一块磁盘
    • RAID1对数据写入有一定影响 但是读取没任何影响
    • 当磁盘发生故障其会立马从镜像磁盘进行数据读取
    • 多块磁盘只能备份完全相同的数据 导致利用率比较低
    1:使用镜像保证数据完全备份起来 数据冗余性达到最高
    2:RAID1空间利用率只能达到一半导致成本比较高
    3:RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
    

    RAID5

    • 如上图所示数据与校验信息分布在不同的磁盘上
    • 当其中一块磁盘发生损坏的时候 RAID5可以利用磁带以及同位检测进行数据重构 将重构的数据写入到正常使用的磁盘中
    • 空间利用率为(n-1)/n 因为有一块磁盘进行数据校验
    1:RAID5兼顾存储性能 存储安全 存储成本
    2:其类似于RAID0与RAID1折中方案 基本可以满足大部分的存储需求
    

    RAID01

    • 其兼顾RAID0和RAID1的特点
    • 其先做条带化在做镜像化
    • 本质是对物理磁盘的镜像化

    RAID10

    • 其兼顾RAID0和RAID1的特点
    • 其先做镜像在做条带化
    • 本质是对虚拟磁盘实现镜像
    1:RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。
    2:RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 
    3:RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。
    

    总结

    RAID硬盘失效处理方法

    热备

    • 当冗余的 RAID 组中某个硬盘失效时,在不干扰当前 RAID 系统的正常使用的情况下
    • 用 RAID系统中另外一个正常的备用硬盘自劢顶替失效硬盘,及时保证 RAID 系统的冗余性
    全局式
    • 备用硬盘为系统中所有的冗余 RAID 组共享
    共享式
    • 备用硬盘为系统中某一组冗余 RAID 组与用

    热插拔式

    • 在不影响系统正常运转的情况下,用正常的物理硬盘替换 RAID 系统中失效硬盘

    RAID创建

    简介

    • Linux 内核中有一个 md(multiple devices)模块在底层管理 RAID 设备,
    • 它会在应用层给我们提供一个应用程序的工具 mdadm , mdadm 是 linux 下用于创建和管理软件 RAID 的命令。

    常用的参数

    RAID0

    • 创建RAID
    [root@SR ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/nvme0n3 /dev/nvme0n4
    
    [root@SR ~]# mdadm -D /dev/md0
    
    

    • 对创建的RAID0进行文件系统创建与挂载
    [root@SR ~]# mkfs.xfs /dev/md0 
    [root@SR ~]# mount /dev/md0 md0/
    
    

    • 写入数据
    [root@SR ~]# echo 'test RAID0' >> md0/a.txt
    

    RAID1

    • 创建RAID1
    [root@SR ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/nvme0n[5,6,7]
    

    • 创建文件系统
    [root@SR ~]# mkfs.xfs /dev/md1
    
    
    [root@SR ~]# mount /dev/md1 md1
    

    • 测试结果
    [root@SR ~]# cp -f /etc/passwd md1/a.txt
    [root@SR ~]# mdadm /dev/md1 -f /dev/nvme0n6  # 模拟损坏
    
    

    • 移除损坏的设备
    [root@SR ~]# mdadm -r /dev/md1 /dev/nvme0n6
    

    • 添加新的硬盘
    [root@SR ~]# mdadm -a /dev/md1 /dev/nvme0n8
    

    RAID5

    • 创建RAID
    [root@SR ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c32 /dev/nvme0n{9,10,11,12}
    

    • 停止md5阵列
    [root@SR ~]# mdadm -Dsv > /etc/mdadm.conf  # 保存
    [root@SR ~]# mdadm -D /dev/md5   # 保存完毕的状态
    [root@SR ~]# mdadm -S /dev/md5  # 停止
    

    • 激活阵列
    [root@SR ~]# mdadm -A /dev/md5
    

    • 扩展队列
    [root@SR ~]# mdadm -G /dev/md5 -n 4 -c 32
    
    [root@SR ~]#  mdadm -Dsv > /etc/mdadm.conf  # 写到配置文件
    

  • 相关阅读:
    atom那些事儿
    浙江省和杭州市
    Web API之indexedDB和Web SQL
    绝对定位元素居中
    多列等高布局
    git生成ssh key及github ssh key对接
    vuejs模板使用方法
    css3动画图片波纹效果
    sticky footer布局,定位底部footer
    css3圆环闪烁动画
  • 原文地址:https://www.cnblogs.com/SR-Program/p/12916699.html
Copyright © 2011-2022 走看看