RAID简介

RAID 的意思是廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),但现在它被称为独立磁盘冗余阵列(Redundant Array of Independent Drives)。早先一个容量很小的磁盘都是非常昂贵的,但是现在我们可以很便宜的买到一个更大的磁盘。Raid 是一系列放在一起,成为一个逻辑卷的磁盘集合。

RAID 包含一组或者一个集合甚至一个阵列。使用一组磁盘结合驱动器组成 RAID 阵列或 RAID 集。将至少两个磁盘连接到一个 RAID 控制器,而成为一个逻辑卷,也可以将多个驱动器放在一个组中。一组磁盘只能使用一个 RAID 级别。使用 RAID 可以提高服务器的性能。不同 RAID 的级别,性能会有所不同。它通过容错和高可用性来保存我们的数据。

软件 RAID 和硬件 RAID

软件 RAID 的性能较低,因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前,操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。

硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时,即使出现电源故障,它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。

硬件 RAID 卡如下所示:
mark


RAID级别

重要的 RAID 概念

  • 校验方式:用在 RAID 重建中从校验所保存的信息中重新生成丢失的内容。 RAID 5,RAID 6 基于校验。
  • 条带化:是将切片数据随机存储到多个磁盘。它不会在单个磁盘中保存完整的数据。如果我们使用2个磁盘,则每个磁盘存储我们的一半数据。
  • 镜像:被用于 RAID 1 和 RAID 10。镜像会自动备份数据。在 RAID 1 中,它会保存相同的内容到其他盘上。
  • 热备份:只是我们的服务器上的一个备用驱动器,它可以自动更换发生故障的驱动器。在我们的阵列中,如果任何一个驱动器损坏,热备份驱动器会自动用于重建 RAID。
  • :是 RAID 控制器每次读写数据时的最小单位,最小 4KB。通过定义块大小,我们可以增加 I/O 性能。

RAID有不同的级别。在这里列出在真实环境下的使用最多的 RAID 级别。其他级别的阵列参考:磁盘阵列

RAID0 = 条带化   提高读写性能
RAID1 = 镜像    提高读写性能、冗余性
RAID5 = 单磁盘分布式奇偶校验   提高读写性能、冗余性(允许1块硬盘发生故障)
RAID6 = 双磁盘分布式奇偶校验   提高读写性能、冗余性(运行2块硬盘发生故障)
RAID10 = 镜像 + 条带。(嵌套RAID)
RAID 在大多数 Linux 发行版上使用名为 mdadm 的软件包进行管理。


RAID 0 条带化

mark

  • 高性能。
  • RAID 0 中容量零损失。
  • 零容错。
  • 写和读有很高的性能。
  • 最少两块硬盘

条带化有很好的性能。在 RAID 0(条带化)中数据将使用切片的方式被写入到磁盘。一半的内容放在一个磁盘上,另一半内容将被写入到另一个磁盘。

假设我们有2个磁盘驱动器,每次写入数据都是分两半写入两个磁盘的注:实际上不可能按字节切片,是按数据块切片的。

在这种情况下,如果驱动器中的任何一个发生故障,就会丢失数据,因为一个盘中只有一半的数据,不能用于重建 RAID。不过,当比较写入速度和性能时,RAID 0 是非常好的。创建 RAID 0(条带化)至少需要2个磁盘。如果你的数据是非常宝贵的,那么不要使用此 RAID 级别。


RAID 1 镜像化

mark

  • 良好的性能。
  • 总容量丢失一半可用空间。
  • 完全容错。
  • 重建会更快。
  • 写性能变慢。
  • 读性能变好。
  • 能用于操作系统和小规模的数据库。
  • 最少两块硬盘

镜像也有不错的性能。镜像可以对我们的数据做一份相同的副本。假设我们有两个2TB的硬盘驱动器,我们总共有4TB,但在镜像中,但是放在 RAID 控制器后面的驱动器形成了一个逻辑驱动器,我们只能看到这个逻辑驱动器有2TB。

当我们保存数据时,它将同时写入这两个2TB驱动器中。创建 RAID 1(镜像化)最少需要两个驱动器。如果发生磁盘故障,我们可以通过更换一个新的磁盘恢复 RAID 。如果在 RAID 1 中任何一个磁盘发生故障,我们可以从另一个磁盘中获取相同的数据,因为另外的磁盘中也有相同的数据。所以是零数据丢失。


RAID 5 分布式奇偶校验

mark

  • 性能卓越
  • 读速度将非常好。
  • 写速度处于平均水准,如果我们不使用硬件 RAID 控制器,写速度缓慢。
  • 从所有驱动器的奇偶校验信息中重建。
  • 完全容错。
  • 1个磁盘空间将用于奇偶校验。
  • 可以被用在文件服务器,Web服务器,非常重要的备份中。
  • 最少三块硬盘

RAID 5 多用于企业级。 RAID 5 的以分布式奇偶校验的方式工作。奇偶校验信息将被用于重建数据。它从剩下的正常驱动器上的信息来重建。在驱动器发生故障时,这可以保护我们的数据。

