IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux—RAID磁盘阵列与阵列卡 -> 正文阅读

[系统运维]Linux—RAID磁盘阵列与阵列卡


前言

在工作中,随着项目规模的扩大,对存储空间的需求就变的很高,甚至有时候会遇到磁盘容量不够用的情况,这时候我们是选择换内存更大的还是怎么办呢?其实可以利用一种存储机制,即磁盘阵列(RAID)。

一、RAID磁盘阵列

  • RAID是英文 Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列

  • 简单的来说就是把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术

  • 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)

  • 常用的RAID级别:
    RAID 0,RAID 1,RAID 5,RAID 6,RAID 1 0等

1. RAID 0 (条带化存储)

  • RAID 0连续以位或字节为单位分隔数据,并行读/写于多个磁盘上,因此有很高的数据传输率,但没有数据冗余
  • RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
  • RAID 0不能应用于数据安全性要求高的场合
    mark

2.RAID 1 (镜像存储)

  • 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
  • 当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能
  • RAID1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。
  • 当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
    mark

3.RAID 5

  • N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储
  • N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
  • 磁盘利用率为(N-1)/N,可靠性高,允许坏1块盘,不影响所有数据
    mark

4.RAID 6

  • RAID 6由N(N≥4)块盘组成阵列,磁盘利用率为(N-2)/N
  • RAID 6采用双重校验技术,在RAID 5的技术上增加了第二个独立的奇偶校验信息块,两个独立的奇偶系统使用不同的算法使得数据的可靠性非常高
  • 相对于RAID 5有更大的“写损失”,因此写性能较差
    mark

5. RAID 1+0

  • RAID 1+0顾名思义是RAID 1和RAID 0 的组合

  • 兼顾了RAID 1的容错能力和RAID 0的条带化读写数据的优点,性能好,可靠性高,属于混合型RAID

  • N(偶数,N≥4)块硬盘两两镜像后,再组合成一个RAID 0 ,最多允许所有磁盘基组中的磁盘各损坏一个,不允许同一基组中的磁盘同时损坏

  • 磁盘利用率为N/2 ,N/2快块盘同时写入数据,N块盘同时读取数据

  • 类似的混合RAID 还有RAID 0+1 ,二个在读写性能上差别不大,但是在安全性上RAID 1+0要比后者更好

    mark

6.RAID之间对比表

RAID级别硬盘数量磁盘利用率是否有校验保护能力写性能
RAID 0NN单个硬盘的N倍
RAID1N(偶数)N/2.允许一个设备故障需写两对存储设备,互为主备
RAID 5N≥3(N-1) /N允许一个设备故障需写计算校验
RAID 6N≥4(N-2) /N允许两个设备故障需双重写计算校验
RAID 1+0N≥4(偶数)N/2允许两个基组中各坏一个N/2块盘同时写入

二、阵列卡

1.阵列卡介绍

  • 阵列卡全称磁盘阵列卡,是用来实现RAID功能的板卡
  • 通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的
  • 不同的RAID卡支持的RAID功能不同,比如支持RAIDO、RAID1、RAID5、RAID10等

2.接口类型

RAID卡的接口指的是支持的接口,目前有IDE接口、SCSI接口、SATA接口和SAS接口。

3.阵列卡的缓存

  • 缓存(Cache)是RAID卡与外部总线交换数据的场所,工作过程中RAID卡先将数据传送到缓存,再由缓存和外边数据总线进行数据交换
  • 缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素
  • 不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等

三、RAID 5 配置

1.添加硬盘

在虚拟机中添加四块硬盘,每块大小60GB 。
mark
添加完成后查看是否添加成功

[root@localhost ~]#echo "- - -"> /sys/class/scsi_host/host0/scan        #刷新(也可以选择重启)
[root@localhost ~]#lsblk                                                #查看是否添加成功
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 59.5G  0 part 
  ├─centos-root 253:0    0 55.5G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   60G  0 disk 
sdc               8:32   0   60G  0 disk 
sdd               8:48   0   60G  0 disk 
sde               8:64   0   60G  0 disk 
sr0              11:0    1 1024M  0 rom  
[root@localhost ~]#

2.检查是否已安装mdadm软件包

[root@localhost ~]#rpm -q mdadm 
mdadm-4.0-5.el7.x86_64
[root@localhost ~]#

3.给新磁盘分区

[root@localhost ~]#fdisk /dev/sdb                  
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):w

以同样的方法对剩下的三个进行分区,分别为sdb1 、sdc1、sdd1、sde1 ,并且把分区ID号改为“fd” 。

4.创建RAID设备

[root@localhost ~]#mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 62880768K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
  • C:表示新建
  • -v:显示创建过程中的详细信息
  • /dev/md5 :创建RAID5的名称
  • -l5:指定RAID的级别,l5表示RAID 5
  • -n :指定使用n块硬盘创建RAID
  • -x1 :指定使用一块硬盘作为RAID的热备用盘
  • /dev/sde1 :指定sde1作为备用的磁盘

