Linux系统磁盘阵列raid
一. raid磁盘阵列概述raid(Redundant Array of Independent Disk),独立冗余磁盘阵列。其方式是将多块独立的磁盘按照不同的方式组合成一个逻辑磁盘,从而提高存储容量,提升存储性能或提供数据备份功能。
raid分为软件raid和硬件raid两种。软件raid可以实现硬件raid相同的功能,但是没有独立的硬件控制功能,性能不如硬件raid,但是实现简单。硬件raid有独立的硬件设备。硬件raid通常需要raid卡,raid卡本身会有独立的控制件和内存,不占用系统资源,效率高,性能强。市面上很多主板已集成raid卡。
二、raid级别2.1 raid0(不含效验与冗余的条带存储)
多块磁盘组合为raid0后,数据被分割并分别写入多块硬盘,所以能最大的提升存储性能和存储空间,但无法容错,raid0至少需要2块硬盘,不要求磁盘容量相同。
优点:磁盘使用率100%,磁盘容量为所有磁盘总容量。
缺点:无校验与备份,有一块磁盘损坏,即磁盘中的任意一个数块损坏就将导致整个文件无法读取。
如下图:数据data1与data2被分别写入两块不同磁盘。其他依此类推。
2.2 raid1(不含校验的镜像存储)
多块磁盘组合为raid1后,数据被同时写入每块硬盘,raid1至少需要2块硬盘,该级别的raid1只要有一块磁盘可用,即可正常工作,该级别的阵列安全性最好,磁盘利用率最低,要求磁盘容量相同。
优点:安全性最高。
缺点:写入速率低,磁盘使用率低。如果使用两块磁盘,容量为一块大小。资源浪费,成本高。总容量n/2*s。(n为磁盘数量;s为磁盘大小).
如下图:数据data1同时写入两块磁盘。其他数据依此类推。
2.3 raid2(位级别的效验式条带存储)
多块磁盘组合为raid2后,数据以位(bit)单位同步式分别存储在不同硬盘上,并采用海明码(海明码是一种具有纠错功能的校验码)对数据进行校验与恢复。至少需要3块硬盘。要求磁盘大小相同,总容量为(n-1)*s(n为磁盘数量;s为磁盘大小)。
优点:允许3块盘中,任何一块损坏,可通过未损坏的2块磁盘数据进行运算还原已损坏磁盘的数据。对大数据读写性能较高。
缺点:对少量数据读写性能较差。
如下图所示:有数据存入raid2,该数据被分为数据位,分别同步写入不同的磁盘,数据data1、data2进行海明码运算后写入校验盘,其他数据以此类。
2.4 raid5(数据块级别的分布式校验条带存储)
多块磁盘组合为raid5后,数据以块(block)单位同步式分别存储在不同硬盘上,并采用海明码(海明码是一种具有纠错功能的校验码)对数据进行校验与恢复,其海明码被写入不同的磁盘。至少需要3块硬盘。要求磁盘大小相同,总容量为(n-1)*s(n为磁盘数量;s为磁盘大小)。
优点:容错,允许坏一块。
2.5 raid6
raid6是再raid5的基础上为了加强数据保护而设计的。可允许损坏2块硬盘。总容量为(n-2)*s(n为磁盘数量;s为磁盘大小).
2.6 raid10(镜像与条带存储)
raid10是有raid0与raid1结合而成,raid10既有raid0的快速高效,同时有raid1的数据安全。raid10至少需要4块硬盘.raid10通常有两种组合方式,raid0+1或raid1+0.raid1+0,首先使用4块硬盘组合成两个独立的raid1,然后将两个raid1组合为1个raid0.
优点:兼顾安全性和速度,允许2块故障。
缺点:raid10磁盘利用率低,只有50%。
如下图:raid1+0方式
三、软raid创建与管理
3.1 Mdadm命令详解
madam是用于创建和管理软件RAID的命令,Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给我们提供一个应用程序的工具mdadm。
详细参数:
-a:检测设备名称
-n:指定设备数量
-l:指定RAID级别
-C:创建
-v:显示过程
-f:模拟设备损坏
-r:移除设备
-Q:查看摘要信息
-D:查看详细信息
-S:停止RAID磁盘阵列
-x:热备盘个数
3.2创建raid5(3块硬盘)
Linux中创建软raid,可以将硬盘直接进行raid创建,也可以对硬盘进行分区,指定不同的分区创建不同级别的raid。
(1)安装mdadm命令
[root@localhost ~]# yum -y install mdadm
(2)查看磁盘信息(fdisk -l)
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd
[root@localhost ~]# partprobe /dev/sd*
(3)创建raid5(无备用盘)
[root@localhost ~]# mdadm -Cv /dev/md0 -l 5 -n 3 /dev/sd{b,c,d}
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 5238784K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]#
有备用盘创建:
[root@localhost ~]# mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}
(4)查看已创建的raid5信息
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Mar 21 20:45:38 2020
Raid Level : raid5
Array Size : 10477568 (9.99 GiB 10.73 GB)
Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Mar 21 20:46:05 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c6fa3589:6ab1babb:213f4b64:a5c5f1c7
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
[root@localhost ~]#
(5)格式化raid5
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2619392, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
(6)挂载
[root@localhost ~]# mkdir /tmp/test
[root@localhost ~]# mount /dev/md0 /tmp/test
(7)模拟磁盘损坏
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Mar 21 20:45:38 2020
Raid Level : raid5
Array Size : 10477568 (9.99 GiB 10.73 GB)
Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Mar 21 20:59:03 2020
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c6fa3589:6ab1babb:213f4b64:a5c5f1c7
Events : 20
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
[root@localhost ~]#
(8)raid性能测试
radi5写入模拟:进入挂载目录/tmp/test
[root@localhost test]# time dd if=/dev/zero of=text bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,3.92296 秒,267 MB/秒
real 0m3.991s
user 0m0.000s
sys 0m2.492s
[root@localhost test]#
正常硬盘测试:
[root@localhost tmp]# time dd if=/dev/zero of=text bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,18.7634 秒,55.9 MB/秒
real 0m19.160s
user 0m0.010s
sys 0m1.910s
[root@localhost tmp]#
公众号: