TommyHu的技术小馆

微信公众号:TommyHu的技术小馆

0%

独立磁盘冗余阵列(RAID)概念及配置

概念

RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种通过将多个独立的物理硬盘组合在一起来提供更高性能、容量和冗余性的数据存储技术。其原理是在多个硬盘之间实现数据的分布存储,并根据不同的RAID级别提供冗余备份,以增加数据的可靠性。

基本原理

RAID技术通过合理地组合独立的硬盘和数据处理策略,提供了更高的性能和可靠性,使数据存储系统更适合服务器、存储设备和数据中心等环境。以下是RAID的一些基本原理:

  1. 条带化(Striping)
    RAID将数据分成一系列块,并将这些块依次存储在不同的物理磁盘上,从而实现数据的条带化存储。这使得数据可以并行地从多个磁盘读取或写入,从而提高了存取速度。

  2. 冗余备份
    许多RAID级别提供了不同形式的冗余备份,以防止数据丢失。例如,RAID 1通过将相同的数据复制到多个磁盘上来提供冗余备份。RAID 5和RAID 6通过使用分布的校验数据来允许在一个磁盘损坏时恢复数据。

  3. RAID级别
    不同的RAID级别提供了不同的性能、容量和冗余特性。例如,RAID 0提供了高性能的条带化,但没有冗余备份。RAID 1提供了数据的完全冗余备份,但使用了更多的存储容量。RAID 5和RAID 6提供了一定程度的冗余备份和性能提升。

  4. 性能提升
    由于数据可以并行读写,RAID可以提高数据访问速度。例如,RAID 0在一定程度上提高了读写性能,而条带化的RAID级别(如RAID 5和RAID 6)在某些情况下也可以提供更好的读写性能。

  5. 可靠性提升
    多数RAID级别提供了冗余备份机制,以帮助防止数据丢失。RAID 1通过实时复制数据提供了最高级别的冗余。RAID 5和RAID 6通过校验数据来容忍一定数量的磁盘损坏,从而在磁盘故障时保护数据。

  6. 磁盘故障处理
    当一个磁盘损坏时,RAID可以根据其配置继续工作。在某些RAID级别中,系统可以使用冗余数据进行自动修复,以恢复丢失的数据。

选择RAID级别

选择适合的RAID级别取决于特定的应用需求,包括性能、数据冗余性、可用存储空间和成本等因素。不同的RAID级别在不同的情况下都有其优缺点。以下是常见的RAID级别,每个级别都有不同的优势和用途:

  1. RAID 0:条带化(Stripe):

    • 优势:提高性能,数据被分散存储在多个磁盘上,可以并行读写。
    • 缺点:没有冗余备份,一个磁盘损坏将导致数据丢失。
    • 应用场景:IO速率要求高但数据安全性要求低的场合。
  2. RAID 1:镜像(Mirroring):

    • 优势:提供数据冗余备份,一个磁盘损坏时数据仍然可用。
    • 缺点:需要两倍的存储容量,性能不如RAID 0。
    • 应用场景:财政、金融等容错要求高的场合。
  1. RAID 5:

    • 使用至少三个磁盘。
    • 优势:提供数据冗余备份和性能提升,较高的读写性能。
    • 缺点:写入性能较差,在某些情况下,如果多个磁盘同时损坏,数据可能会丢失。
  2. RAID 6:

    • 类似于RAID 5,但可以容忍两个磁盘的故障。
    • 使用至少四个磁盘。
    • 优势:更高的数据冗余性,可以同时容忍两个磁盘的损坏。
    • 缺点:相对于RAID 5,需要更多的计算资源。
  3. RAID 10(也称为RAID 1+0):

    • 将RAID 1和RAID 0结合,至少需要四个磁盘。
    • 优势:结合了RAID 0和RAID 1的优点,提供了较高的性能和数据冗余性。
    • 缺点:需要大量的磁盘空间。
  4. RAID 50:

    • 将RAID 5的条带化结合起来,至少需要六个磁盘。
    • 优势:在RAID 5的基础上提供更高的性能。
    • 缺点:相对复杂,需要更多的磁盘和管理。
  5. RAID 60:

    • 将RAID 6的条带化结合起来,至少需要八个磁盘。
    • 优势:在RAID 6的基础上提供更高的性能。
    • 缺点:相对复杂,需要更多的磁盘和管理。

Linux服务器配置RAID

