Linux 独立冗余磁盘阵列介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 独立冗余磁盘阵列介绍相关的知识,希望对你有一定的参考价值。
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
常用raid介绍
raid 0
RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
使用:以2块盘为例子,数据存储各一半
优点:写入读取快,适合保存非重要数据
可用空间:num*min(device)
raid 1
RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互 为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
使用:以2块盘为例子,数据各一份
优点:读性能提升,数据冗余
缺点:写性能略有下降
可用空间:1*min(device)
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)
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能坏一块
虚拟实现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
[[email protected] 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
[[email protected] sh]# cat /proc/mdstat
Personalities :
unused devices: <none>
创建
[[email protected] sh]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{5,6,7,8}
#-x 1 一块是空闲备份 -l 5 raid5 -n 3块使用盘
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
再次查看
[[email protected] 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: <none>
#active 活动状态,可以使用
挂载
[[email protected] sh]# mke2fs -t ext4 /dev/md0
[[email protected] sh]# mount /dev/md0 /mnt/t2
[[email protected] sh]# df -h /mnt/t2/ #2g可以用设备
文件系统 容量 已用 可用 已用% 挂载点
/dev/md0 2.0G 6.0M 1.9G 1% /mnt/t2
详细信息查看:
[[email protected] t2]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Apr 23 03:14:26 2018
Raid Level : raid5
Array Size : 2095104 (2046.00 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.00 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Apr 23 03:20:48 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 24dec4a5:d57dbe03:f9aa2729:b2997a05
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
3 8 24 - spare /dev/sdb8 空闲状态
手动标记一块错误盘
[[email protected] t2]# mdadm /dev/md0 -f /dev/sdb6
mdadm: set /dev/sdb6 faulty in /dev/md0
[[email protected] 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: <none>
再次观察
[[email protected] t2]# mdadm -D /dev/md0
#会发现
1 8 22 - faulty /dev/sdb6 #损坏盘 而8已经从空闲到正常使用
#如果在移掉一个
State : clean也会变化成clean,degrade降级状态
手动移除坏的分区
[[email protected] t2]# mdadm /dev/md0 -r /dev/sdb6
mdadm: hot removed /dev/sdb6 from /dev/md0
再次添加
[[email protected] t2]# mdadm /dev/md0 -a /dev/sdb6
mdadm: added /dev/sdb6
移除raid 5
[[email protected] mnt]# umount /mnt/t2
[[email protected] mnt]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
以上是关于Linux 独立冗余磁盘阵列介绍的主要内容,如果未能解决你的问题,请参考以下文章