目录
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 [2] :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID
优点:
a. 提高传输速率。
b. 通过数据校验提供容错功能。
缺点
c. RAID0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
d. RAID1磁盘的利用率最高只能达到50%(使用两块盘的情况下),是所有RAID级别中最低的。
e. RAID0+1以理解为是RAID 0和RAID 1的折中方案。RAID 0+1可以为系统提供数据安全保障,但保障程度要比 Mirror低而磁盘空间利用率要比Mirror高。
命令
创建raid 0
首先使用lsblk命令查看当前虚拟机的硬盘情况,命令如下(如果vdb已经挂载需要先卸载):
[root@bcc-onlinestu02-553554-5hiap ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 20G 0 disk /mnt
[root@bcc-onlinestu02-553554-5hiap ~]# umount /mnt // 取消挂载
可以看见,当前存在一个硬盘vdb,大小为20 GB,接下来使用这个硬盘完成实验。
利用fdisk磁盘分区命令,对vdb这块磁盘进行分区操作,新建2个磁盘分区,每个大小为5 GB。用这2个5 GB的分区来模拟1个10 GB的硬盘。
[root@bcc-onlinestu02-553554-5hiap ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x04dc8119.
Command (m for help): n //输入n为新建一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //设置分区类型,p代表创建主分区,e代表扩展分区
Partition number (1-4, default 1): 1 //设置分区号,可默认直接按Enter键
First sector (2048-41943039, default 2048): 2048 //设置起始字节数,可默认直接按Enter键
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G //设置分区大小
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (10487808-41943039, default 10487808): 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +5G
Partition 2 of type Linux and of size 5 GiB is set
Command (m for help): p //此处为查看创建后的分区
Disk /dev/vdb: 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: 0x04dc8119
Device Boot Start End Blocks Id System
/dev/vdb1 2048 10487807 5242880 83 Linux
/dev/vdb2 10487808 20973567 5242880 83 Linux
Command (m for help): w //对创建后的分区进行保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
创建一个RAID 0设备:这里使用/dev/vdb1和/dev/vdb2做实验。
将/dev/vdb1和/dev/vdb2建立RAID等级为RAID 0的md0(设备名)。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/vdb1 /dev/vdb2
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@bcc-onlinestu02-553554-5hiap ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 vdb2[1] vdb1[0]
10475520 blocks super 1.2 512k chunks
unused devices: <none>
查看RAID详细信息,命令及返回结果如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=bcc-onlinestu02-553554-5hiap:0 UUID=f4f9af83:15a773a4:6f0c9727:09d145ce
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Mar 9 10:43:06 2020
Raid Level : raid0
Array Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Mar 9 10:43:06 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : unknown
Name : bcc-onlinestu02-553554-5hiap:0 (local to host bcc-onlinestu02-553554-5hiap)
UUID : f4f9af83:15a773a4:6f0c9727:09d145ce
Events : 0
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
生成配置文件mdadm.conf,命令如下。
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
对创建的RAID进行文件系统创建并挂载,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mkfs.xfs -f /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=256 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=2618880, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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@bcc-onlinestu02-553554-5hiap ~]# mkdir /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mount /dev/md0 /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# df -Th /raid0/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 10G 33M 10G 1% /raid0
删除RAID操作,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# umount /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@bcc-onlinestu02-553554-5hiap ~]# rm -rf /etc/mdadm.conf
[root@bcc-onlinestu02-553554-5hiap ~]# rm -rf /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm --zero-superblock /dev/vdb1
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm --zero-superblock /dev/vdb2
删除完成后进行查看,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 20G 0 disk
├─vdb1 253:17 0 5G 0 part //vdb1、vdb2分区以还原成制作raid前状态
└─vdb2 253:18 0 5G 0 part
运维操作
raid 5运维操作
利用fdisk磁盘分区命令,继续对vdb这块磁盘剩余空间进行分区操作,新建2个磁盘主分区,每个大小为5 GB。用3个5 GB的分区来模拟raid 5,加一个热备盘。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/vdb1 /dev/vdb2 /dev/vdb3 --spare-devices=1 /dev/vdb4
//创建raid5时需要有大概4分钟左右的过程,此过程可使用cat /proc/mdstat来查询
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 5236736K
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@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:09:07 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Rebuild Status : 31% complete
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 6
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
4 253 19 2 spare rebuilding /dev/vdb3
3 253 20 - spare /dev/vdb4
模拟硬盘故障
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -f /dev/md5 /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md5
//模拟磁盘故障时重建需要有大概4分钟左右的过程,此过程可使用cat /proc/mdstat来查询
查看RAID的详细信息,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:12:20 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Rebuild Status : 23% complete
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 23
Number Major Minor RaidDevice State
3 253 20 0 spare rebuilding /dev/vdb4
1 253 18 1 active sync /dev/vdb2
4 253 19 2 active sync /dev/vdb3
0 253 17 - faulty /dev/vdb1
从以上结果可以发现原来的热备盘/dev/vdb4正在参与RAID 5的重建,而原来的/dev/vdb1变成了坏盘。
热移除故障盘,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -r /dev/md5 /dev/vdb1
mdadm: hot removed /dev/vdb1 from /dev/md5
查看RAID的详细信息,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:14:44 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 38
Number Major Minor RaidDevice State
3 253 20 0 active sync /dev/vdb4
1 253 18 1 active sync /dev/vdb2
4 253 19 2 active sync /dev/vdb3
格式化RAID并进行挂载,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mkfs.ext4 /dev/md5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label= OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
655360 inodes, 2618368 blocks
130918 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@bcc-onlinestu02-553554-5hiap ~]# mount /dev/md5 /mnt/
[root@bcc-onlinestu02-553554-5hiap ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 11G 30G 26% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 17M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/md5 9.8G 37M 9.2G 1% /mnt