Linux基础之(磁盘阵列RAID)

「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战


什么是RAID

  • RAID简称磁盘阵列;
  • 什么是阵列,例如:古代打仗时为什么要对士兵进行排兵布阵,其目的在于提高士兵整体的作战能力,而不是某个士兵的战斗力;
  • 那么回到磁盘中,我们也可以将多块盘组合进行排列,提高磁盘的整体读写能力,和冗余能力,通常我们将其称为磁盘阵列;

为什么需要RAID

  • 提升读写能力;(在RAID中,可以让很多磁盘同时传输数据,因为多块磁盘在逻辑上感觉是一个磁盘,所以使用RAID可以达到单个磁盘的几倍、几十倍甚至上百倍的速率。)
  • 保证数据安全;(硬盘其实非常的脆弱,它经常会坏掉。所以有了RAID这个东西。它的目的是将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个硬盘是正常的,这样服务器还能正常提供服务。保证磁盘高可用。)
  • RAID可以预防数据丢失,但并不能百分百保证数据不丢,所以在使用RAID的同时还是要备份重要的数据;

实现RAID的几种模式

RAID0

  • RAID0条带卷,最少两块盘。读写性能好,但没有容错机制,坏一块磁盘数据全丢;
    • 磁盘空间使用率:100%,成本低
    • 读性能:N*单块磁盘的读性能
    • 写性能:N*单块磁盘的写性能
    • 冗余:无,任何一块磁盘损坏都将导致数据不可用;
    • 应用场景:临时数据缓存;

image-20211112140608646

RAID1

  • RAID1镜像卷,写入性能一般、读取性能快、有容错机制,但磁盘有50%浪费;
    • 磁盘空间使用率:50%成本较高;
    • 读性能:N*单块磁盘的读性能
    • 写性能:1*单块磁盘的写性能
    • 冗余:在这一对镜像盘中有一块磁盘可以使用,那么无影响;
    • 应用场景:有状态服务(db);

image-20211112141933493

RAID5

  • RAID5校验卷,至少3块相同大小的盘,并且只允许坏一块盘,有效空间1/3,读写速度快。坏掉一块盘,读会慢;
    • 磁盘空间利用率︰(N-1),即只浪费—块磁盘用于奇偶校验;
    • 读性能:(n-1)\*单块磁盘的读性能,接近RAID0的读性能;
    • 写性能:(n-1)\*单块磁盘的写性能,接近RAID0的写性能;
    • 冗余:只允许一块磁盘损坏;
    • 应用场景:常规选择(all);

image-20211112142312389

RAID10

  • RAID10,先做RAID1,再做RAID0
    • 磁盘空间利用率:50%
    • 读性能:
    • 写性能:
    • 冗余:只要一对镜像盘中有一块磁盘可以使用就没问题;
    • 应用场景:数据库(db);

image-20211112143310756

实现RAID的方式

硬RAID

  • RAID使用硬件阵列卡;在安装操作系统之前进入BIOS配置;

软RAID

  • RAID通过操作系统软件来实现,性能远不如硬RAID,仅测试效果;

软RAID配置方法

RAID环境准备

  • 由于使用操作系统模拟的软RAID,所以需要在虚拟机上添加9块硬盘,来完成实验;
  • 创建软RAID命令mdadm,如果没有使用yum install mdadm安装即可;
    • mdadm磁盘阵列命令选项;
    • 创建模式:
      • -C:创建阵列;
      • -l:指定指定级别;
      • -n:指定设备数量;
      • -v︰指定设备名称;
      • -x︰指定备用磁盘;
    • 管理模式:
      • -a/--add:添加磁盘;
      • -r/--remove:移除磁盘;
      • -f/--fail:标记指定磁盘为损坏;

配置RAID0

创建RAID0实验环境:

raid种类 磁盘 热备盘
raid0 sdb、sdc
  1. 创建raid0

    [root@web ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
    复制代码
  2. 查看阵列信息;

    [root@web ~]# mdadm -Ds
    [root@web ~]# mdadm -D /dev/md0
    复制代码
  3. 格式化磁盘并分区挂载;

    [root@web ~]# mkfs.xfs /dev/md0
    [root@web ~]# mkdir /raid0
    [root@web ~]# mount /dev/md0 /raid0/
    [root@web ~]# df -h
    复制代码

配置RAID1

创建RAID1实验环境:

raid种类 磁盘 热备盘
raid1 sdd、sde sdf
  1. 准备sdd、sde两块盘,然后创建阵列为RAID1,准备sdf为备用盘;

    # 1.创建raid1阵列
    [root@web ~]# mdadm -C -v /dev/md1 -l 1 -n 2 /dev/sd[d,e,f]
    复制代码
  2. 格式化磁盘并分区挂载;

    [root@web ~]# mkfs.xfs -f /dev/md1
    [root@web ~]# mkdir /raid1
    [root@web ~]# mount /dev/md1 /mnt/raid1/
    复制代码
  3. 使用--fail模拟RAID1中数据盘/dev/sde出现故障,观察/dev/sdf备用盘能否自动顶替故障盘;

    [root@web ~]# mdadm /dev/md1 --fail /dev/sde
    复制代码
  4. 检查当然raid状态;

    [root@web ~]# mdadm -D /dev/md1
    	Number	Major	Minor	RaidDevice	state
    	0		8		96		0			active sync		/dev/sdd
    	2		8		128		1			spare rebuilding /dev/sdf	#热备盘已经在同步数据
    	1		8		112		-			faulty	/dev/sde	#故障盘
    复制代码
  5. 移除损坏的磁盘;

    [root@web ~]# mdadm /dev/md1 -r /dev/sde
    复制代码

配置RAID5

创建RAID5实验环境:

raid种类 磁盘 热备盘
raid5 sdg、sdh、sdi sdj
  1. 创建raid5也可以在最后使用-x添加备用盘;

    [root@web ~]# mdadm -C -v /dev/md5 -l 5 -n 3 /dev/sd{g,h,i,j}
    复制代码
  2. 格式化磁盘并分区挂载;

    [root@web ~]# mkfs.xfs -f /dev/md5
    [root@web ~]# mkdir /mnt/raid5
    [root@web ~]# mount /dev/md5 /raid5/
    [root@web ~]# echo "Raid" > /raid5/file
    [root@web ~]# mdadm -D /dev/md5
    复制代码
  3. 模拟一块磁盘损坏,查看/dev/sdj备用磁盘是否会顶上;

    [root@web ~]# mdadm /dev/md5 --fail /dev/sdg
    [root@web ~]# mdadm -D /dev/md5
    复制代码
  4. 将故障的/dev/sdg盘剔除;

    [root@web ~]# mdadm /dev/md5 -r /dev/sdg
    复制代码
  5. 再次模拟—块磁盘损坏,检查数据是否丢失;

    [root@web ~]# mdadm /dev/md5 --fail /dev/sdh
    [root@web ~]# mdadm -D /dev/md5
    复制代码

Guess you like

Origin juejin.im/post/7031347535922855966