1、raid磁盘阵列
1.1、阵列介绍
简称:独立冗余磁盘阵列
概念:把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。从而提供比单个硬盘更高的存储性能和提供数据备份技术。
- RAID可以预防数据丢失;也可以支持备份操作
常见的阵列类型:
- raid0:条带化存储
- raid1:镜像存储
- raid5:
- raid10:先做镜像,在做存储
- raid01:做存储,再做镜像
1.2、raid0
- 磁盘使用率为100%
- 把多块磁盘按照一定的组合方式组合起来,行程一个新的磁盘阵列
- RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。高性能、使用率高;
- RAID 0只是单纯的提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
- RAID 0不能应用于数据安全性要求高的场合
1.3、raid1
- 提供镜像功能
- 使用率只有50%
- 有冗余功能
- 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
- 当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能
- RAID 1是磁盘阵列中单位成本最高的。但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
1.4、raid5
- 至少三块硬盘组成
- 热备实现故障修复;允许损坏一块盘
- 空间使用率 (n-1)/n
- N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有一份校验数据,共N份数据在N块盘上循环均衡存储
- N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
1.5、raid10
- N (偶数,N>=4)。块盘两两镜像后,再组合成一个RAID 0
- N/2磁盘利用率
- N/2块盘同时写入,N块盘同时读取
- 性能高、可靠性高
1.6、raid01
raid10和raid01,基本相似,顺序不同而已;
- N (偶数,N>=4)。块盘两两镜像后,再组合成一个RAID 0
- N/2磁盘利用率
- N/2块盘同时写入,N块盘同时读取
- 性能高、可靠性高
2.、raid的相关操作
实验:没法有真正的整列卡可以操作,因此都是软raid的实现
2.1、mdadm命令
作用:用于管理raid磁盘阵列信息;
语法:mdadm+选项+设备名
选项:
- -C:创建新的阵列
- -r:移除设备
- -A激活磁盘阵列
- -I:指定级别
- -s:扫描配置文件
- -x:指定磁盘的数量
- -f:指定出现故障的硬盘
- -c:指定阵列的块大小
- -a:添加到磁盘阵列
- -G:改变磁盘阵列大小
- -V:详细
- -S:停止磁盘
- -D:表示查看信息
2.2、搭建raid0实验
本次实验使用一块硬盘,进行两个分区;
- 然后使用分区充当硬盘来实现raid0
首先对硬盘进行分区
- sdb1/2/3/4
#对sdb进行分区
[root@Node1 ~]# fdisk /dev/sdb
............#重复下面操作
Command (m for help): n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
.............
Command (m for help): pDevice Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 10487807 1048576 5 Extended
制作raid0磁盘阵列
#安装mdadm命令
[root@Node1 ~]# yum -y install mdadm#使用mdadm命令执行阵列创建#-C:表示创建#-V:表示显示过程#-l:表示指定raid级别-n:指定硬盘个数
[root@Node1 ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.#查看是否创建成功
[root@Node1 ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=Node1:0 UUID=cacdff6d:ac04df7d:c5b66f5b:a30c2b49
[root@Node1 ~]# lsblk | grep sdb
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
└─sdb3 8:19 0 1K 0 part#查看raid0的详细信息
[root@Node1 ~]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Thu Jul 6 11:05:57 2023Raid Level : raid0Array Size : 4188160 (3.99 GiB 4.29 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent
..........#到这里就可以创建文件系统并且挂载使用
[root@Node1 ~]# mkfs.ext4 /dev/md0
...........
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done #创建目录-->然后挂在使用
[root@Node1 ~]# mkdir /raid0
[root@Node1 ~]# mount /dev/md0 /raid0/
#创建文件就可以使用
[root@Node1 ~]# cd /raid0/
[root@Node1 raid0]# touch aa.txt
[root@Node1 raid0]# ls
aa.txt lost+found
2.3、搭建raid1实验
搭建这个实验同样是使用一块硬盘,然后做几个分区
创建几个分区
#创建几个分区
[root@Node1 ~]# fdisk /dev/sdc
.......
Command (m for help): n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
............
Command (m for help): pDevice Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 83 Linux
/dev/sdc2 4196352 10487807 3145728 83 Linux
/dev/sdc3 10487808 18876415 4194304 83 Linux
/dev/sdc4 18876416 41943039 11533312 5 Extended
/dev/sdc5 18878464 23072767 2097152 83 Linux
/dev/sdc6 23074816 25171967 1048576 83 Linux
/dev/sdc7 25174016 29368319 2097152 83 Linux
创建阵列
- 创建raid1–>使用两块硬盘(/dev/sdc1 /dev/sdc2)
- 添加一个热备盘(/dev/sdc3)
- 模拟磁盘故障,自动顶替故障磁盘
- 从raid1中故障盘移走
- 添加新的磁盘 2+1
#创建raid1-->#选项说明-C:指定新建raid-v:显示过程-l:指定raid级别-n:指定硬盘数量-x:指定热备盘
[root@Node1 ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc1 /dev/sdc2 /dev/sdc3
mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device. If you plan tostore '/boot' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90
mdadm: size set to 2094080K
mdadm: largest drive (/dev/sdc3) exceeds size (2094080K) by more than 1%
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.#查看是否创建成功
[root@Node1 ~]# lsblk | grep md1
│ └─md1 9:1 0 2G 0 raid1
│ └─md1 9:1 0 2G 0 raid1
│ └─md1 9:1 0 2G 0 raid1
............
[root@Node1 ~]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Jul 6 13:55:09 2023Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 3Persistence : Superblock is persistent#创建文件系统
[root@Node1 ~]# mkfs.xfs /dev/md1#然后创建目录-->挂载使用
[root@Node1 ~]# mkdir /raid1
[root@Node1 ~]# mount /dev/md1 /raid1
准备好测试数据
- 模拟损坏
#准备好测试数据
[root@Node1 ~]# cd /raid1
[root@Node1 ~]# cd /raid1
[root@Node1 raid1]# mkdir -p aa/bb/cc
[root@Node1 raid1]# touch aa.txt bb.txt
[root@Node1 raid1]# echo 1111111111 >> cc.txt
[root@Node1 raid1]# tree /raid1
/raid1
├── aa
│ └── bb
│ └── cc
├── aa.txt
├── bb.txt
└── cc.txt#直接模拟损坏
[root@Node1 raid1]# mdadm /dev/md1 -f /dev/sdc2
mdadm: set /dev/sdc2 faulty in /dev/md1#然后在观察磁盘
[root@Node1 raid1]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Jul 6 13:55:09 2023Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 3Persistence : Superblock is persistent
...........#这里明显已经掉了一块,备用盘已经顶替上去了Number Major Minor RaidDevice State0 8 33 0 active sync /dev/sdc12 8 35 1 active sync /dev/sdc31 8 34 - faulty /dev/sdc2#把故障的硬盘移除掉
[root@Node1 raid1]# mdadm -r /dev/md1 /dev/sdc2
mdadm: hot removed /dev/sdc2 from /dev/md1#再次查看
[root@Node1 raid1]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Jul 6 13:55:09 2023Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent
.................#然后在添加一块硬盘给它
[root@Node1 raid1]# mdadm -a /dev/md1 /dev/sdc5
mdadm: added /dev/sdc5#再次查看
[root@Node1 raid1]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Jul 6 13:55:09 2023Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 3Persistence : Superblock is persistent
...............
到这里为止,实验就成功了
- 创建raid1
- 使用到-C -v -l -n -x等等参数
- 如果使用mdadm -Dsv >> /etc/mdadm.conf:可以添加到配置文件
- -D:这个是查看磁盘整列信息
- 创建好了就要挂在使用
- 优先创建文件系统
- mkfs.xfs命令实现
- 优先创建文件系统
- 然后就模拟数据
- 移除硬盘–>查看数据
- mdadm /dev/md1 -f 指定的是哪一块硬盘损坏了
- 移除故障硬盘,然后查看热备盘是否顶替上去
- mdadm -r:移除故障硬盘
- 移除硬盘–>查看数据
- 最后就是添加新的硬盘
- mdadm -a:添加新硬盘
2.4、搭建raid5实验
实验同样是使用一块硬盘,然后创建多个分区
对硬盘进行分区
#对硬盘进行分区
[root@Node1 ~]# fdisk /dev/sdd
.....
Command (m for help): N
Partition type:p primary (2 primary, 0 extended, 2 free)e extended
Select (default p):
Using default response p
Partition number (3,4, default 3):
First sector (6293504-41943039, default 6293504):
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-41943039, default 41943039): +1G
Partition 3 of type Linux and of size 1 GiB is set
.................
Command (m for help): pDisk /dev/sdd: 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: 0x8991c938Device Boot Start End Blocks Id System
/dev/sdd1 2048 2099199 1048576 83 Linux
/dev/sdd2 2099200 6293503 2097152 83 Linux
/dev/sdd3 6293504 8390655 1048576 83 Linux
/dev/sdd4 8390656 41943039 16776192 5 Extended
/dev/sdd5 8392704 12587007 2097152 83 Linux
/dev/sdd6 12589056 16783359 2097152 83 Linux
/dev/sdd7 16785408 20979711 2097152 83 Linux
/dev/sdd8 20981760 25176063 2097152 83 Linux
创建raid5阵列
#创建raid5#选项说明-C:新建-v:显示过程-l:指定raid级别-n:指定硬盘数-x:表示热备盘-c:指定块大小
[root@Node1 ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c 32 /dev/sdd{1..3} /dev/sdd6
................
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.#然后查看raid5的信息
[root@Node1 ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Thu Jul 6 14:17:30 2023Raid Level : raid5Array Size : 2093056 (2044.00 MiB 2143.29 MB)Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistent
...............#可以停止raid5,然后重新激活raid5#停止raid5
[root@Node1 ~]# mdadm -S /dev/md5
mdadm: stopped /dev/md5#查看状态
[root@Node1 ~]# mdadm -D /dev/md5
mdadm: cannot open /dev/md5: No such file or directory#重新激活raid5
[root@Node1 ~]# mdadm -As
mdadm: /dev/md/5 has been started with 3 drives and 1 spare.
mdadm: Found some drive for an array that is already active: /dev/md1
mdadm: giving up.
mdadm: Found some drive for an array that is already active: /dev/md1
mdadm: giving up.#然后在查看
[root@Node1 ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Thu Jul 6 14:17:30 2023Raid Level : raid5Array Size : 2093056 (2044.00 MiB 2143.29 MB)Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistent
如果想要拓展raid5阵列
- 使用到的参数就是-G
[root@Node1 ~]# mdadm -G /dev/md5 -n 4 -c32
[root@Node1 ~]# mdadm -Ds > /etc/mdadm.conf#然后在查看一下状态
[root@Node1 ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Thu Jul 6 14:17:30 2023Raid Level : raid5Array Size : 3139584 (2.99 GiB 3.21 GB)Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistent
.............
到这里实验结束
- 停止阵列:-S选项
- 激活阵列:-A
- 拓展阵列:-G