概述
RAID(Redundant Arrays of Inexpensive(Independent)Disks)1988年由加利福尼亚大学伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”
独立磁盘冗余阵列: 磁盘阵列是把多个磁盘组成一个阵列, 当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。
功能
提高IO能力———磁盘并行读写
提高耐用性———磁盘冗余来实现
Raid分类及其工作原理
RAID级别
级别 | 特点 |
---|---|
Raid0 | 无容错能力 |
Raid1 | 有冗余能力 |
Raid4 | 多块数据盘异或运算值,存于专用校验盘 |
Raid5 | 有容错能力:允许最多1块磁盘损坏 |
Raid6 | 有容错能力:允许最多2块磁盘损坏 |
Raid10 | 有容错能力:每组镜像最多只能坏一块 |
Raid0介绍
特点
- 读、写性能提升;
- 可用空间:N*min(S1,S2,…)
- 无容错能力
- 最少磁盘数:2, 2
实现方式
把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。
优点
实现成本较为低廉
提高整个磁盘的性能和吞吐量
缺点
无数据冗余能力
Raid1介绍
特点
- 读性能提升、写性能略有下降;
- 可用空间:1*min(S1,S2,…)
- 有冗余能力
- 最少磁盘数:2, 2N
实现方式
把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用
优点
读性能提升
具有良好的数据冗余能力
缺点
成本高
写性能略有下降
Raid4介绍
特点
- 多块数据盘异或运算值,存于专用校验盘
实现方式
RAID4和RAID3类似,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。
优点
读写性能极大提升
对于大量的连续数据有较好的I/O能力
有容错能力
缺点
成本较高
实现RAID控制较为困难
Raid5介绍
特点
- 读、写性能提升
- 可用空间:(N-1)*min(S1,S2,…)
- 有容错能力:允许最多1块磁盘损坏
- 最少磁盘数:3, 3+
实现方式
综合了RAID 0 的条带化技术以及阵列数据冗余技术
优点
读性能有提高,块式的集体访问效率不错
数据可靠性较高
缺点
写入效率一般,存在”写”损失
控制器的设计困难
Raid6介绍
特点
- 读、写性能提升
- 可用空间:(N-2)*min(S1,S2,…)
- 有容错能力:允许最多2块磁盘损坏
- 最少磁盘数:4, 4+
实现方式
综合了RAID 0 的条带化技术以及阵列数据冗余技术,较RAID 5多了一个校验盘
优点
读性能有提高,块式的集体访问效率不错
数据可靠性较高
缺点
写入效率一般,存在”写”损失
控制器的设计困难
Raid10介绍
特点
- 读、写性能提升
- 可用空间:N*min(S1,S2,…)/2
- 有容错能力:每组镜像最多只能坏一块
- 最少磁盘数:4, 4+
实现方式
一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速的目的。
优点
每一个镜像中可以有一个磁盘出现故障而不丢失数据
提供良好的读写速度
缺点
如果镜像对中的另一个磁盘也发生故障,则会丢失整个阵列。
设备的可用容量会减少一半
软Raid的配置
创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
1.首先在虚拟机中添加三块2G硬盘
2.利用lsblk命令查看当前硬盘数量和名称
root@liuyan-virtual-machine:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 140.7M 1 loop /snap/gnome-3-26-1604/98
loop1 7:1 0 140.7M 1 loop /snap/gnome-3-26-1604/74
loop2 7:2 0 2.3M 1 loop /snap/gnome-calculator/260
loop3 7:3 0 34.6M 1 loop /snap/gtk-common-themes/818
loop4 7:4 0 13M 1 loop /snap/gnome-characters/139
loop5 7:5 0 3.7M 1 loop /snap/gnome-system-monitor/127
loop6 7:6 0 44.9M 1 loop /snap/gtk-common-themes/1440
loop7 7:7 0 14.8M 1 loop /snap/gnome-characters/399
loop8 7:8 0 160.2M 1 loop /snap/gnome-3-28-1804/116
loop9 7:9 0 956K 1 loop /snap/gnome-logs/81
loop10 7:10 0 4.2M 1 loop /snap/gnome-calculator/544
loop11 7:11 0 14.5M 1 loop /snap/gnome-logs/45
loop12 7:12 0 91.4M 1 loop /snap/core/8689
loop13 7:13 0 3.7M 1 loop /snap/gnome-system-monitor/57
loop14 7:14 0 91M 1 loop /snap/core/6350
loop15 7:15 0 54.7M 1 loop /snap/core18/1668
sda 8:0 0 50G 0 disk
└─sda1 8:1 0 50G 0 part /
sdb 8:16 0 2G 0 disk
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
从上可以看出本次所需要的磁盘就是sdb,sdc,sdd三块
3.接下来利用mdadm命令创建raid虚拟磁盘(没有mdadm命令可以安装)
root@liuyan-virtual-machine:~# mdadm -C /dev/md0 -a yes -n 2 -l 1 -x 1 /dev/sdb /dev/sdc /dev/sdd
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
注:-C表示创建,-a yes表示创建完整raid磁盘,-n磁盘数量,-l表示raid等级,-x热备磁盘数量
4.创建完毕之后利用mdadm -D命令查看虚拟磁盘创建情况
root@liuyan-virtual-machine:~# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Mar 28 19:54:48 2020
Raid Level : raid1
Array Size : 2094080 (2045.00 MiB 2144.34 MB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Mar 28 19:54:59 2020
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : liuyan-virtual-machine:0 (local to host liuyan-virtual-machine)
UUID : 85fc89d6:e1b98da0:985cdfac:cac62d8d
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 - spare /dev/sdd
5.接下来利用fdisk命令在刚刚创建的raid虚拟磁盘上创建两个分区,大小为1G
root@liuyan-virtual-machine:~# fdisk /dev/md0
Welcome to fdisk (util-linux 2.31.1).
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.
Created a new DOS disklabel with disk identifier 0xf58ba5a1.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4188159, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-4188159, default 4188159): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2):
First sector (2099200-4188159, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-4188159, default 4188159):
Created a new partition 2 of type 'Linux' and of size 1020 MiB.
Command (m for help): p
Disk /dev/md0: 2 GiB, 2144337920 bytes, 4188160 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: 0xf58ba5a1
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2048 2099199 2097152 1G 83 Linux
/dev/md0p2 2099200 4188159 2088960 1020M 83 Linux
Command (m for help):
6.分区创建完毕之后可以利用lsblk命令查看分区创建情况
root@liuyan-virtual-machine:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 140.7M 1 loop /snap/gnome-3-26-1604/98
loop1 7:1 0 140.7M 1 loop /snap/gnome-3-26-1604/74
loop2 7:2 0 2.3M 1 loop /snap/gnome-calculator/260
loop3 7:3 0 34.6M 1 loop /snap/gtk-common-themes/818
loop4 7:4 0 13M 1 loop /snap/gnome-characters/139
loop5 7:5 0 3.7M 1 loop /snap/gnome-system-monitor/127
loop6 7:6 0 44.9M 1 loop /snap/gtk-common-themes/1440
loop7 7:7 0 14.8M 1 loop /snap/gnome-characters/399
loop8 7:8 0 160.2M 1 loop /snap/gnome-3-28-1804/116
loop9 7:9 0 956K 1 loop /snap/gnome-logs/81
loop10 7:10 0 4.2M 1 loop /snap/gnome-calculator/544
loop11 7:11 0 14.5M 1 loop /snap/gnome-logs/45
loop12 7:12 0 91.4M 1 loop /snap/core/8689
loop13 7:13 0 3.7M 1 loop /snap/gnome-system-monitor/57
loop14 7:14 0 91M 1 loop /snap/core/6350
loop15 7:15 0 54.7M 1 loop /snap/core18/1668
sda 8:0 0 50G 0 disk
└─sda1 8:1 0 50G 0 part /
sdb 8:16 0 2G 0 disk
└─md0 9:0 0 2G 0 raid1
├─md0p1 259:2 0 1G 0 md
└─md0p2 259:3 0 1020M 0 md
sdc 8:32 0 2G 0 disk
└─md0 9:0 0 2G 0 raid1
├─md0p1 259:2 0 1G 0 md
└─md0p2 259:3 0 1020M 0 md
sdd 8:48 0 2G 0 disk
└─md0 9:0 0 2G 0 raid1
├─md0p1 259:2 0 1G 0 md
└─md0p2 259:3 0 1020M 0 md
sr0 11:0 1 1024M 0 rom
7.之后需要对分区进行格式化创建文件系统
root@liuyan-virtual-machine:~# mkfs.ext4 /dev/md0p1
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 3e7af287-2224-4fb6-9bba-4d89b4d27b7a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
root@liuyan-virtual-machine:~# mkfs.ext4 /dev/md0p2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 261120 4k blocks and 65280 inodes
Filesystem UUID: 42b6ac12-9be3-4618-a518-16ada2b46d93
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
8.格式化文件系统之后在root目录下创建相应的挂载点
root@liuyan-virtual-machine:~# mkdir md0p1
root@liuyan-virtual-machine:~# mkdir md0p2
root@liuyan-virtual-machine:~# ls
9.之后可利用mount命令进行手动挂载也可在/etc目录下编辑fstab文件进行开机自动挂载
root@liuyan-virtual-machine:~# cd /etc
root@liuyan-virtual-machine:/etc# vim fstab
10.在fstab文件下写入下列代码
/dev/md0p1 /root/md0p1 ext4 defaults 0 0
/dev/md0p2 /root/md0p2 ext4 defaults 0 0
最后重启查看即可
root@liuyan-virtual-machine:~# ls
md0p1 md0p2
root@liuyan-virtual-machine:~# cd md0p1
root@liuyan-virtual-machine:~/md0p1# ls
lost+found