** RAID磁盘冗余阵列**
RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
任何事物都有它的两面性。RAID技术确实具有非常好的数据冗余备份功能,但是它也相应地提高了成本支出。就像原本我们只有一个电话本,但是为了避免遗失,我们将联系人号码信息写成了两份,自然要为此多买一个电话本,这也就相应地提升了成本支出。RAID技术的设计初衷是减少因为采购硬盘设备带来的费用支出,但是与数据本身的价值相比较,现代企业更看重的则是RAID技术所具备的冗余备份机制以及带来的硬盘吞吐量的提升。也就是说,RAID不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度,所以它在绝大多数运营商或大中型企业中得以广泛部署和应用。
出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上作出权衡,制定出满足各自需求的不同方案。目前已有的RAID磁盘阵列的方案至少有十几种,而刘遄老师接下来会详细讲解RAID 0、RAID 1、RAID 5与RAID 10这4种最常见的方案。
RAID 0
RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。
2. RAID 1
RAID 1技术是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
3. RAID 5
RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷;图中parity部分存放的就是数据的奇偶校验信息,换句话说,就是RAID 5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
4. RAID 10RAID 10技术是RAID 1+RAID 0技术的一个“组合体”。如图7-4所示,RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID 5,因此当前成为广泛使用的一种存储技术。
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
mdadm -C 创建
-v 显示创建的过程
-l 指定RAID的级别是0 1 5 10
-D 查看详细信息 完成之后可以查询
-f 模拟设备损坏
-a 检测设备名称 -a yes 自动创建设备文件
-n 有几块盘
删除占用mdadm /dev/md1 --fail /dev/sdc --remove /dev/sdc
mdadm --stop /dev/md1或者/绑定的文件 删除磁盘阵列
mdadm --remove /dev/md1或者/绑定的文件 删除磁盘阵列
虚拟机模拟磁盘阵列实验 RAID 10 并切换切换RAID 5操作过程
1.先在虚拟机前设中添加4个磁盘
2.查询磁盘并使用mdadm命令添加磁盘阵列!
[root@lizhiqiang Desktop]# mdadm -Cv /dev/md/zhuxing -a yes -n 4 -l 10 /dev/sd[c-f]
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/zhuxing started.
其中 /dev/md/zhuyxing 可以更改为/dev/md[0-无限]但必须有/dev/md格式 /dev/sd[c-f]可以设置为/dev/sdc /dev/sdd /dev/sdf /dev/sde
3.格式化主磁盘,并在家目录创建文件夹以挂载主磁盘
[root@lizhiqiang Desktop]# mkfs.ext4 /dev/md/zhuxing
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
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@lizhiqiang Desktop]# cd ~
[root@lizhiqiang ~]# mkdir zhu
[root@lizhiqiang ~]# mount /dev/md/zhuxing /zhu
mount: mount point /zhu does not exist
[root@lizhiqiang ~]# mount /dev/md/zhuxing /root/zhu
其中在家目录中只写/zhu不可以挂载 只能用绝对路径挂载 显示挂载成功!
把磁盘加到启动项,并使用-D命令查看挂载分区信息
[root@lizhiqiang ~]# echo "/dev/md/zhuxing /zhu ext4 defaults 0 0" >> /etc/fstab
[root@lizhiqiang ~]# mdadm -D /dev/md/zhuxing
/dev/md/zhuxing:
Version : 1.2
Creation Time : Tue Oct 20 06:43:30 2020
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Oct 20 06:52:37 2020
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : lizhiqiang:zhuxing (local to host lizhiqiang)
UUID : 0a64eebf:9c26768e:88803e37:5ca70cdf
Events : 17
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
2 8 64 2 active sync /dev/sde
3 8 80 3 active sync /dev/sdf
RAID 10 切换RAID 5
先使用umount命令卸载磁盘,再停止使用著主磁盘占用防止浪费磁盘,成功卸载之后就可以装载RAID 5
[root@lizhiqiang Desktop]# umount /dev/md/zhuxing
[root@lizhiqiang Desktop]# mdadm --stop /zhu
mdadm: error opening /zhu: Is a directory
[root@lizhiqiang Desktop]# mdadm --stop /dev/md/zhuxing
mdadm: stopped /dev/md/zhuxing
[root@lizhiqiang Desktop]# mdadm -D /dev/md/zhuxing
mdadm: cannot open /dev/md/zhuxing: No such file or directory
装载RAID 5 使用mdadm命令并格式化,mdadm命令需要加入一个备份盘 使用-x命令
此时会提示分盘占用 用y强制使用便成功!
[root@lizhiqiang Desktop]# mdadm -Cv /dev/md/zhuxing -a yes -n 3 -l 5 -x 1 /dev/sd[c-f]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdc appears to be part of a raid array:
level=raid10 devices=4 ctime=Tue Oct 20 06:43:30 2020
mdadm: /dev/sdd appears to be part of a raid array:
level=raid10 devices=4 ctime=Tue Oct 20 06:43:30 2020
mdadm: /dev/sde appears to be part of a raid array:
level=raid10 devices=4 ctime=Tue Oct 20 06:43:30 2020
mdadm: /dev/sdf appears to be part of a raid array:
level=raid10 devices=4 ctime=Tue Oct 20 06:43:30 2020
mdadm: size set to 20954624K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/zhuxing started.
[root@lizhiqiang Desktop]# mdadm -D /dev/md/zhuxing
/dev/md/zhuxing:
Version : 1.2
Creation Time : Tue Oct 20 07:17:32 2020
Raid Level : raid5
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Oct 20 07:19:18 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : lizhiqiang:zhuxing (local to host lizhiqiang)
UUID : 19cec61b:0d1c4f49:972ba0ec:fad30b55
Events : 32
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
4 8 64 2 active sync /dev/sde
3 8 80 - spare /dev/sdf
格式化主磁盘并挂载主磁盘接入启动项,RAID 5安装成功
[root@lizhiqiang Desktop]# mkfs.ext4 /dev/md/zhuxing
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
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@lizhiqiang Desktop]# mount /dev/md/zhuxing /zhu
[root@lizhiqiang Desktop]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_lizhiqiang-root 18G 3.5G 15G 20% /
devtmpfs 985M 0 985M 0% /dev
tmpfs 994M 140K 994M 1% /dev/shm
tmpfs 994M 8.9M 986M 1% /run
tmpfs 994M 0 994M 0% /sys/fs/cgroup
/dev/sdb1 2.0G 33M 2.0G 2% /opo
/dev/sda1 497M 125M 373M 26% /boot
/dev/md127 40G 49M 38G 1% /zhu
[root@lizhiqiang Desktop]# echo "/dev/md/zhuxing /zhu ext4 defaults 0 0" >> /etc/fstab
[root@lizhiqiang Desktop]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_lizhiqiang-root 18G 3.5G 15G 20% /
devtmpfs 985M 0 985M 0% /dev
tmpfs 994M 140K 994M 1% /dev/shm
tmpfs 994M 8.9M 986M 1% /run
tmpfs 994M 0 994M 0% /sys/fs/cgroup
/dev/sdb1 2.0G 33M 2.0G 2% /opo
/dev/sda1 497M 125M 373M 26% /boot
/dev/md127 40G 49M 38G 1% /zhu
操作成功!
** 损坏磁盘阵列及修复**
在生产环境中部署RAID10磁盘阵列组目的就是为了提高存储设备的IO读写速度及数据的安全性,但因为这次是在本机电脑上模拟出来的硬盘设备所以对于读写速度的改善可能并不直观,因此刘遄老师决定给同学们讲解下RAID磁盘阵列组损坏后的处理方法,这样以后步入了运维岗位后不会因为突发事件而手忙脚乱。首先确认有一块物理硬盘设备出现损坏不能再继续正常使用后,应该使用mdadm命令来予以移除之后查看下RAID磁盘阵列组的状态已经被改变:
移除阵列中一块硬盘来模拟一块硬盘损坏。
mdadm /dev/md0 -f /dev/sdb #把/dev/sdb从磁盘阵列/dev/md0中移除
mdadm -D /dev/md0 #查看磁盘这列/dev/md0详细信息,发现/dev/sdb状态从active变为faulty
umount /RAID #先重启系统,卸载/RAID目录
mdadm /dev/md0 -a /dev/sdb #把新硬盘添加到RAID磁盘阵列中
mdadm -D /dev/md0 #查看磁盘阵列/dev/md0详细信息,/dev/sdb正在 spare rebuilding,然后变回active
mount -a #重新挂载
磁盘阵列+备份盘
部署RAID 5 磁盘阵列时,至少需要用3块硬盘,还需要再加一块备份硬盘。
还原虚拟机,部署RAID 5 + 1备份盘 。
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e] #用3块硬盘创建RAID 5磁盘阵列,再用1块作为备份盘
mdadm -D /dev/md0 #查看磁盘阵列详细信息,显示3个盘为actvie,1个盘为spare,RAID类型为RAID 5
mkfs.ext4 /dev/md0
echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab #往/etc/fstab文件追加挂载信息,以实现永久挂载
mkdir /RAID
mount -a
mdadm /dev/md0 -f /dev/sdb #故意移除RAID 5阵列中的其中一个盘(active的盘)
mdadm -D /dev/md0 #再查看磁盘阵列/dev/md0详细信息,显示备份盘自动定提上去并开始数据同步(spare rebuilding)。