RAID磁盘阵列管理

news2025/4/21 3:49:47

一. 什么是RAID

RAID是英文Redundant Array of Independent Disks的缩写,中文翻译过来就是“独立冗余磁盘阵列”。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。从而提供比单个硬盘更高的存储性能和提供数据备份技术。

利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。(并不是所有类型的raid都有这种功能,只有特定的几个有)。

二. RAID各种级别及其作用

1.RAID 0

RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。

RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据(当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。)

RAID 0不能应用于数据安全性要求高的场合。

特点:高性能,没有冗余,一坏全坏

2.RAID 1

通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据

当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能

RAID1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据

(类似于镜像卷,但作用上不止于镜像卷单纯的备份,而是能很好的运用备份中的信息)

特点:提高读取性能,成本较大。

3.RAID 5

N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N 份数据在N块盘上循环均衡存储。

N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高。

(N-1)/N磁盘利用率

可靠性高,允许坏1块盘,不影响所有数据

:校验数据起到当一块硬盘挂掉后,其他硬盘可以通过校验数据计算出缺失的数据,起到备份的功能且校验数据循环的在每块硬盘上均衡写入

特点

        1).最少三块磁盘

        2).数据条带形式分布

        3).以奇偶校验作冗余

        4).适合多读少写的情景,是性能与数据冗余最佳的这种方案

4. RAID 6

1.N(N>=4)快盘组成阵列,(N-2)/N磁盘利用率

2.与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用

不同的算法,即使两块磁盘同时失效也不会影响数据的使用

3.相对于RAID5有更大的"写损失",因此写性能较差

5.RAID 10

1.RAID10其实是RAID 1+0

2.N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID0

N/2磁盘利用率,N/2块盘同时写入,N块盘同时读取

3.性能高,可靠性高

6.RAID 1+0

N(偶数,N>=4)块盘两两镜像之后,在组合成一个RAID0

N/2磁盘利用率,N/2块盘同时写入,N块盘同时读取

性能高,可靠性高

RAID 0+1(先做条带,才能做镜像)

读写性能与RAID 10相同

安全性低于RAID 10

特点

        1).最少四块磁盘

        2).先按RAID 0 分成两种,再分别对两组按RAID 1  方式镜像兼顾冗余(提供镜像存储)和性能(数据条带形分布)

        3).在实际应用中较为常用

 三. 案例实施

1. 创建raid

        1.1 创建raid 0

利用磁盘分区新建2个磁盘分区,每个大小为20 GB。用这2个20 GB的分区来模拟1个40 GB的硬盘。

