RAID

RAID技术详解

学习MK课堂总结 在此感谢MK分享


RAID(Redundant Array of Independent Disks, 独立磁盘冗余阵列) 可以提供较普通磁盘更高的速度,安全性,所以服务器在安装时都会选择创建RAID.

创建两种方式:

软RAID 通过操作系统软件实现

硬RAID 使用硬件阵列卡


raid0:

1. RAID-0:  striping(条带模式),至少需要两块磁盘,做RAID分区的大小最好是相同(可以充分发挥并发优势);数据分散存储于不同的磁盘上,在读写的时候

可以实现并发,所以相对其读写性能最好;缺点 没有容错功能,任何一个磁盘的损坏将损坏全部数据 磁盘利用率100%



2. RAID-1 : mirroring(镜像卷), 至少需要两块硬盘, raid大小等于等于两个raid分区中最小的容量(最好将分区划分一样), 可增加热备盘提供一定的备份能力, 数据有冗余,

在存储时同时写入两块硬盘 实现数据备份

磁盘的利用率为50%,即两块100G的磁盘构成RAID1只能提供100G的可用空间



3. RAID-5 : 需要三块或以上的硬盘, 可以提供热备盘实现故障的恢复;只损坏一块 没问题 但是如果同时损坏两块磁盘, 则数据将都会损坏 空间利用率 (n-1)/n  2/3


RAID-5数据恢复原理 : 相对简单的异或逻辑运算


RAID 卡 : Adaptec SATA RAID 2410SA


RAID 功能 : RAID 0 . 1. 5. 10. JBOD

接口 : Serial ATA

数据传输率: 1.5GB/S

通道数: 4

最多连接设备: 4


LSI(美国巨积) MegaRAID SAS 9260-16i 

raid级别: 0. 1. 5 RAID 跨接

接口:Serial SATA/SAS

数据传输率: 6GB/S

插槽类型: PCI

其他性能: 512MB DDRII 告诉缓存


热备份盘(hot spare or hot standby driver) : 为了加强容错的功能以及使系统在磁盘故障的情况下能迅速重建数据 以维持系统的性能,一般的磁盘阵列系统都可以使用热备份功能


Chunk(块) : raid存储数据时每个数据段的大小 4K 或 64K

若chunk过大可能一块磁盘上的带区空间就可以满足大部分I/O操作, 使得数据的读写只局限于一块硬盘上,这就不能充分发挥RAID并发的优势;如果chunk设置过小,任何文件都可能引发大量的读写操作,不能良好的发挥并发性能,占用过多的控制器总线带宽, 也影响阵列的整体性能


##########################################################

RAID-0 实践:

环境: 添加一个sdb硬盘 分两个1G的主分区  sdb1 和 sdb2

分区:

#############################################################

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).


Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x90638ab3.


Command (m for help): p


Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3


   Device Boot      Start         End      Blocks   Id  System


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G
Partition 1 of type Linux and of size 1 GiB is set


Command (m for help): p


Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3


   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux


Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-41943039, default 2099200): 
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +1G
Partition 2 of type Linux and of size 1 GiB is set


Command (m for help): p


Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3


   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux


