末学者笔记--Linux中RAID磁盘阵列及centos7启动过程
《一》RAID概念
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。 磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据。
注:RAID可以预防数据丢失,但是它并不能完全保证你的数据不会丢失,所以大家使用RAID的同时还是注意备份重要的数据
RAID的创建有两种方式:
软RAID(通过操作系统软件来实现)和硬RAID(使用硬件阵列卡);了解raid1、raid5和raid10。不过随着云的高速发展,供应商一般可以把硬件问题解决掉。
RAID几种常见的类型
RAID类型 |
最低磁盘个数 |
空间利用率 |
各自的优缺点 |
|
级 别 |
说 明 |
|||
RAID0 |
条带卷 |
2+ |
100% |
读写速度快,不容错 |
RAID1 |
镜像卷 |
2 |
50% |
读写速度一般,容错 |
RAID5 |
带奇偶校验的条带卷 |
3+ |
(n-1)/n |
读写速度快,容错,允许坏一块盘 |
RAID10 |
RAID1的安全+RAID0的高速 |
4 |
50% |
读写速度快,容错 |
RAID基本思想:把好几块硬盘通过一定组合方式把它组合起来,成为一个新的硬盘阵列组,从而使它能够达到高性能硬盘的要求
一.RAID有三个关键技术:
镜像:提供了数据的安全性;
条带(块大小也可以说是条带的粒度),它的存在的就是提供了数据并发性
数据的校验:提供了数据的安全
二.Raid相对于单个磁盘优点:
RAID-0的工作原理:
条带 (strping),也是我们最早出现的RAID模式
需磁盘数量:2块以上(大小最好相同),是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可.
特点:成本低,可以提高整个磁盘的性能。RAID 0没有提供冗余或错误修复能力,速度快.
任何一个磁盘的损坏将损坏全部数据;磁盘利用率为100%。
RAID-1:
mirroring(镜像卷),需要磁盘两块以上
原理:是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,(同步)
RAID 1 mirroring(镜像卷),至少需要两块硬盘
磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。如下图
RAID-5:
需要三块或以上硬盘,可以提供热备盘实现故障的恢复;只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将都会损坏。 空间利用率: (n-1)/n 2/3 如下图所示
奇偶校验信息的作用:
当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
扩展:异或运算
所谓的“奇偶校验”可以简单理解为二进制运算中的“异或运算”,通常用 xor 标识。
最左边的是原始数据,右边分别是三块硬盘,假设第二块硬盘出了故障,通过第一块硬盘上的 1 和第三块硬盘上的 1 xor 2,就能够还原出 2。同理可以还原出 3 和 8。至于 5 xor 6 则更简单了,直接用 5 和 6 运算出来即可。
一句话解释 raid 5 的数据恢复原理就是:都是用公式算出来的。
RAID-10镜像+条带
RAID 10是将镜像和条带进行两级组合的RAID级别,第一级是RAID1镜像对,第二级为RAID 0。比如我们有8块盘,它是先两两做镜像,形成了新的4块盘,然后对这4块盘做RAID0;当RAID10有一个硬盘受损其余硬盘会继续工作,这个时候受影响的硬盘只有2块
三.RAID硬盘失效处理
一般两种处理方法:热备和热插拔
1.热备:HotSpare
定义:当冗余的RAID组中某个硬盘失效时,在不干扰当前RAID系统的正常使用的情况下,用RAID系统中另外一个正常的备用硬盘自动顶替失效硬盘,及时保证RAID系统的冗余性
全局式:备用硬盘为系统中所有的冗余RAID组共享
专用式:备用硬盘为系统中某一组冗余RAID组专用
如下图所示:是一个全局热备的示例,该热备盘由系统中两个RAID组共享,可自动顶替任何一个RAID中的一个失效硬盘
2.热插拔:HotSwap
定义:在不影响系统正常运转的情况下,用正常的物理硬盘替换RAID系统中失效硬盘。
《二》.RAID-0-1-5-10搭建及使用-删除RAID及注意事项
RAID的实现方式
【注意】
(1)做硬件RAID必须在装系统前。
(2)硬RAID:需要RAID卡,我们的磁盘是接在RAID卡的,由它统一管理和控制。数据也由它来进行分配和维护;它有自己的cpu,处理速度快
(3)软RAID:通过操作系统实现
一.Mdadm命令详解
1.Mdadm:一种Linux工具,用于创建和管理软件RAID的命令。
2.常见参数:
参数 |
作用 |
-a |
检测设备名称 添加磁盘 |
-n |
指定设备数量 |
-l |
指定RAID级别 |
-C |
创建 |
-v |
显示过程 |
-f |
模拟设备损坏 |
-r |
移除设备 |
-Q |
查看摘要信息 |
-D |
查看详细信息 |
-S |
停止RAID磁盘阵列 |
二.实战搭建raid10阵列
新添加4块硬盘
1.第一步:查看磁盘
[root@feige ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
2.第二步:下载mdadm
[root@feige ~]# yum install mdadm -y
3.第三步:创建raid10阵列
[root@feige ~]# mdadm -Cv /dev/md10 -a yes -n 4 -l 10 /dev/sd{b,c,d,e}
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
4.第四步:格式磁盘阵列为xfs
[root@feige ~]# mkfs.xfs /dev/md10
5.第五步:挂载
[root@feige ~]# mkdir /raid10
[root@feige ~]# mount /dev/md10 /raid10
[root@feige ~]# df -h
6.第六步:查看/dev/md10的详细信息
[root@feige ~]# mdadm -D /dev/md10
7.第七步:写入到配置文件中
[root@ken ~]# echo "/dev/md10 /raid10 xfs defaults 0 0" >> /etc/fstab
三.损坏磁盘阵列及修复
之所以在生产环境中部署RAID 10磁盘阵列,是为了提高硬盘存储设备的读写速度及数据的安全性,但由于我们的硬盘设备是在虚拟机中模拟出来的,因此对读写速度的改善可能并不直观。
在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。
1.第一步:模拟设备损坏
[root@feige ~]# mdadm /dev/md10 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md10
[root@feige ~]# mdadm -D /dev/md10
2.第二步:添加新的磁盘
在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
[root@feige ~]# reboot
[root@feige ~]# umount /raid10
[root@feige ~]# mdadm /dev/md10 -a /dev/sdb
mdadm: added /dev/sdb
[root@feige ~]# mdadm -D /dev/md10
再次查看发现已经构建完毕
[root@feige ~]# mdadm -D /dev/md10
四.实战搭建raid5阵列+备份盘
添加4个硬盘:
1.第一步:查看磁盘
[root@feige ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
2.第二步:创建RAID5阵列
[root@feige ~]# mdadm -Cv /dev/md5 -n 3 -l 5 -x 1 /dev/sd{b,c,d,e}
3.第三步:格式化为xfs
[root@feige ~]# mkfs.xfs /dev/md5
4.第四步:挂载
[root@feige ~]# mount /dev/md5 /raid5
[root@feige ~]# df -h
5.第五步:查看阵列信息
可以发现有一个备份盘/dev/sde
[root@feige ~]# mdadm -D /dev/md5
/dev/md0:
Version : 1.2
Creation Time : Thu Feb 28 19:35:10 2019
. . . . . . . . . . .. . . .
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
6.第六步:模拟/dev/sdb磁盘损坏
可以发现/dev/sde备份盘立即开始构建
[root@feige ~]# mdadm /dev/md5 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md5
[root@feige ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Thu Feb 28 19:35:10 2019
. . . . . . . . . . . . . . . .
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
《三》centos7系统启动过程及相关配置文件
1.uefi或BIOS初始化,开始post(power on self test)开机自检
2.加载MBR到内存,选择引导顺序。
3.GRUB阶段,给用户选择系统。
4.加载内核和initramfs模块
5.内核开始初始化,使用centos7系统使用的是systemd来代替centos6以前的init程序。