RAID磁盘整列方案至少有几十种,一下讲当今最流行的几种
raid 0,raid 1 ,raid 5 ,raid 10
1.raid 0
RAID 0 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0 技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。数据被分别写入到不同的硬盘设备中,即 disk1 disk2 硬盘设备会分别保存数据资料,最终实现提升读取、写入速度的效果。
简单的说就是(1+1=2) 两块硬盘和到一块
2.raid 1
尽管 RAID 0 技术提升了硬盘设备的读写速度,但是它是将数据依次写入到各个物理硬盘中,也就是说,它的数据是分开存的,其中任何一块硬盘发生故障都会损坏整个系统的数据。因此,如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到 RAID 1 技术了。在RAID 1 技术示意图中可以看到,它是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
一块存数据一块备份,利用率只有50%
3.raid 5
RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘中。RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷;parity 部分存放的就是数据的奇偶校验信息,换句话说,就是 RAID 5 技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID 这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
4.raid 10
鉴于 RAID 5 技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定
的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使
用 RAID 10 技术。
顾名思义,RAID 10 技术是 RAID 1+RAID 0 技术的一个“组合体”。RAID 10 技术需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏 50%的硬盘设备而不丢失数据。由于 RAID 10 技术继承了 RAID 0 的高读写速度和 RAID1 的数据安全性,在不考虑成本的情况下 RAID 10 的性能都超过了 RAID 5,因此当前成为广泛使用的一种存储技术。
最少硬盘 最大容量 可用容量 读取性能 写入性能 安全性 目的 应用产业 | |
---|---|
raid0 | 2 0 n n n 一个硬盘异常,全部硬盘都会异常 追求最大容量、速度视频剪接缓存用途 |
raid1 | 2 n-1 1 n 1 最高,一个正常即可 追求最大安全性个人、企业备份 |
raid5 | 3 1 n-1 n-1 n-1 高 追求最大容量、最小预算个人、企业备份 |
raid10 | 4 n/2 n/2 n/2 n/2 安全性高,但在同一个子组群中不能出现两颗毁损硬盘 综合RAID 0/1优点,理论速度较快大型数据库、服务器 |
n:代表硬盘总数
2部署磁盘阵列
mdadm命令的常用参数和作用
参数 | 作用 |
---|---|
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定 RAID 级别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止 RAID 磁盘阵列 |
接下来使用mdadm命令创建RAID 5 命名 “/dev/md0”
先添加三块硬盘 sdb sdc sdd 大小为10G
开机
查看新添加的硬盘
[root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 20G 0 part /
└─sda3 8:3 0 4G 0 part [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sdd 8:48 0 10G 0 disk
sr0 11:0 1 4.2G 0 rom /mnt
将三块硬盘合并成一块md0
[root@web ~]# mdadm -Cv /dev/md0 -a yes -n 3 -l 5 /dev/sdb /dev/sdc /dev/sdd
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10477568K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
将制作好的RAID磁盘阵列格式化为ext4格式
[root@web ~]# mkfs.ext4 /dev/md0
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
1310720 inodes, 5238784 blocks
261939 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 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, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
创建挂载点然后把硬盘设备进行挂载操作 ,挂载之后查看磁盘空间
[root@web ~]# mkdir /RAID
[root@web ~]# mount /dev/md0 /RAID/
[root@web ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 20G 980M 18G 6% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.7M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
/dev/sda1 ext4 190M 88M 89M 50% /boot
tmpfs tmpfs 394M 0 394M 0% /run/user/0
/dev/md0 ext4 20G 45M 19G 1% /RAID
可以看到md0可用空间是20G,也就是50%的利用率
查看/dev/md0 磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久
生效。
[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 24 15:53:49 2018
Raid Level : raid5
Array Size : 20955136 (19.98 GiB 21.46 GB)
Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
[root@web ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
下面我们模拟sdb硬盘损坏,看一看数据能否恢复
明显可以看到sdb硬盘已经不能使用了
然后给虚拟机加一块新的硬盘看数据能否恢复
数据恢复97%
数据恢复99%