5.格式化

创建文件系统(xfs)

[root@localhost ~]#mkfs.xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=1964928 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=31438848, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=15352, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

创建挂载目录并进行挂载

[root@localhost ~]#mkdir /opt/group_md5
[root@localhost ~]#mount /dev/md5 /opt/group_md5/
[root@localhost ~]#df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        56G  3.7G   52G    7% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       497M  172M  326M   35% /boot
tmpfs                   tmpfs     378M   40K  378M    1% /run/user/0
/dev/md5                xfs       120G   33M  120G    1% /opt/group_md5
[root@localhost ~]#cd /opt/
[root@localhost /opt]#cd group_md5/
[root@localhost /opt/group_md5]#touch {1..6}.txt
[root@localhost /opt/group_md5]#ls
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt

6.设置故障

[root@localhost /opt]#mdadm /dev/md5 -f /dev/sdc1                        #模拟/dev/sdc1故障
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@localhost /opt]#mdadm -D /dev/md5                                  #查看RAID详细信息

/dev/md5:


    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1     #sde1顶替了sdc1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1               #这里可以看到sdc1已停用

查看一下之前的数据还在不在:

[root@localhost /opt]#cd group_md5/
[root@localhost /opt/group_md5]#ls
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt                                 #可以看到数据依然存在
[root@localhost /opt/group_md5]#

7.进行恢复

先创建/etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止等:

[root@localhost /opt]#echo ' DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1 ' > /etc/mdadm.conf
[root@localhost /opt]#cat /etc/mdadm.conf 
 DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1 
[root@localhost /opt]#mdadm --detail --scan >> /etc/mdadm.conf 
[root@localhost /opt]#cat /etc/mdadm.conf 
 DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1 
ARRAY /dev/md5 metadata=1.2 name=localhost.localdomain:5 UUID=85493ab3:7fd3fca0:c0c150fd:675d7e2e

取消挂载并查看

root@localhost /opt]#umount /dev/md5 
[root@localhost /opt]#df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   56G  3.7G   52G    7% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  9.1M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                497M  172M  326M   35% /boot
tmpfs                    378M   40K  378M    1% /run/user/0

停止RAID5并查看状态

[root@localhost /opt]#mdadm -S /dev/md5
mdadm: stopped /dev/md5
[root@localhost /opt]#mdadm -D /dev/md5
mdadm: cannot open /dev/md5: No such file or directory

启动RAID5并查看

[root@localhost /opt]#mdadm -As /dev/md5
mdadm: /dev/md5 has been started with 3 drives.
[root@localhost /opt]#mdadm -D /dev/md5
/dev/md5:

......省略

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1       #这里发现sdc1消失了

添加磁盘sdc1

[root@localhost /opt]#mdadm /dev/md5 -a /dev/sdc1
mdadm: added /dev/sdc1
[root@localhost /opt]#mdadm -D /dev/md5
/dev/md5:

......省略

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       5       8       33        -      spare   /dev/sdc1              #这里可以看到sdc1变成备份状态了

8.命令详解

  • mdadm命令
    常用选项如下:
选项说明示例
-r移除设备mdadm /dev/md5 -f /dev/sdc1
-a添加设备mdadm /dev/md5 -a /dev/ sdc1
-A启动RAIDmdadm /dev/md5 -A /dev/sdc1
-S停止RAIDmdadm /dev/md5 -S /dev/sdc1

注意:-s: 是指查找 /etc/mdadm. conf 文件中的配置信息

  • 检查磁盘是否EL做RAID,命令如下:
mdadm -E /dev/sd[b-e] 1
  • 查看RAID磁盘详细信息
cat /proc/mdstat  或者   mdadm -D /dev/md0
  • 用watch命令来每隔-一段时间刷新/proc/mdstat的输出,命令如下:
watch -n 10 ' cat /proc/mdstat '      

总结

综合上述的几种RAID,一般推荐使用的是RAID1+0,为什么呢?

  • 你可以想象自己拥有20块磁盘组成的系统,每两块组成一个 RAID 1,因此你就有总共10组可以自己恢复的系统了。然后这10组再组成一个新的RAID 0,速度立刻提升了10倍。
  • 并且因为每组RAID1是独立存在的,所以任何一块磁盘损坏,数据都是从另一块磁盘直接复制过来重建,并不像RAID 5和RAID6那样必须要整组RAID 的磁盘共同重建一块独立的磁盘系统,性能上差得非常多。
  • 而且RAID1与RAID 0是不需要经过计算的,读写性能也比其他的RAID好很多。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:58:38  更:2021-08-15 15:59:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:09:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计