1.RAID概述
RAID,( Redundant Arrays of Independent Disks ),中文为廉价冗余磁盘阵列。
2.RAID定义
多个独立的物理硬盘按照不同的方式组合起来形成一个虚拟磁盘。而实际当中我们看到的是两块和一个聚合。 一般正在工作环境中一个磁阵连接也是至少有 两根线,实现多的,所以实际上我们看到的是两块磁盘,需要做一次聚合。
3.RAID级别
根据磁盘的不同组合方式形成不能的级别,但是raid级别没有好与坏,只是组合方式不同性能不同选择方式也不同。
有:0 1 2 3 4 5 6 7 10 01 50
#:10指的就是raid 1 和 raid 0 组成磁盘阵列,01和50同理;
4.RAID优势
4.1.容量和管理方式上的优势
易于灵活的进行容量扩展,’虚拟化‘使可能管理性极大的增强
4.2.性能上优势
磁盘分块技术 带来性能的提高
4.3.raid的可靠性和可用性
通过冗余技术和热备、热换提升了可靠性
5.raid详解:
raid 0 :
通过条带的方式将数据均匀的写到磁盘,读取也是均匀的读取,简单来说就是raid 0 均匀的对磁盘进行读写数据;
Radi 0 :至少需要两块磁盘 | |
优点 | 读写效率非常高,不校验,配置简单; |
缺点 | 没有冗余,容错率低,只要一块磁盘损坏就导致所有磁盘不可用 |
使用场景 | 对性能要求高,对安全性,可靠性要求不高的场景; |
raid 0 操作演示:
(1):添加硬盘:
#:此处我选择添加了4块5G的硬盘,只是为了看到效果,没给太大,原理上是虚拟磁盘,不会占用物理磁盘,所以可以给大一些;
(2):重启进行磁盘配置,查看磁盘是否添加成功:
[root@131 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 7.9G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 2G 0 part /boot
└─nvme0n1p2 259:2 0 18G 0 part
├─rhel-root 253:0 0 15G 0 lvm /
└─rhel-swap 253:1 0 3G 0 lvm [SWAP]
nvme0n2 259:3 0 5G 0 disk
nvme0n3 259:4 0 5G 0 disk
nvme0n4 259:5 0 5G 0 disk
nvme0n5 259:6 0 5G 0 disk
[root@131 ~]#
(3):配置磁盘类型为fd,四块新加磁盘同样操作即可:操作完成之后再通过 fdisk -l 验证:
[root@131 ~]# fdisk /dev/nvme0n2
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759):
Created a new partition 1 of type 'Linux' and of size 5 GiB.
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10485759 10483712 5G fd Linux raid autodetect
Command (m for help):
// 验证
[root@131 ~]# fdisk -l
Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0x1d521fc5
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10485759 10483712 5G fd Linux raid autodetect
Disk /dev/nvme0n3: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0xcd040ac1
Device Boot Start End Sectors Size Id Type
/dev/nvme0n3p1 2048 10485759 10483712 5G fd Linux raid autodetect
Disk /dev/nvme0n4: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0x9848f042
Device Boot Start End Sectors Size Id Type
/dev/nvme0n4p1 2048 10485759 10483712 5G fd Linux raid autodetect
Disk /dev/nvme0n5: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0x19ee3e48
Device Boot Start End Sectors Size Id Type
/dev/nvme0n5p1 2048 10485759 10483712 5G fd Linux raid autodetect
[root@131 ~]#
(4):安装mdadm管理raid,默认已经安装;
[root@131 ~]# yum install -y mdadm
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Repository 'BaseOS' is missing name in configuration, using id.
Repository 'AppStream' is missing name in configuration, using id.
Waiting for process with pid 2274 to finish.
Last metadata expiration check: 0:00:01 ago on Tue 28 Mar 2023 11:22:15 AM CST.
Package mdadm-4.1-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@131 ~]#
mdadm常用命令:
-D 显示RAID设备的详细信息 |
-A 加入一个以前定义的RAID |
-B 创建一个没有超级块的RAID设备 |
-F 选项监控模式 |
-G 更改RAID设备的大小或形态 |
-I 添加设备到RAID中,或从RAID中删除设备 |
-z 组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量 |
-s 扫描配置文件或/proc/mdstat以搜寻丢失的信息 |
-C 把RAID信息写入每个成员超级块中 |
-v 显示RAID创建过程中的详细信息 |
-B 不把RAID信息写入每个成员的超级块中 |
-l 指定RAID的级别 |
-n 指定RAID中活动设备的数目 |
-f 把RAID成员列为有问题,以便移除该成员 |
-r 把RAID成员移出RAID设备 |
-a 向RAID设备中添加一个成员 |
--re-add 把最近移除的RAID成员重新添加到RAID设备中 |
-E 查看RAID成员详细信息 |
-c 创建一个RAID设备时默认为512kb |
-R 开始部分组装RAID |
-S 停用RAID设备,释放所有资源 |
-x 指定初始RAID设备的备用成员的数量 |
--zero-superblock 如果RAID设备包含一个有效的超级块,该块使用零覆盖 |
通过mdadm命令查看是否做raid:
// 查看磁盘是否做了raid
[root@131 ~]# mdadm -E /dev/nvme0n[0-9]p1
mdadm: No md superblock detected on /dev/nvme0n1p1.
mdadm: No md superblock detected on /dev/nvme0n2p1.
mdadm: No md superblock detected on /dev/nvme0n3p1.
mdadm: No md superblock detected on /dev/nvme0n4p1.
mdadm: No md superblock detected on /dev/nvme0n5p1.
[root@131 ~]#
//创建raid 0磁盘组,由于raid 0没有冗余,所以不用添加备份选项 -xNum /dev/...
[root@131 ~]# mdadm -C -v /dev/md0 -l0 -n3 /dev/nvme0n[2-4]p1
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
//查看创建进度
[root@131 ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 nvme0n4p1[2] nvme0n3p1[1] nvme0n2p1[0]
15710208 blocks super 1.2 512k chunks
unused devices: <none>
//查看raid0信息
[root@131 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Mar 28 11:29:47 2023
Raid Level : raid0 //raid类型
Array Size : 15710208 (14.98 GiB 16.09 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Mar 28 11:29:47 2023
State : clean
Active Devices : 3 //活跃设备
Working Devices : 3 //工作设备
Failed Devices : 0 //故障设备
Spare Devices : 0 //空闲设备
Layout : -unknown-
Chunk Size : 512K
Consistency Policy : none
Name : 131:0 (local to host 131)
UUID : 0ce067ed:deea0ef8:7d1b2ac9:c4d04ef6
Events : 0
Number Major Minor RaidDevice State
0 259 8 0 active sync /dev/nvme0n2p1
1 259 7 1 active sync /dev/nvme0n3p1
2 259 10 2 active sync /dev/nvme0n4p1
[root@131 ~]#
#:到这儿raid 0就创建完成了;
(5):模拟一块磁盘故障,使用mdadm -f 选项即可完成;
#:但是在raid 0 的情况下,没有冗余,只要一块出问题就都坏掉了,所以这个命令会显示磁盘busy,除了raid 0 q其他的磁盘阵列都可以使用mdadm -f 实现,因为有冗余,有备用的磁盘,可以顶上来,处于active的状态磁盘除非认为破坏或者故障,不能通过mdadm -f 来停止;
(6):raid使用:挂载使用
[root@131 ~]# mkdir /md0
[root@131 ~]# mkfs.xfs /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=512 agcount=16, agsize=245504 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=3927552, imaxpct=25
= sunit=128 swidth=384 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@131 ~]# mount /dev/md0 /md0/
[root@131 ~]# echo /dev/md0 /md0/ xfs defaults 0 0 > /etc/fstab
[root@131 ~]# mount -a
[root@131 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 872M 0 872M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 9.4M 891M 2% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 15G 5.2G 9.9G 35% /
/dev/nvme0n1p1 2.0G 237M 1.8G 12% /boot
tmpfs 181M 1.2M 179M 1% /run/user/42
tmpfs 181M 4.0K 181M 1% /run/user/0
/dev/md0 15G 140M 15G 1% /md0
[root@131 ~]#
#:写到文件中实现永久挂载!!!
其他的raid就不做演示,操作和raid 0 y一样,只说原理;
raid 1:
至少需要两块硬盘,两块硬盘都读写相同的数据,但是有一块是做另一块的备份,只有当另一块磁盘出问题不能用才会使用备份的磁盘;所以使用率只有1/2;
Radi 1 :至少需要两块磁盘,两块都读写同样的数据,但是一块是做备份 | |
优点 | 容错率高,安全性好,可靠性强; |
缺点 | 读写性能较raid0低,成本高; |
使用场景 | 高安全性的数据存储场景; |
raid 5 :
raid 5 至少需要三块磁盘,就类似1 + 2 = 3 ,你如果不知道 2 怎么来的,你可以用3 - 1 得出,所以raid 5 最多可以损坏一块硬盘;可用的空间=磁盘数-1
Radi 5 :至少需要三块磁盘,最多允许坏一块磁盘 | |
优点 | 读性能较好,写性能一般,数据安全性较好,空间利用率高; |
缺点 | 构建比较复杂,只允许坏一块磁盘; |
使用场景 | 高安全性且对性能有要求的数据存储场景; |
raid 10:
至少需要四块磁盘,因为两端做raid 0 ,raid 0 至少需要两块磁盘,而 raid 1 至少需要两组磁盘,所以至少需要四块磁盘,可以同时坏两块磁盘,因为外层是raid 1,只能是一边全坏,另一边备份;
Radi 01 :至少需要四块磁盘,最多允许坏两块磁盘 | |
优点 | 读写性能好,安全性高; |
缺点 | 成本高; |
使用场景 | 高安全性且对性能有高要求的数据存储场景; |
raid 01:
外层采用raid 0 ,提高读写效率,内层采用raid 1,提高安全性,允许坏一半磁盘,但是不能是一边的,因为内层是raid 1;
Radi 10 :至少需要四块磁盘,最多允许坏一半磁盘,不能是一边的; | |
优点 | 读写性能好,安全性高; |
缺点 | 都坏在一边就麻烦了; |
使用场景 | 高安全性且对性能有高要求的数据存储场景; |