Command (m for help): w
The partition table has been altered!


Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# ll /dev/sdb
brw-rw---- 1 root disk 8, 16 Nov 29 23:23 /dev/sdb
[root@localhost ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Nov 29 23:23 /dev/sdb
brw-rw---- 1 root disk 8, 17 Nov 29 23:23 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Nov 29 23:23 /dev/sdb2

######################################################

2:创建

###########################################################

[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.


[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d648


[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Tue Nov 29 23:33:14 2016
     Raid Level : raid0
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent


    Update Time : Tue Nov 29 23:33:14 2016
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0 #备份


     Chunk Size : 512K #块大小


           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : e8155184:cca4de51:5a2162c2:3b2d6485
         Events : 0


    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2#active sync 正常状态

###########################################################

-C 创建 - -l 等级  -D 打印 -s 扫描 -n


生成raid 配置文件:

############################################################

[root@localhost ~]# mdadm -Ds > /etc/mdadom.conf
[root@localhost ~]# cat !$
cat /etc/mdadom.conf
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d648

#############################################################


使用:

############################################################

分区:

[root@localhost ~]# fdisk /dev/md0

[root@localhost ~]# ll /dev/md*
brw-rw---- 1 root disk   9, 0 Nov 29 23:49 /dev/md0
brw-rw---- 1 root disk 259, 0 Nov 29 23:49 /dev/md0p1

格式化:

[root@localhost ~]# mkfs.ext4 /dev/md0p1 

使用:

[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0p1 /raid0/
[root@localhost ~]# ls !$
ls /raid0/
lost+found
[root@localhost ~]# cp /etc/passwd /raid0/

############################################################


拓展: 开机自动挂载

vim /etc/fstab

输入: /dev/md0p1/raid0ext4  defaults        0 0


############################################################

[root@localhost ~]# df -h

dev/md0p1      2.0G  6.1M  1.9G   1% /raid0

###########################################################


------------------------------------------------------------------------------------------------------

创建含有热备份raid1

[root@localhost ~]# fdisk /dev/sdc

[root@localhost ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}

#-x 添加热备份

mdadm -Ds > /etc/madam.conf

fdisk /dev/md1

mkfs.ext4 /dev/md1

[root@localhost ~]# mkdir /raid1
[root@localhost ~]# mount /dev/md1p1 /raid1

[root@localhost ~]# df -h

/dev/md0p1      2.0G  6.1M  1.9G   1% /raid0 #raid0 2g 容量
/dev/md1p1      990M  2.6M  921M   1% /raid1 #raid1 1g容量


---------------------------------------------------------------------------------------------------

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 sdc3[2](S) sdc2[1] sdc1[0]
      1047552 blocks super 1.2 [2/2] [UU]
      
md0 : active raid0 sdb2[1] sdb1[0]
      2095104 blocks super 1.2 512k chunks

#md1:表示此阵列的设备名

#active :表示此阵列正常读写

#sdc3[2](S):表示这个阵列第三个设备是备用盘 sdc2[1]是此阵列第二个设备 。。。

#1047552 blocks 表示此阵列的大小,以块为单位(1G)

# [2/2] 表示阵列有两个磁盘,并且2个都在正常运行


----------------------------------------------------------------------------------------------------

模拟故障

[jingsia@localhost ~]$ watch -n 1 cat /proc/mdstat#观察动态 会启动sdc3备份


[root@localhost ~]# mdadm -f /dev/md1 /dev/sdc1#设置sdc1为故障
mdadm: set /dev/sdc1 faulty in /dev/md1


移动损坏的硬盘

[root@localhost ~]# mdadm -r /dev/md1 /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md1

[root@localhost ~]# cat /proc/mdstat  #查看状态

root@localhost ~]# mdadm -Ds > /etc/mdadm.conf


RAID5:

步骤:

创建RAID5

停止阵列 重新激活阵列

再添加新的1G热备盘 扩展阵列容量 从3磁盘扩展到4个


实验环境: sde1, sde2, sde3, sde4, sde5, sde6 个主分区 每个1G

[root@localhost ~]# fdisk /dev/sde

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1            2048     2099199     1048576   83  Linux
/dev/sde2         2099200     4196351     1048576   83  Linux
/dev/sde3         4196352     6293503     1048576   83  Linux
/dev/sde4         6293504     8390655     1048576    5  Extended
/dev/sde5         6295552     7344127      524288   83  Linux #没有空间512M(建议都是1G)
/dev/sde6         7346176     7870463      262144   83  Linux#没有空间256M(建议都是1G)


[root@localhost ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sde{1,2,3,5}


[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sde3[4] sde5[3](S) sde2[1] sde1[0]
      1046528 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid0 sdb2[1] sdb1[0]
      2095104 blocks super 1.2 512k chunks
      
md1 : active raid1 sdc3[2] sdc2[1]
      1047552 blocks super 1.2 [2/2] [UU]


[root@localhost ~]# mdadm -Ds
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=a5557751:cf581fce:52abc6a2:18328593
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d6485
ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost.localdomain:5 UUID=0e271e98:d07ff540:1de70330:c03f53d3


[root@localhost ~]#mdadm -Ds > /etc/mdadm.conf 


[root@localhost ~]# mdadm -S /dev/md5 #停止md5

mdadm: stopped /dev/md5


[root@localhost ~]# mdadm -As #激活

mdadm: /dev/md5 has been started with 3 drives and 1 spare.


[root@localhost ~]# fdisk /dev/md5


[root@localhost ~]# mkfs.ext4 /dev/md5p1


[root@localhost ~]# mkdir /raid5

[root@localhost ~]# mount /dev/md5p1 /raid5/


[root@localhost ~]# umount /raid5


[root@localhost ~]# mdadm -a /dev/md5 /dev/sde6  #添加
mdadm: /dev/sde6 not large enough to join array (无法添加 太小)

mdadm:added /dev/sde6


[root@localhost ~]# mdadm -G /dev/md5 -n 4#扩展阵列容量 从3磁盘扩展到4个
mdadm: Need to backup 3072K of critical section..

[root@localhost ~]# watch -n 1 cat /proc/mdstat #动态查看扩展过程


[root@localhost ~]#mdadm -Ds > /etc/mdadm.conf 


了解:

建立 RAID 1+0 双层架构的方法

先创建raid1 再使用创建的raid1设备创建raid0


[root@localhost ~]# fdisk /dev/sdf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1            2048     2099199     1048576   83  Linux
/dev/sdf2         2099200     4196351     1048576   83  Linux
/dev/sdf3         4196352     6293503     1048576   83  Linux
/dev/sdf4         6293504     8390655     1048576   83  Linux


[root@localhost ~]# mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf1 /dev/sdf2

[root@localhost ~]# mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf3 /dev/sdf4

[root@localhost ~]# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md11 /dev/md12

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md10 : active raid0 md12[1] md11[0]
      2093056 blocks super 1.2 512k chunks
      
md12 : active raid1 sdf4[1] sdf3[0]
      1047552 blocks super 1.2 [2/2] [UU]
      
md11 : active raid1 sdf2[1] sdf1[0]
      1047552 blocks super 1.2 [2/2] [UU]


开始删除:

[root@localhost ~]# umount /raid0 #如果已经挂在raid 先卸载
[root@localhost ~]# umount /raid1 
[root@localhost ~]# umount /raid5

[root@localhost ~]# mdadm -Ss #停止raid设备

[root@localhost ~]# rm -rf /etc/madam.conf  #删除raid配置文件

[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdf4 #清楚物理磁盘中的raid表识

07-10
<think>首先,用户的问题是:“我想了解RAID技术及其应用 请问RAID 技术原理 应用场景 配置方法”。我需要根据系统级指令来构建回答。 系统级指令: 1. 所有行内数学表达式必须使用 $...$ 格式。但在RAID技术中,可能没有数学表达式,所以我可以忽略这一点,除非有相关计算。 2. 独立公式必须使用 $$...$$ 格式并单独成段。同样,可能不适用。 3. LaTeX语法正确。 4. 使用中文回答。 5. 生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识,例如 [^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 参考站内引用:提供了四个引用,我需要引用它们来支持我的回答。 提供的引用: - 引用[1]: RAID 5 深度剖析:原理、优势与应用场景。 - 引用[2]: 一文带你全面了解RAID技术:从基础到进阶的全景解析。 - 引用[3]: RAID 技术定义和初衷。 - 引用[4]: RAID的应用场景以及优缺点,特别是RAID 10配置。 我的回答需要覆盖: - RAID技术原理 - 应用场景 - 配置方法 结构清晰: - 逐步介绍:先定义RAID,然后解释原理,接着应用场景,最后配置方法。 - 使用小标题或分段来组织。 添加引用: - 在回答中,当引用某个观点时,在末尾添加引用标识,如 [^1]。 - 例如,如果引用引用[1]的内容,就在句子末尾加 [^1]。 生成相关问题: - 在回答结束后,添加一个部分“相关问题”,列出几个相关问题。 - 类似于示例中的“§§相关问题§§”。 使用中文回答。 大纲回答结构: 1. **引言**:简要介绍RAID技术。 2. **RAID技术原理**: - 定义RAID(独立磁盘冗余阵列)。 - 核心原理:数据冗余、性能优化。 - 常见RAID级别:RAID 0, RAID 1, RAID 5, RAID 10等。 - 引用支持:如引用[3]定义RAID。 3. **应用场景**: - 不同RAID级别的适用场景。 - 例如:RAID 0用于高性能需求,RAID 1用于数据安全,RAID 5平衡性能和冗余,RAID 10用于高要求场景。 - 引用支持:如引用[1]和[4]。 4. **配置方法**: - 一般步骤:硬件或软件配置。 - 具体例子:如引用[4]中的RAID 10配置。 - 注意事项:备份、硬件稳定性。 5. **总结**:简要总结RAID的好处。 6. **相关问题**:列出3-5个相关问题。 确保回答真实可靠: - 基于提供的引用和一般知识。 - 不要编造信息。 生成相关问题: - 类似于示例,如: - RAID 5与RAID 10的区别是什么? - 如何选择适合的RAID级别? - RAID配置中常见问题有哪些? 现在,构建回答。</think>### RAID技术原理、应用场景与配置方法详解 RAID(独立磁盘冗余阵列)是一种通过组合多个物理磁盘来提升数据存储性能、可靠性和容量的技术。它最初旨在将多个小容量硬盘整合为更大容量的逻辑单元,但如今更侧重于数据保护和性能优化[^3]。下面我将从原理、应用场景和配置方法三个方面,逐步为你解析RAID技术,确保内容基于可靠来源。 #### 1. RAID技术原理 RAID的核心原理是通过数据分布策略实现冗余和性能提升。其基本方式包括: - **数据条带化(Striping)**:将数据分割成块,并行写入多个磁盘,提高读写速度(如RAID 0)。 - **数据镜像(Mirroring)**:在多个磁盘上保存相同数据的副本,确保数据安全(如RAID 1)。 - **奇偶校验(Parity)**:使用校验码存储冗余信息,在磁盘故障时恢复数据(如RAID 5)。 常见的RAID级别及其原理: - **RAID 0**:仅使用条带化,无冗余。性能最高,但无容错能力;一个磁盘故障即导致数据丢失。 - **RAID 1**:使用镜像,数据完全复制到多个磁盘。提供高可靠性,但存储利用率低(50%)。 - **RAID 5**:结合条带化和奇偶校验。数据块分布在多个磁盘上,奇偶校验信息也分布存储,实现性能与冗余的平衡(存储利用率约 $n-1/n$,其中 $n$ 为磁盘数)[^1]。 - **RAID 10**:RAID 1和RAID 0的组合。先将磁盘镜像成对(RAID 1),再对镜像对条带化(RAID 0)。提供高性能和高冗余,但成本较高[^4]。 RAID技术通过硬件控制器或软件实现,确保在磁盘故障时数据可恢复,提升系统可用性[^3]。 #### 2. 应用场景 RAID的应用场景取决于具体级别,需根据性能、冗余和成本需求选择: - **RAID 0**:适用于高性能计算或临时数据存储,如视频编辑缓存、游戏服务器。但无冗余,不推荐关键数据[^2]。 - **RAID 1**:适合小规模数据安全需求,如操作系统盘或关键配置文件。提供即时故障恢复,但容量有限[^4]。 - **RAID 5**:平衡性能与冗余,广泛用于企业存储系统,如数据库服务器或文件共享平台。支持中等读写负载,且存储利用率高(如4块磁盘时利用率75%)[^1]。 - **RAID 10**:适用于高要求场景,如金融交易系统或虚拟化环境。提供快速读写和强容错,但成本高(存储利用率50%)[^4]。 总体而言,RAID技术在企业服务器、数据中心、工作站中广泛应用,以提升数据可靠性和I/O性能。但需注意,RAID不是备份的替代品,仍需定期备份以防多磁盘故障或人为错误[^4]。 #### 3. 配置方法 RAID配置可通过硬件(RAID卡)或软件(操作系统内置工具)实现。以下是通用步骤和一个具体示例: - **通用配置流程**: 1. **准备硬件**:选择兼容的磁盘(建议相同容量和型号),连接RAID控制器或主板。 2. **进入配置界面**:开机时进入BIOS/UEFI或RAID卡设置界面(如按Ctrl+R)。 3. **创建RAID阵列**:选择RAID级别(如RAID 5),指定磁盘成员,设置参数(如条带大小)。 4. **初始化阵列**:格式化并分配逻辑驱动器(如LUN)。 5. **操作系统安装**:在RAID卷上安装OS(如Windows或Linux)。 6. **测试与监控**:使用工具(如mdadm in Linux)验证冗余和性能,并设置警报。 - **RAID 10配置示例**(基于引用[4]): 1. **设置RAID阵列**:创建两个子阵列: - RAID 0阵列:用于系统盘(如2块磁盘条带化),提升启动速度。 - RAID 1阵列:用于数据盘(如2块磁盘镜像),确保数据安全。 2. **系统安装**:将操作系统安装在RAID 0阵列上。 3. **数据存储**:将用户文件存储在RAID 1阵列上。 4. **备份策略**:尽管RAID提供冗余,仍建议定期备份数据到外部设备。 这种方法适用于企业服务器,兼顾性能和可靠性。配置时务必备份现有数据,并确保硬件稳定[^4]。 **重要注意事项**: - **硬件 vs. 软件RAID**:硬件RAID性能更好,但成本高;软件RAID灵活(如Linux mdadm),但占用CPU资源。 - **风险控制**:RAID无法防止所有数据丢失(如多磁盘故障),必须结合备份策略[^4]。 - **性能优化**:选择RAID级别时,考虑I/O负载(如RAID 5适合读多写少场景)。 总之,RAID技术通过冗余机制提升存储系统的健壮性,是现代数据中心的基石。合理配置可显著改善性能和可靠性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值