linux 独立冗余磁盘阵列,Linux 独立冗余磁盘阵列介绍

本文详细介绍了Linux环境下的RAID技术,包括RAID0、RAID1、RAID4、RAID5、RAID6以及RAID10的工作原理、优缺点及应用场景。通过实例展示了如何使用mdadm命令创建和管理RAID阵列,以及在磁盘故障时的数据恢复过程。此外,还提到了RAID级别的选择对于存储性能、数据安全和成本的影响。
摘要由CSDN通过智能技术生成

Linux 独立冗余磁盘阵列介绍

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列) 技术是加州大学伯克利分校 1987 年提出, 最初是为了组合小的廉价磁盘来代替大的昂贵磁盘, 同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术. RAID 就是一种由多块廉价磁盘构成的冗余阵列, 在操作系统下是作为一个独立的大型存储设备出现. RAID 可以充分发 挥出多块硬盘的优势, 可以提升硬盘速度, 增大容量, 提供容错功能够确保数据安全性, 易于管理的优点, 在任何一块硬盘出现问题的情况下都可以继续工作, 不会 受到损坏硬盘的影响.

常用 raid 介绍

raid 0

RAID 0 又称为 Stripe 或 Striping, 它代表了所有 RAID 级别中最高的存储性能. RAID 0 提高存储性能的原理是把连续的数据分散到多个磁盘上存取, 这样, 系统有数据请求就可以被多个磁盘并行的执行, 每个磁盘执行属于它自己的那部分数据请求. 这种数据上的并行操作可以充分利用总线的带宽, 显著提高磁盘整体存取性能.

使用: 以 2 块盘为例子, 数据存储各一半

优点: 写入读取快, 适合保存非重要数据

可用空间: num*min(device)

ab7653affab982b574eb7acc55df2e04.gif

raid 1

RAID 1 通过磁盘数据镜像实现数据冗余, 在成对的独立磁盘上产生互 为备份的数据. 当原始数据繁忙时, 可直接从镜像拷贝中读取数据, 因此 RAID 1 可以提高读取性能. RAID 1 是磁盘阵列中单位成本最高的, 但提供了很高的数据安全性和可用性. 当一个磁盘失效时, 系统可以自动切换到镜像磁盘上读写, 而不需要重组失效的数据.

使用: 以 2 块盘为例子, 数据各一份

优点: 读性能提升, 数据冗余

缺点: 写性能略有下降

可用空间: 1*min(device)

ab7653affab982b574eb7acc55df2e04.gif

raid 4

RAID 是英文 Redundant Array of IndependentDisks 的缩写, 中文简称为独立磁盘冗余阵列. RAID 就是一种由多块硬盘构成的冗余阵列. 虽然 RAID 包含多块硬盘, 但是在操作系统下是作为一个独立的大型存储设备出现. RAID4 即带奇偶校验码的独立磁盘结构, RAID4 和 RAID3 很象. 在独立访问阵列中, 每个磁盘都是独立运转的, 因此不同的 I/O 请求可以并行地满足

使用: 以 3 块盘为例子, 一块校验盘, 用户还原数据, 2 块数据盘

优点: 有冗余能力, 读, 写性能提升, 允许坏一块盘

缺点: 校验盘压力过大

可用空间:(N-1)*min(device)

raid 5

RAID 5 是一种存储性能, 数据安全和存储成本兼顾的存储解决方案. RAID 5 可以理解为是 RAID 0 和 RAID 1 的折中方案. RAID 5 可以为系统提供数据安全保障, 但保障程度要比 Mirror 低而磁盘空间利用率要比 Mirror 高. RAID 5 具有和 RAID 0 相近似的数据读取速度, 只是多了一个奇偶校验信息, 写入数据的速度比对单个磁盘进行写入操作稍慢. 同时由于多个数据对应一个奇偶校验信息, RAID 5 的磁盘空间利用率要比 RAID 1 高, 存储成本相对较低, 是目前运用较多的一种解决方案.

使用: 以 3 块盘为例子, 1 块轮流做校验盘和 2 块轮流存储盘

优点: 相比 radi4, 降低校验盘压力

缺点: 只能坏一块盘

可用空间:(N-1)*min(device)

ab7653affab982b574eb7acc55df2e04.gif

raid 6

RAID6 技术是在 RAID 5 基础上, 为了进一步加强数据保护而设计的一种 RAID 方式, 实际上是一种扩展 RAID 5 等级. 与 RAID 5 的不同之处于除了每个硬盘上都有同级数据 XOR 校验区外, 还有一个针对每个数据块的 XOR 校验区. 当然, 当前盘数据块的校验数据不可能存在当前盘而是交错存储的, 这样一来, 等于每个数据块有了两个校验保护屏障 (一个分层校验, 一个是总体校验), 因此 RAID 6 的数据冗余性能相当好. 但是, 由于增加了一个校验, 所以写入的效率较 RAID 5 还差, 而且控制系统的设计也更为复杂, 第二块的校验区也减少了有效存储空间.

使用: 以 4 块盘为例子, 二块校验盘, 用户还原数据, 2 块数据盘

优点: 容错比 raid 5 好

缺点: 写入没 raid 5 好

可用空间:(N-2)*min(device)

raid 10