[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sr0              11:0    1    4G  0 rom  

配置本地YUM安装源,将提供的mdadm_yum文件夹上传至/opt目录,示例代码如下:

[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[mdadm]
name=mdadm
baseurl=file:///opt/mdadm_yum/
gpgcheck=0
enabled=1

 安装工具mdadm,使用已有YUM源进行安装,命令如下:

[root@localhost ~]# yum install -y mdadm 

创建一个RAID 0设备:这里使用/dev/sdb和/dev/sdc做实验。

将/dev/sdb和/dev/sdc建立RAID等级为RAID 0的md0(设备名)。

[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc 
mdadm: chunk size defaults to 512K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

mdadm:区块大小默认为512K
mdadm:使用/sys/module/md_mod/parameters/new_array时无法创建md0
mdadm:默认为1.2版元数据
mdadm:array/dev/md0已启动。

查看系统上的RAID,命令及返回结果如下。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0]                         #阵列类型
md0 : active raid0 sdc[1] sdb[0]                #磁盘的状态,磁盘的数量
      41908224 blocks super 1.2 512k chunks      
unused devices: <none>

个性:[raid0]
md0:活动raid0 sdc[1]sdb[0]
41908224块超级1.2 512k块
未使用的设备:<none>

查看RAID详细信息,命令及返回结果如下。

[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=35792eb3:51f58189:44cef502:cdcee441
(阵列/dev/md0元数据=1.2名称=本地主机。本地域:0 UUID=2816724a:d2525a8b:8eaefd23:7e57f770)
// 解析:
-s :扫描配置文件或/proc/mdstat,得到阵列缺失信息(即缺失或损坏设备的信息)
-D :打印阵列设备的详细信息
[root@localhost ~]# mdadm -D /dev/md0 

/dev/md0:
           Version : 1.2
     Creation Time : Sat Oct  5 10:21:41 2019
        Raid Level : raid0
        Array Size : 41908224 (39.97 GiB 42.91 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent
       Update Time : Sat Oct  5 10:21:41 2019
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0
        Chunk Size : 512K
Consistency Policy : unknown
              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 35792eb3:51f58189:44cef502:cdcee441
            Events : 0
          0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

生成配置文件mdadm.conf,命令如下。

[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf 

对创建的RAID进行文件系统创建并挂载,命令如下。

[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=256    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid0/
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -Th /raid0/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       xfs    40G   33M   40G   1% /raid0

设置成开机自动挂载,命令如下。

[root@localhost ~]# blkid /dev/md0 
/dev/md0: UUID="8eafdcb6-d46a-430a-8004-d58a68dc0751" TYPE="xfs"
[root@localhost ~]# echo "UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0" >> /etc/fstab

// 解析:
/etc/fstab文件的作用:
         磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。
        系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

        1.2 删除RAID操作

[root@localhost ~]# umount /raid0/
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /etc/mdadm.conf
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sdb
[root@localhost ~]# mdadm --zero-superblock /dev/sdc
[root@localhost ~]# vi /etc/fstab
UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0  //删除此行(即取消虚拟机的开机自动读取文件形成挂载,前提应该是要保证磁盘的正常)

2. 运维操作

2.1 raid 5运维操作

利用磁盘分区新建4个磁盘分区,每个大小为20 GB。用3个20 GB的分区来模拟raid 5,加一个热备盘。

[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde 
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

查看RAID的详细信息,命令如下。

[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Sat Oct  5 13:17:41 2019
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Oct  5 13:19:27 2019
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : unknown

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : f51467bd:1199242b:bcb73c7c:160d523a
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd
       3       8       64        -      spare   /dev/sde
// raid5,它需要校验(同步),就是这个状态:spare rebuilding。等一会,它完成校验了自动就出现active sync

 2.2 模拟硬盘故障

[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb 
-f : 设置某盘为坏盘
mdadm: set /dev/sdb faulty in /dev/md5

 查看RAID的详细信息,命令如下。

[root@localhost ~]# mdadm -D /dev/md5    
       -D :打印阵列设备的详细信息
/dev/md5:
           Version : 1.2
     Creation Time : Sat Oct  5 13:17:41 2019
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Oct  5 13:28:54 2019
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0
            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : unknown
              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : f51467bd:1199242b:bcb73c7c:160d523a
            Events : 37

    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd
       0       8       16        -      faulty   /dev/sdb
// 这里的显示信息也与上述不同

从以上结果可以发现原来的热备盘/dev/sde正在参与RAID 5的重建,而原来的/dev/sdb变成了坏盘。

热移除故障盘,命令如下:

[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb 
mdadm: hot removed /dev/sdb from /dev/md5

查看RAID的详细信息,命令如下:

[root@localhost ~]# mdadm -D /dev/md5          
/dev/md5:
           Version : 1.2
     Creation Time : Sat Oct  5 13:17:41 2019
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Sat Oct  5 13:35:54 2019
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : unknown

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : f51467bd:1199242b:bcb73c7c:160d523a
            Events : 38

    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

格式化RAID并进行挂载,命令如下:

[root@localhost ~]# mkfs.xfs /dev/md5 -f
existing superblock read failed: Input/output error
mkfs.xfs: pwrite64 failed: Input/output error)
meta-data=/dev/md5               isize=256    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md5 /mnt/
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  906M   17G   6% /
devtmpfs                 903M     0  903M   0% /dev
tmpfs                    913M     0  913M   0% /dev/shm
tmpfs                    913M  8.6M  904M   1% /run
tmpfs                    913M     0  913M   0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M  25% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/md5                  40G   33M   40G   1% /mnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2319330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微博ip属地不发微博会不会变

随着社交媒体的普及&#xff0c;微博作为其中的佼佼者&#xff0c;一直备受关注。而且微博上线了显示用户IP属地的功能&#xff0c;这一功能旨在减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为&#xff0c;确保传播内容的真实性和透明度。然而&#xff0c;这也引发了一些…

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 &#xff08;1&#xff09;C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 &#xff08;2&#xff09;程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…

ORACLE 19.8版本数据库环境EXPDP导数据的报错处理

近期用户在做EXPDP导出时&#xff0c;报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的&#xff0c;到底是什么原因导致了这个问题呢&#xff1f; 导出脚本报错&#xff1a; 分析导出日志&#xff0c;当时系统资源充足但是进程启动失败&#xff0c;…

LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)

前面两节课程分别给大家介绍了“控制器连接、定时获取轴状态、轴坐标、控制器型号、轴参数设置、IO控制、Basic文件下载”&#xff08;详情点击→LabVIEW运动控制&#xff08;二&#xff09;&#xff1a;EtherCAT运动控制器的多轴示教加工应用&#xff08;上&#xff09;&#…

纯内网环境安装1Panel面板与商店应用

文章目录 前序准备开始联网机器配置1Panel配置安装所有离线需要的应用导出Docker镜像导出1Panel配置 离线机器配置安装1Panel覆盖配置导入容器镜像重建应用 关于Jar包的运行 前序 之前一篇文章讲解了如何在内网环境下安装1Panel并操作商店应用安装应用程序&#xff0c;但是在一…

OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 铅笔风格非写实线描图。 该函数通过图像处理技术将输入的彩色图像转换为两种风格的铅笔素描效果&#xff1a; dst1&#xff1a;炭笔效果的灰度图…

影响单模光纤耦合效率的分析

影响单模光纤耦合效率的因素 如果想使单模光纤的耦合效率最高&#xff0c;入射光束需要满足以下条件&#xff1a; &#xff08;1&#xff09;入射光束接近高斯光&#xff1b; &#xff08;2&#xff09;入射光束从光纤端面正入射&#xff1b; &#xff08;3&#xff09;入射…

windows+ragflow+deepseek实战之一excel表查询

ragflows平台部署参考文章 Win10系统Docker+DeepSeek+ragflow搭建本地知识库 ragflow通过python实现参考这篇文章 ragflow通过python实现 文章目录 背景效果1、准备数据2、创建知识库3、上传数据并解析4、新建聊天助理5、测试会话背景 前面已经基于Win10系统Docker+DeepSeek+…

从“不敢买大”到“按墙选屏”,海信电视如何凭百吋重构客厅?

电视买小了&#xff0c;成为茜茜新房入住后最大的遗憾。 新房装修的时候&#xff0c;茜茜担心电视买大了眼睛看着累&#xff0c;因此把尺寸选在了65吋。结果入住后&#xff0c;孩子看动画片嚷着“画面太小”&#xff0c;老公看球赛吐槽“看不清球员号码”&#xff0c;全家追剧…

ABAP 长文本编辑器

加个屏幕 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------…

MATLAB 调用arduino uno

为了授课&#xff0c;必须重新把arduino用上。 采用MATLAB编码&#xff0c;可以简化相关程序授课部分 1 安装包 MATLAB Support Package for Arduino Hardware - File Exchange - MATLAB Central (mathworks.com) 需要这个插件。 当然也可下载simulink的模块&#xff0c;但…

Git——分布式版本控制工具使用教程

本文主要介绍两种版本控制工具——SVN和Git的概念&#xff0c;接着会讲到Git的安装&#xff0c;Git常用的命令&#xff0c;以及怎么在Vscode中使用Git。帮助新手小白快速上手Git。如果想直接上手用Vscode操作远程仓库则直接看7和9即可&#xff01; 目录 1. SVN和Git介绍 1.1 …

【数据分析】数据筛选与访问行列元素3

访问元素 .loc属性可以通过传入index的值访问行数据。 .loc属性允许传入两个参数&#xff0c;分别是index的值和columns的值&#xff0c;参数间用“逗号”隔开&#xff0c;这样便可以访问数据中的元素。 1. 访问单个元素 访问单个元素比较简单&#xff0c;只需要通过它的in…

爬虫——playwright获取亚马逊数据

目录 playwright简介使用playwright初窥亚马逊安装playwright打开亚马逊页面 搞数据搜索修改bug数据获取翻页优化结构 简单保存 playwright简介 playwright是微软新出的一个测试工具&#xff0c;与selenium类似&#xff0c;不过与selenium比起来还是有其自身的优势的&#xff…

大数据学习(77)-Hive详解

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

汽车一键启动PKE无钥匙系统

移动管家汽车一键启动PKE舒适无钥匙遥控远程系统是一种集成了多项先进功能的汽车电子系统&#xff0c;主要目的是提高驾驶便利性和安全性。 以下是该系统的具体功能&#xff1a; 功能类别 功能描述 无钥匙进入 感应无钥匙进入&#xff08;自动感应开关门&#xff09; 一…

Postman 新手入门指南:从零开始掌握 API 测试

Postman 新手入门指南&#xff1a;从零开始掌握 API 测试 一、Postman 是什么&#xff1f; Postman 是一款功能强大的 API 开发与测试工具&#xff0c;支持 HTTP 请求调试、自动化测试、团队协作等功能。无论是开发人员还是测试工程师&#xff0c;都可以用它快速验证接口的正确…

猿大师中间件:如何在最新Chrome浏览器Web网页内嵌本地OCX控件?

OCX控件是ActiveX控件的一种&#xff0c;主要用于在网页中嵌入复杂的功能&#xff0c;如图形渲染、多媒体播放等&#xff0c;可是随着谷歌Chrome等主流浏览器升级&#xff0c;目前已经不支持微软调用ActiveX控件了&#xff0c;如果想调用OCX控件用IE浏览器或者国产双擎浏览器&a…

[数据结构]排序之 归并排序(有详细的递归图解)

一、非递归 基本思想&#xff1a; 归并排序&#xff08; MERGE-SORT &#xff09;是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法&#xff08; Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#x…