Raid(Redundant Arrays of Independent Disks)独立磁盘冗余阵列
一、raid磁盘阵列介绍
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。另外它还能够利用同位检查的功能,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。
RAID 技术作为高性能、高可靠的存储技术,已经得到了非常广泛的应用。 RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。
二、Raid分类
目前RAID主要分为软RAID、硬RAID以及软硬混合RAID三种raid类型。软RAID所有功能都是由操作系统和CPU来完成,目前的操作系统中基本上有含有软raid支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。目前,操作系统支持的最常见的RAID等级有RAID0、RAID1、RAID10、RAID01和RAID5等,他没有独立的RAID控制/处理芯片和I/O处理芯片,效率低下,软RAID由操作系统来实现,因此系统所在分区不能作为RAID的逻辑成员磁盘,软RAID不能保护系统盘,对于部分操作系统而言,RAID的配置信息保存在系统信息中,而不是单独以文件形式保存在磁盘上。这样当系统意外崩溃而需要重新安装时,RAID信息就会丢失。
硬RAID拥有自己的RAID控制处理与I/O处理芯片,甚至还有阵列缓冲,对CPU的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬RAID通常都支持热交换技术,在系统运行下更换故障磁盘。
硬RAID包含RAID卡和主板上集成的RAID芯片,服务器平台一般都会采用RAID卡。RAID 卡由RAID 核心处理芯片(RAID 卡上的CPU)、端口、缓存和电池4部分组成。其中,端口是指 RAID 卡支持的磁盘接口类型,如SCSI 、 SATA 、 SAS 等接口。
Raid技术是一种工业技术标准,每个厂商对于Raid级别的定义也是不同的。在之前的某些文章中定义了RAID1 ~ RAID5原始RAID等级,后来又扩展了RAID0和RAID6。近年来,存储厂商不断推出诸如RAID7、RAID10/01、RAID50、RAID53、RAID100等RAID等级,但这些并无统一的标准。目前业界公认的标准是RAID0 ~ RAID5,除RAID2外的四个等级被定为工业标准,而在实际应用领域中使用最多的RAID等级是RAID0、RAID1、RAID3、RAID5、RAID6 和RAID10。
三、等级介绍
1. raid0(无冗错的数据条带)
RAID0 是一种简单的、无数据校验的数据条带化技术。实际意义上来说它不是一种真正的 RAID,因为它并不提供任何形式的冗余策略。RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。
RAID0成本比较低但是具有高读写性能优势,存储空间利用率能够达到百分之百等其他优点,但是它不提供数据冗余保护,如果发生数据损坏,将无法恢复。所以RAID0一般适用于对性能要求严格但对数据安全性低要求的文件,如视频、音频存储等。
2. Raid1(无校验的相互镜像)
RAID1被称作镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘上,它的磁盘空间利用率为50%。RAID1等级在数据写入时,响应时间会有延迟,但是读数据的时候没有影响。RAID1提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1与RAID0恰好相反,是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID1拥有完全容错的能力,但实现成本比较高。RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
3. Raid5(带分散校验的数据条带)
Raid5是目前组常见的阵列等级,它的原理与RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此,RAID5不存在并发写操作时的校验盘性能的问题。另外,RAID5还具备很好的扩展性。当阵列磁盘数量增加时,并行操作量的能力也随之增长。
除此之外还有一些等级被称之为Raid组合等级也就是类似于raid01/10/00/100/30等等,但目前得到实际应用广泛的还是RAID01 和RAID10两个等级,一般来说组合实现的等级成本价格都非常的昂贵,一般只在特定的场合下进行使用。
4. raid00
简单地说,RAID00 是由多个RAID0成员组成的高级RAID0。它与RAID0之间的区别在于,RAID0阵列替换了原先的成员磁盘。可以把RAID00理解为两层条带化结构的磁盘阵列,即对条带再进行条带化。这种阵列可以提供更大的存储容量、更高的I/O性能。
5. RAID01和RAID10
一般人认为这两种阵列级别都是相同的,实际上则不然,RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像,而RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常RAID01比RAID10具有更好的容错能力,RAID01兼备了RAID0和 RAID1的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。RAID01的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。RAID01和RAID10内部都含有RAID1模式,因此整体磁盘利用率均仅为50%。
四、软Raid制作
1.创建raid0
创建raid 0
利用磁盘分区新建2个磁盘分区,每个大小为20GB。用这2个20 GB的分区来模拟1个40 GB的硬盘。
[root@localhost ~]#lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk├─sda1 8:1 0 500M 0 part /boot└─sda2 8:2 0 19.5G 0 part├─centos-root 253:0 0 17.5G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]sdb 8:16 0 20G 0 disksdc 8:32 0 20G 0 disksr0 11:0 1 4G 0 rom
配置本地YUM安装源,将提供的mdadm_yum文件夹上传至/opt目录,示例代码如下:
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[mdadm]
name=mdadm
baseurl=file:///opt/mdadm_yum/
gpgcheck=0
enabled=1
安装工具mdadm,使用已有YUM源进行安装,命令如下:
[root@localhost ~]# yum install -y mdadm
创建一个RAID 0设备:这里使用/dev/sdb1 /dev/sdb2
将/dev/sdb1 /dev/sdb2建立RAID等级为RAID 0的md0(设备名)。
[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
命令解析:
-C v:创建设备,并显示信息。
-l 0:RAID的等级为RAID 0。
-n 2:创建RAID的设备为2块。
查看系统上的RAID,命令及返回结果如下。
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc[1] sdb[0]
41908224 blocks super 1.2 512k chunks
unused devices: <none>
查看RAID详细信息,命令及返回结果如下。
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=35792eb3:51f58189:44cef502:cdcee441
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Oct 5 10:21:41 2019
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sat Oct 5 10:21:41 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : unknown
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 35792eb3:51f58189:44cef502:cdcee441
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
生成配置文件mdadm.conf,命令如下。
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
对创建的RAID进行文件系统创建并挂载,命令如下。
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=256 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid0/
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -Th /raid0/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 40G 33M 40G 1% /raid0
设置成开机自动挂载,命令如下。
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="8eafdcb6-d46a-430a-8004-d58a68dc0751" TYPE="xfs"
[root@localhost ~]# echo "UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0" >> /etc/fstab
删除RAID操作,命令如下:
[root@localhost ~]# umount /raid0/
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /etc/mdadm.conf
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sdb[1-2]
[root@localhost ~]# vi /etc/fstab
UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0 //删除此行
2.创建Raid5
(1)raid 5运维操作
利用磁盘分区新建4个磁盘分区,每个大小为5 GB。用3个5GB的分区来模拟raid 5,加一个热备盘。
[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sdb[1-3] --spare-devices=1 /dev/sdb4
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看RAID的详细信息,命令如下。
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sat Oct 5 13:17:41 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat Oct 5 13:19:27 2019
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : f51467bd:1199242b:bcb73c7c:160d523a
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
(2)模拟硬盘故障
[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5
查看RAID的详细信息,命令如下。
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sat Oct 5 13:17:41 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat Oct 5 13:28:54 2019
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : f51467bd:1199242b:bcb73c7c:160d523a
Events : 37
Number Major Minor RaidDevice State
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
从以上结果可以发现原来的热备盘/dev/sde正在参与RAID 5的重建,而原来的/dev/sdb变成了坏盘。
热移除故障盘,命令如下:
[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md5
查看RAID的详细信息,命令如下:
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sat Oct 5 13:17:41 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Oct 5 13:35:54 2019
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : f51467bd:1199242b:bcb73c7c:160d523a
Events : 38
Number Major Minor RaidDevice State
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
格式化RAID并进行挂载,命令如下:
[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=256 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md5 /mnt/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 906M 17G 6% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.6M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/md5 40G 33M 40G 1% /mnt
