linux系统磁盘管理(磁盘阵列)

摘要:
磁盘阵列是由很多价格较便宜的磁盘,以硬件或软件形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。其中RAID卡有自己的cpu,由它统一管理和控制;数据也由它来进行分配和维护,处理速度快。RAID比单硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。

1、磁盘阵列简介

RAID(Redundant Array of Independent Disks)即独立硬盘冗余阵列,简称磁盘阵列。磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。其中RAID卡有自己的cpu,由它统一管理和控制;数据也由它来进行分配和维护,处理速度快。服务器启动时,就会有显示进入配置Riad的提示。
RAID比单硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。

2、RAID 分类

RAID有很多种类型本章只举4例供大家了解RAID技术!

RAID类型说 明最低磁盘个数空间利用率各自的优缺点
RAID0条带卷2+100%读写速度快,不容错
RAID1镜像卷250%读写速度一般,容错
RAID5带奇偶校验的条带卷3+(n-1)/n读写速度快,容错,允许坏一块盘
RAID10RAID1的镜像+RAID0的条带450%读写速度快,容错

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )

①RAID0

RAID0是最早出现的RAID模式;应用条数据条带( Data Stripping )技术,将数据分片保存2+个磁盘(最好磁盘的大小相同)上,多个数据分片共同组成一个完整数据副本,数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升;是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可;成本低,可以提高整个磁盘的性能;磁盘利用率为100%,但是,RAID 0没有提供冗余或错误修复能力,任何一个磁盘的损坏将损坏全部数据。

②RAID1

RAID 1 应用镜像卷(mirroring)技术,这是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件(同步),所以,RAID1的读写速度一般,磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。

③RAID5

RAID5应用数据校验( Data parity )技术,RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据,可以提供热备盘实现故障的恢复;校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。
linux系统磁盘管理(磁盘阵列)第1张

④RAID10

RAID10即RAID1镜像+RAID0条带,比如我们有8块盘,它是先两两做镜像,形成了新的4块盘,然后对这4块盘做RAID0;当RAID10有一个硬盘受损其余硬盘会继续工作,这个时候受影响的硬盘只有2块;
linux系统磁盘管理(磁盘阵列)第2张


3、Mdadm命令详解

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

option:
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
-x 热备盘个数

RAID5 演示:

#下载mdadm

╭─root@localhost.localdomain ~  
╰─➤  yum stall mdadm -y

#第一步:查看磁盘

╭─root@localhost.localdomain ~  
╰─➤  ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde

#第二步:创建RAID5阵列

╭─root@localhost.localdomain ~  
╰─➤  mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sdb: Device or resource busy
mdadm: ddf: Cannot use /dev/sdb: Device or resource busy
mdadm: Cannot use /dev/sdb: It is busy
mdadm: cannot open /dev/sdb: Device or resource busy

#第三步:查看阵列信息

╭─root@localhost.localdomain ~  
╰─➤  mdadm -D /dev/md0                                                                                             
/dev/md0:
           Version : 1.2
     Creation Time : Thu May 16 21:11:13 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 : Thu May 16 21:12:59 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:0  (local to host localhost.localdomain)
              UUID : dd9965b6:b6e3d118:d92e3fef:517bbc93
            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

#第四步:磁盘格式化成文件系统格式

╭─root@localhost.localdomain ~  
╰─➤  mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
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.localdomain ~  
╰─➤  mkdir /du
╭─root@localhost.localdomain ~  
╰─➤  mount /dev/md0 /du

#第六步:模拟磁盘损坏

╭─root@localhost.localdomain ~  
╰─➤  mdadm /dev/md0 -f /dev/sdc  #sdc盘损坏                                                                                 
mdadm: set /dev/sdc faulty in /dev/md0

#第七部:查看磁盘阵列信息

╭─root@localhost.localdomain ~  
╰─➤  mdadm -D /dev/md0                                                                                           
/dev/md0:
           Version : 1.2
     Creation Time : Thu May 16 21:11:13 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 : Thu May 16 21:18:14 2019
             State : clean, degraded, recovering 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : unknown

    Rebuild Status : 32% complete

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : dd9965b6:b6e3d118:d92e3fef:517bbc93
            Events : 25

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       3       8       64        1      spare rebuilding   /dev/sde
       4       8       48        2      active sync   /dev/sdd

       1       8       32        -      faulty   /dev/sdc

linux系统磁盘管理(磁盘阵列)第3张

免责声明:文章转载自《linux系统磁盘管理(磁盘阵列)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢mysql error 3065,解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Docker】选择存储驱动

参考教程:https://docs.docker.com/storage/storagedriver/select-storage-driver/以下内容来自官方文档翻译 环境 virtual box 6.1 centos 7.8 docker 19.03 Docker 的存储驱动 Ideally, very little data is writte...

kvm虚拟化介绍(1)

一、什么是虚拟化 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。 虚拟化,也就是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个...

Linux上的oracle巡检脚本

修改自大神博客:http://www.cnblogs.com/jyzhao/p/5364049.html 脚本巡检的优化:自动化,节省时间。 脚本需加强:巡检结果中有大量的sqlplus连接信息,后期考虑用shell只过滤出有用信息,优化查看。 开始介绍: 1.环境sentos67、redhat6 2.可以将脚本放至/home/oracle/checkdi...

conda常用命令

4.1 管理conda Conda既是包管理器,也是环境管理器。一个包管理器可以帮助你找到和安装软件包。使用几个命令,您可以设置一个完全独立的环境来运行不同版本的Python,然后继续在您的正常环境中运行您常用的Python版本。这就是像conda这样的环境管理工具的力量。 提示:无论您是使用Linux,OS X还是Windows命令提示符,在终端窗口...

基于Centos 7 vue+nginx+docker 的前端项目部署

1.先在本地将vue项目建立,并且确定能跑起来使用npm run serve  ctrl+鼠标左键在本地查看。 然后使用npm run build,会在本地生成一个dist文件。  然后建一个文件Dockerfile,文件内容可以在VS Code里面先写好,或者在linux服务器上面编辑都可以。 然后需要一台服务器,我这里是用的公司内部的linux服务...

android sdk manager 国内镜像

//东软信息学院 mirrors.neusoft.edu.cn80   //北京化工大学 ubuntu.buct.edu.cn/ubuntu.buct.cn80   //中国科学院开源协会 mirrors.opencas.cn/mirrors.opencas.org/mirrors.opencas.ac.cn80   //上海GDG镜像服务器 sdk.gd...