RAID磁盘阵列详解与RAID组的创建
RAID磁盘阵列详解
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),提高了硬盘的读写性能和数据安全性。根据不同的组合方式可以分为不同的RAID级别。
RAID 0
无差错校验的分条RAID,不提供数据保护,以连续位或字节为单位进行数据分割,将数据分段存储于各个硬盘中并进行读/写数据,因此有很高的数据传输率,但它没有数据冗余,所以不能应用于数据安全性要求高的场合。
RAID 1
镜像结构的RAID,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
RAID 5
分布式奇偶校验码的独立硬盘结构,N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有一份校验数据,共N份数据在N块盘上循环均衡存储。
N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高。
磁盘利用率为(N-1)/N容量,相当于一块磁盘的容量空间用于存储奇偶校验信息。
可靠性高,允许坏1块盘,不影响所有数据。
RAID 6
RAID 6采用双重校验技术,在RAID 5的技术上增加了第二个独立的奇偶校验信息块,两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用,进一步加强了对数据的保护。
N(N>=4)块盘组成阵列,(N-2)/N容量 (相当于2块磁盘的容量空间用于存储奇偶校验信息)。
RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此写性能较差。
RAID 10
RAID 10是RAID 1和RAID 0的结合,先做镜像,再做条带
兼顾了RAID 1的容错能力与RAID 0的条带化读写数据的优点,性能好,可靠性高。属于混合型RAID
N(偶数,N>=4)块盘两两镜像后,在组合成一个RAID 0,最多允许所有磁盘基组中的磁盘各损坏一个,但是不允许同一基组中的磁盘同时有坏的。
磁盘的利用率为N/2,
N/2块盘同时写入数据,N快盘同时读取数据
RAID 50
常见RAID级别的对比
RAID的应用场景
热备盘
RAID组的创建(软RAID)
1.yum安装mdadm
mdadm常用模式:
-
Assemble:装配模式,将原来属于一个阵列的每个块设备组装为阵列
-
Build:创建一个不需要元数据的阵列(超级块),没个设备没有元数据块
-
Create:创建一个新的阵列,每个设备都有超级块
–create == -C 创建一个新的阵列
–level == -l 设置RAID组级别
–raid-devices == -n 设置设备活动个数
–spare-devices == -x 设置备用盘的个数
–chunk == -c chunk默认64K -
Monitor:监控模式,监控RAID状态,可以实现全局热备
–follow ==-F 选择监控模式
–syslog == -y 事件日志记录
–delay == -d 设置raid轮循,默认时间60s
–test == -t 生成警告信息 -
Incremental Assembly:添加一个设备带阵列中
-
Misc:报告或者修改阵列中相关设备信息
–query==-Q 查询一个RAID或者RAID组件设备信息
–detail == -D 查看RAID组详细信息
–stop==—S 停止RAID组 -
Auto-detect:要求在linux内核启动时自动检测阵列
2.虚拟机中添加两块硬盘并进行分区
fdisk /dev/sdc
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd #改变分区类型为fd#
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdc: 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: 0xe2b54778
Device Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
3.准备完磁盘后,检查磁盘是否正确定义RAID
[root@localhost ~]# mdadm --examine /dev/sd[b-c]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 41940992 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 41940992 sectors at 2048 (type fd)
[root@localhost ~]# mdadm --examine /dev/sd[b-c]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
[root@localhost ~]#
4.创建RAID0(/dev/md0)
[root@localhost ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sd[bc]1 #mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]#
5.查看RAID组状态
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
41939968 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost ~]#
6.针对RAID组进行文件系统创建
[root@localhost ~]# mkfs -t xfs /dev/md0
7.创建挂载目录并进行永久挂载
[root@localhost ~]# mkdir /mnt/raid0
[root@localhost ~]# mount /dev/md0 /mnt/raid0/
[root@localhost ~]# df -hT
永久挂载:
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Jul 4 21:57:46 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=cce16428-f4df-48c8-96a4-1e7e68e9343b /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/md0 /mnt/raid0 xfs defaults 0 0 #添加此行#
[root@localhost ~]# mount -a #重新挂载#
8.保存RAID组配置
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid0 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=da3e0615:320a0e62:6115b620:3775dce4
devices=/dev/sdb1,/dev/sdc1
[root@localhost ~]#
9.使用RAID组
[root@localhost ~]# echo "这是一个RAID0阵列测试文件" > /mnt/raid0/test.conf