• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

RAID原理基础和软件RAID配置

  • iansiu
  • 2016-06-04
  • 0

RAID原理基础

传统磁盘的劣势

影响计算机性能的组件一般包括:CPU、主板总线IO、内存IO、硬盘IO、网卡IO。现在处理器性能已经很高了,但是计算机整体IO性能较弱,严重影响了计算机性能

现在的计算机总线、内存的速度可能达到5G每秒,甚至更高,但是硬盘IO往往较低

硬盘是绝大多数计算机的性能瓶颈

RAID

现代硬盘的缺陷:IO性能极弱、稳定性极差

RAID(Redundant Array of Independent Disks)廉价磁盘冗余阵列技术是通过多磁盘并行运行来提高计算机存储IO性能。

RAID分为很多种类,称之为RIAD级别,现代RIAD共有7类,常用的有以下四类:

RAID 0 读写性能
RAID 1 读写性能、冗余性
RAID 5 读写性能、冗余性(1块硬盘)
RAID 6 读写性能、冗余性 (2块硬盘)

RAID 0

RAID 0最少使用2块硬盘,在读写时,将数据分开读写到多块硬盘的方式来提高读写性能。

空间利用率: 所有硬盘空间之和
性能: 所有硬盘速度之和
冗余能力: 无

RAID 1

RAID 1最少使用2块硬盘,在写数据时,将数据复制写到多块硬盘。在读数据时,以提供冗余性。同时从多块硬盘读取数据,以提高读性能。

空间利用率:所有磁盘最小的那块
性能: 度性能为所有硬盘速度之和,写性能会有所减弱
冗余能力: 只要有一块硬盘正常,数据就正常

RAID 5

RAID 5最少使用3块硬盘,RAID5与RAID0类似,读写数据的时候会将数据分布式的读写在所有硬盘上,但是在写数据的时候会对数据进行奇偶校验运算,将校验信息同时保存在硬盘上,校验信息可以进行数据恢复使用。

空间利用率:1-1/n
性能: 读写性能接近RAID0,写性能较RAID0弱一些
冗余能力: 可接受一块硬盘损坏

RAID 6

RAID 6最少使用4块硬盘,RAID6与RAID5类似,读写数据的时候会将数据分布式的读写在所有硬盘上,并保存奇偶校验信息,但是会比RAID5多保存一份校验信息,所以冗余性较RAID5有所提升。

空间利用率:1-2/n
性能: 读写性能接近RAID5,读性能能比RAID5还要弱一点
冗余能力:可接受2块硬盘损坏

软件RAID配置

RAID机制通过使用多硬盘并行工作的方式来提高硬盘的IO性能

RAID分为多种,称之为RAID level,RAID共有7级:RAID0 ~ RAID6

常用的RAID级别有:RAID0、RAID1、RAID5、RAID6

RAID级别 速度 冗余性 磁盘利用率

RAID 0 读写速度均有提升 0 所有磁盘之和
RAID 1 读性能提升 n 一个磁盘大小
RAID 5 读写速度均有提升 1 1-1/n
RAID 6 读写速度均有提升 2 1-2/n

RAID的实现分为:硬件RAID、软件RAID

RAID实现

RAID的实现方式有两种:

软件RAID

MDADM

每种操作系统都有软件RAID的实现
在Linux中软件RAID通过mdadm这个程序实现
mdadm支持的RAID级别有:RAID0、RAID1、RAID4、RAID5、RAID6
mdadm可以基于多块硬盘、分区或逻辑卷创建软件RAID
创建好的软件RAID对应/dev/mdn,n为第几个RAID,如第一个创建的RAID/dev/md0,第二个为/dev/md1
RAID的信息保存在/proc/mdstat文件中,或通过mdadm命令查看

创建软件RAID

我们可以通过mdadm命令创建RAID
创建RAID 0

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev/sdc

-C 创建一个新的RAID
-a 自动创建对应设备
-l 指定要创建的RAID级别
-n 指定硬盘的数量

创建好RAID之后,我们需要创建一个配置文件

mdadm -D --scan > /etc/mdadm.conf

创建文件系统之后挂载使用

mkfs.ext4 /dev/md0
mount /dev/md0 /mnt
/dev/md0 /mnt ext4 defaults 0 0

查看RAID信息

我们可以使用mdadm命令查看RAID相关信息

mdadm -D /dev/md0

/proc中的文件也包含RAID相关信息

cat /proc/mdstat

创建RAID1

mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb /dev/sdc

创建RAID5

mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd

创建RAID6

mdadm -C /dev/md0 -a yes -l 6 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

我们也可以使用-x参数指定一个备份磁盘,备份磁盘一般不使用,当出现故障磁盘时,指定的备份磁盘可以自动上线工作

mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

控制RAID

我们可以通过以下命令关闭一个RAID,关闭前先卸载

mdadm -S /dev/md0

通过以下命令可以启用指定RAID

mdadm -R /dev/md0

彻底清除RAID设备

首先停止RAID设备

mdadm -S /dev/md0

然后:

mdadm --zero-superblock /dev/sdb

模拟故障

实验环境下,我们可以通过以下命令模拟一个磁盘的故障:

mdadm /dev/md0 -f /dev/sdb

之后,我们可以将故障磁盘移除

mdadm /dev/md0 -r /dev/sdb

换上新的硬盘后,我们可以将新硬盘添加到RAID中

mdadm /dev/md0 -a /dev/sdb
© 2023 laowang's blog
Theme by Wing