假设我们有4个驱动器,如果一个驱动器发生故障而后我们更换发生故障的驱动器后,我们可以从奇偶校验中重建数据到更换的驱动器上。奇偶校验信息存储在所有的4个驱动器上,如果我们有4个 1TB 的驱动器。奇偶校验信息将被存储在每个驱动器的256G中,而其它768GB是用户自己使用的。单个驱动器故障后,RAID 5 依旧正常工作,如果驱动器损坏个数超过1个会导致数据的丢失。


RAID 6 双分布式奇偶校验磁盘

mark

  • 性能不佳。
  • 读的性能很好。
  • 如果我们不使用硬件 RAID 控制器写的性能会很差。
  • 从两个奇偶校验驱动器上重建。
  • 完全容错。
  • 2个磁盘空间将用于奇偶校验。
  • 可用于大型阵列。
  • 用于备份和视频流中,用于大规模。
  • 最少四块硬盘

RAID 6 和 RAID 5 相似但它有两个分布式奇偶校验。大多用在大数量的阵列中。我们最少需要4个驱动器,即使有2个驱动器发生故障,我们依然可以更换新的驱动器后重建数据。

它比 RAID 5 慢,因为它将数据同时写到4个驱动器上。当我们使用硬件 RAID 控制器时速度就处于平均水准。如果我们有6个的1TB驱动器,4个驱动器将用于数据保存,2个驱动器将用于校验。


RAID 10 镜像+条带

mark
mark

  • 良好的读写性能。
  • 总容量一半用于容错。
  • 从副本数据中快速重建。
  • 由于其高性能和高可用性,常被用于数据库的存储中。
  • 最少四块硬盘

RAID 10 可以被称为1 + 0或0 +1。它将做镜像+条带两个工作。
在 RAID 10 中首先做镜像然后做条带。
在 RAID 01 上首先做条带,然后做镜像。
RAID 10 比 01 好。

假设,我们有4个驱动器。当我逻辑卷上写数据时,它会使用镜像和条带的方式将数据保存到4个驱动器上。

如果我在 RAID 10 上写入数据“TECMINT”,数据将使用如下方式保存。首先将“T”同时写入两个磁盘,“E”也将同时写入另外两个磁盘,所有数据都写入两块磁盘。这样可以将每个数据复制到另外的磁盘。

同时它将使用 RAID 0 方式写入数据,遵循将“T”写入第一组盘,“E”写入第二组盘。再次将“C”写入第一组盘,“M”到第二组盘。



RAID 容量计算器

这里引用了群晖官方的RAID计算器。

RAID 容量计算器



管理RAID


mdadm

安装mdadm

Linux系统基本都带有 mdadm 软件包。没有的话先安装

yum install mdadm -y
apt-get install mdadm

下面盗几张图,自己没有截图啦。

新建分区

创建RAID0 需要两块硬盘,拿/dev/sdb 和/dev/sdc 来实验。

fdisk /dev/sdb        #对sdb 进行分区

输入"m", 获取帮助,输入"p", 查看分区前磁盘状态。
mark
输入"n" 新建分区,将整个磁盘都划分成一个分区,然后输入"p" 查看分区情况。
mark


修改分区类型

默认新建分区的类型是Linux,代号83,需要将其修改为raid 类型。输入"t" ,然后输入"L"

列出所有的文件格式,这里我们选择"fd Linux raid auto", 输入"fd",然后再输入"p" 查看分区情况,分区格式已经变成了Linux raid autodetect。
mark
输入"w" 保存分区。
使用同样方法对/dev/sdc 进行分区操作。


同步分区情况

使用partprobe 命令同步分区情况。

查看现在的状态fdisk -l /dev/sdb /dev/sdc

用sdb和sdc创建RAID 0:

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev sdc
或
mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1
选项说明
-C,--create创建阵列
-a,--auto同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建
-l,--level阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container
-n,--raid-devices阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目
/dev/md0 阵列的设备名称
/dev/sd{b,c}1 参与创建阵列的磁盘名称

创建RAID 配置文件/etc/mdadm.conf

RAID 的配置文件为**/etc/mdadm.conf**,默认是不存在的,需要手工创建。

该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置

我们这里需要创建这个文件,测试中发现,如果没有这个文件,则reboot 后,已经创建好的md0 会自动变成md127。

/etc/mdadm.conf 文件内容包括:
DEVICE 选项指定用于软RAID的所有设备。
ARRAY 选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。

创建/etc/mdadm.conf

echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf
mdadm –Ds >> /etc/mdadm.conf

修改配置文件

当前生成的/etc/mdadm.conf 文件内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:

# cat /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1

ARRAY /dev/md0 level=raid0 num-devices=2 UUID=5160ea40:cb2b44f1:c650d2ef:0db09fd0```

---
#### 格式化磁盘阵列

mkfs.ext4 /dev/md0


#### 建立挂载点并挂载

mkdir /raid0
mount /dev/md0 /raid0/


---
####  写入/etc/fstab

为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab 文件中。然后reboot 测试开机是否自动挂载,raid0 创建完毕。


---
参考资料:
http://www.centoscn.com/image-text/config/2015/0213/4713.html
http://www.cnblogs.com/mchina/p/linux-centos-disk-array-software_raid.html

---
文章作者: Leo
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeoLan的小站
系统管理 raid
喜欢就支持一下吧