在Linux服务器上配置RAID通常涉及以下步骤。具体步骤可能会因Linux发行版和RAID控制器类型而有所不同。以下适用于一般性情况:

  1. 硬件RAID vs. 软件RAID
    首先,需要确定是使用服务器上的硬件RAID控制器还是使用Linux提供的软件RAID。硬件RAID通常需要在服务器启动时通过BIOS或UEFI界面进行配置。而软件RAID是通过Linux操作系统的软件工具进行配置。

  2. 硬件RAID配置

    • 启动服务器并进入RAID控制器的配置界面,通常通过按下特定的键(如Ctrl+C)来访问。
    • 在控制台界面中,可以创建RAID阵列,选择RAID级别(如RAID 0、RAID 1等),选择成员磁盘,配置冗余等。
    • 根据界面提示完成阵列配置,并保存设置。
  3. 软件RAID配置

    • 确保Linux发行版已经安装在至少一块磁盘上,然后插入其他要用于RAID的磁盘。
    • 使用命令行工具(如mdadm)进行软件RAID配置。e.g.:
      1
      sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
      上面创建了一个RAID 1阵列,使用/dev/sdb1/dev/sdc1作为成员设备。
  4. 创建文件系统

    • 一旦RAID阵列创建完成,需要在其上创建文件系统,以便将数据存储在其中。常用的文件系统有Ext4、XFS等。
    • 例如,创建Ext4文件系统的命令:
      1
      sudo mkfs.ext4 /dev/md0
  5. 挂载RAID阵列

    • 创建一个目录来挂载RAID阵列上的文件系统:
      1
      sudo mkdir /mnt/raid
    • 将文件系统挂载到该目录:
      1
      sudo mount /dev/md0 /mnt/raid
  6. 自动挂载设置

    • 如果希望系统在每次启动时自动挂载RAID阵列,需要将挂载信息添加到/etc/fstab文件中。

上述具体步骤可能因使用的RAID级别、磁盘类型、Linux发行版以及服务器硬件而有所不同。在进行任何RAID配置之前,务必备份重要数据,并根据具体情况仔细阅读相关文档和指南。

使用arcconf配置raid

arcconf 是适用于Adaptec / Microsemi RAID 控制器的命令行工具,用于配置和管理RAID阵列。以下是使用 arcconf 进行RAID配置的一般步骤:

注意,以下步骤可能因使用的RAID控制器型号、驱动程序版本和操作系统而有所不同。在进行配置之前,务必查阅RAID控制器的官方文档和手册。

  1. 打开终端
    登录进系统,并在终端或命令行界面中打开命令行工具。

  2. 执行arcconf命令
    运行 arcconf 命令,通常需要使用管理员权限(例如,使用 sudo)。命令的基本结构如下:

    1
    sudo arcconf command option1 option2 ...
  3. 列出已有阵列
    使用以下命令列出当前系统中已经配置的RAID阵列:

    1
    sudo arcconf getconfig 1

    将显示当前的RAID配置,包括阵列、逻辑驱动器和物理磁盘的信息。

  4. 创建新阵列
    使用以下命令创建新的RAID阵列。根据需求和控制器支持的RAID级别来替换相应参数。

    1
    sudo arcconf create <Controller#> logicaldrive [raidlevel] [drives...]

    例如,创建一个RAID 1阵列,可以执行类似于以下的命令:

    1
    sudo arcconf create 1 logicaldrive RAID1 drives=0 1

    其中 01 是物理磁盘的编号。

  5. 保存设置
    在配置完成后,可能需要确认配置并保存更改。根据提示,执行适当的操作以保存配置。

  6. 重启服务器(可能需要):
    在某些情况下,RAID配置的更改可能需要重启服务器才能生效。如果系统要求重启,按照指示进行操作。

e.g. 在8块硬盘上创建raid6并设置热备盘:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cd /usr/Arcconf
# 设置控制卡工作模式(命令格式:arcconf setcontrollermode controller_id mode,3:设置为RAID模式)
./arcconf setcontrollermode 1 3
# 查询控制卡的基本信息(命令格式:arcconf list controller_id)
./arcconf list 1
# 创建raid(命令格式:arcconf create controller_id logicaldrive option size level physical_id physical_id......,size取值:设置为“MAX”,表示使用硬盘的所有容量创建虚拟磁盘)
./arcconf create 1 logicaldrive stripsize 256 MAX 6 0 8 0 9 0 10 0 11 0 12 0 13 0 14
# 设置热备盘(命令格式:arcconf setstate controller_id device physical_id hsp array array_id sparetype type,type取值:2 : Autoreplace)
./arcconf setstate 1 device 0 15 hsp array 0 sparetype 2
# 查询所有Array的信息(命令格式:arcconf getconfig controller_id AR)
./arcconf getconfig 1 ar
# 查询适配器信息(命令格式:arcconf getconfig controller_id AD)
./arcconf getconfig 1 ad
# 查询所有LD的信息(命令格式:arcconf getconfig controller_id LD)
./arcconf getconfig 1 ld
# 查询所有物理硬盘的信息(命令格式:arcconf getconfig controller_id PD)
./arcconf getconfig 1 pd

在执行任何配置操作之前,需详细阅读控制器的文档,确保了解所需的参数、命令和步骤。错误的RAID配置可能导致数据丢失或系统不稳定。

参考