Raid 10 是一个 Raid 1 与 Raid0 的组合体, 它是利用奇偶校验实现条带集镜像, 所以它继承了 Raid0 的快速和 Raid1 的安全. 我们知道, RAID 1 在这里就是一个冗余的备份阵列, 而 RAID 0 则负责数据的读写阵列. 其实, 右图只是一种 RAID 10 方式, 更多的情况是从主通路分出两路, 做 Striping 操作, 即把数据分割, 而这分出来的每一路则再分两路, 做 Mirroring 操作, 即互做镜像.

使用: 以 4 块盘为例子, 分 2 对 raid 1,2 对 raid 为 raid 0

优点: 提升读写, 有冗余, 每对 raid1 能坏一块

ab7653affab982b574eb7acc55df2e04.gif

虚拟实现 raid 5

mdadm 常用选项说明

支持的 RAID 级别: LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;

模式:

-C: 创建模式|----n#: 使用 #个块设备来创建此 RAID;

|----l#: 指明要创建的 RAID 的级别;

|--- -a {yes|no}: 自动创建目标 RAID 设备的设备文件;

|--- -c CHUNK_SIZE: 指明块大小;

|--- -x #: 指明空闲盘的个数;

-D: 管理模式 显示 raid 的详细信息;

-f: 标记指定磁盘为损坏;

-a: 添加磁盘

-r: 移除磁盘

实验先创建 4 个 1G 的分区, 用 2 块存储数据, 1 块存储校验, 1 块备用, 创建 raid 5,# 创建 4 块分区, 注意格式是 fd

[root@localhost sh]#fdisk/dev/sdb

命令 (输入 m 获取帮助):t

分区号 (1-7, 默认 7):5

Hex 代码 (输入 L 列出所有代码):fd

已将分区 "Linux" 的类型更改为 "Linux raid autodetect"

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 16779263 8388608 5 Extended

/dev/sdb5 4096 2101247 1048576 fd Linux raid autodetect

/dev/sdb6 2103296 4200447 1048576 fd Linux raid autodetect

/dev/sdb7 4202496 6299647 1048576 fd Linux raid autodetect

/dev/sdb8 6301696 8398847 1048576 fd Linux raid autodetect

查看本机虚拟 raid[root@localhost sh]#cat/proc/mdstat

Personalities:

unused devices:

创建[root@localhost sh]#mdadm-C/dev/md0-a yes-n3-x1-l5/dev/sdb{5,6,7,8}

#-x 1 一块是空闲备份 -l 5 raid5 -n 3 块使用盘

mdadm:Defaultingto version1.2metadata

mdadm: array /dev/md0 started.

再次查看

[root@localhost sh]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb7[4] sdb8[3](S) sdb6[1] sdb5[0]

2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]unused devices:

#active 活动状态, 可以使用

挂载[root@localhost sh]#mke2fs-t ext4/dev/md0

[root@localhost sh]#mount/dev/md0/mnt/t2

[root@localhost sh]#df-h/mnt/t2/#2g 可以用设备

文件系统 容量 已用 可用 已用 % 挂载点

/dev/md0 2.0G 6.0M 1.9G 1% /mnt/t2

详细信息查看:[root@localhost t2]#mdadm-D/dev/md0

/dev/md0:

Version:1.2

Creation Time : Mon Apr 23 03:14:26 2018

Raid Level : raid5ArraySize:2095104(2046.00MiB2145.39MB)

UsedDevSize:1047552(1023.00MiB1072.69MB)

Raid Devices : 3

Total Devices : 4

Persistence : Superblock is persistent

Update Time : Mon Apr 23 03:20:48 2018State:clean

ActiveDevices:3

Working Devices : 4

Failed Devices : 0

Spare Devices : 1Layout:left-symmetric

ChunkSize:512K

Consistency Policy : resync

Name : localhost.localdomain:0 (local to host localhost.localdomain)

UUID : 24dec4a5:d57dbe03:f9aa2729:b2997a05

Events : 18

Number Major Minor RaidDevice State08210active sync/dev/sdb5

18221active sync/dev/sdb6

48232active sync/dev/sdb7

3 8 24 - spare /dev/sdb8 空闲状态

手动标记一块错误盘

[root@localhost t2]# mdadm /dev/md0 -f /dev/sdb6

mdadm: set /dev/sdb6 faulty in /dev/md0

[root@localhost t2]# cat /proc/mdstat #这个阶段可以观察数据恢复 直到 active

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb7[4] sdb8[3] sdb6[1](F) sdb5[0]

2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices:

再次观察[root@localhost t2]#mdadm-D/dev/md0

# 会发现

1822-faulty/dev/sdb6#损坏盘 而 8 已经从空闲到正常使用

# 如果在移掉一个

State : clean 也会变化成 clean,degrade 降级状态

手动移除坏的分区

[root@localhost t2]# mdadm /dev/md0 -r /dev/sdb6

mdadm: hot removed /dev/sdb6 from /dev/md0

再次添加[root@localhost t2]#mdadm/dev/md0-a/dev/sdb6

mdadm:added/dev/sdb6

移除 raid 5[root@localhost mnt]#umount/mnt/t2

[root@localhost mnt]#mdadm-S/dev/md0

mdadm:stopped/dev/md0

来源: http://blog.51cto.com/marvin89/2106891

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值