一,RAID概述
RAID(Redundant Array of Independent Disks)是一种数据存储虚拟化技术,起源于1980年代,旨在提高存储系统的性能和可靠性。最初,由加州大学伯克利分校的研究人员提出,RAID技术的核心理念是将多个物理硬盘组合成一个逻辑单元,以提供数据冗余和更高的读写性能。
RAID与LVM可以结合使用,在物理层面使用RAID提高冗余和性能,而在逻辑层面使用LVM灵活管理存储空间。这种组合可以最大化存储系统的性能和灵活性。
二,常见的RAID级别
RAID级别的选择依赖于特定应用场景的需求,包括性能、冗余策略和存储成本等。
RAID级别 | 描述 | 优点 | 缺点 | 图例 | 运用场景 |
---|---|---|---|---|---|
RAID 0 | 数据条带化(Striping),将数据均匀分布到多个磁盘上(至少两块) | 提高读写性能,没有冗余 | 任何一个磁盘故障导致数据丢失 | 高性能需求的场景,如视频编辑、游戏服务器等。 | |
RAID 1 | 数据镜像(Mirroring),每个数据都有一个完整的副本(至少两块) | 数据冗余,提高数据安全性 | 存储效率低,需两倍的磁盘空间 | 需要高可用性的场景,如数据库服务器和文件服务器。 | |
RAID 5 | 数据条带化 和奇偶校验,至少需要三个磁盘 | 提高读写性能,有冗余,能承受一个磁盘故障 | 写入性能较低,至少需要三块磁盘 | 通常用于文件服务器、企业级存储,平衡性能和冗余。 | |
RAID 6 | 类似于RAID 5,但有双重奇偶校验,至少需要四个磁盘 | 能承受两个磁盘故障,数据安全性更高 | 写入性能更低,存储效率较低 | 数据安全要求高的环境,如银行和金融服务。 | |
RAID 10 | 结合RAID 0和RAID 1,数据条带化与镜像结合,至少需要四个磁盘 | 提高读写性能和数据冗余 | 需要较多的磁盘空间 | 数据库应用、虚拟化环境,要求高性能和高可用性。 | |
RAID 50 | RAID 5的条带化,至少需要六个磁盘 | 提高性能和冗余能力 | 成本高,复杂度增加 | 大型存储系统,平衡性能和容量,适用于高负载应用。 | |
RAID 60 | RAID 6的条带化,提供更高的冗余和性能 | 提供高冗余性和良好的读取性能,适合对数据安全性要求极高的应用场景。 | 写入性能受影响和存储效率较低,整体成本较高。 | 数据安全性极高的应用,如关键业务系统和大数据存储。 |
三,软硬RAID
软RAID(基本上不用)mdadm
通过软件工具(如 mdadm
)在操作系统级别管理RAID,灵活性高,但可能对CPU性能有一定影响,适合小型或个人项目。
硬RAID(硬件——RAID卡)
使用专用的RAID控制器卡,提供更高的性能和可靠性,通常有自己的处理器和内存,适合对性能和数据安全性有较高要求的企业环境。(具有帮助手册)
四,软RAID创建-RAID1
-
环境准备
- 一块盘,3主1扩7逻辑(10个分区),每个分区容量差不多相等(注意扩展分区只是存放逻辑分区的相关信息,所以是不可能有太大的空间的,你应该知道,看看我写的10个分区就明白了)
- 安装mdadm工具
- 一块盘,3主1扩7逻辑(10个分区),每个分区容量差不多相等(注意扩展分区只是存放逻辑分区的相关信息,所以是不可能有太大的空间的,你应该知道,看看我写的10个分区就明白了)
-
mdadm命令
- 具体的命令:mdadm 【模式】【磁盘阵列】【参数】设备名
完整选项 简写选项 描述 示例命令 --create
-C
创建新的 RAID 阵列 mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
--raid-devices=<数量>
-n
指定 RAID 设备数量 mdadm -C /dev/md0 -l 1 -n 3 /dev/sdb1 /dev/sdb2 /dev/sdb3
--level=<级别>
-l
指定 RAID 级别 mdadm -C /dev/md0 -l 5 -n 4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
--spare-devices -x 用于指定在 RAID 阵列中使用的备份设备数量。这个选项与 RAID 阵列的创建或调整有关。 mdadm -C /dev/md0 --level=5 -n=4 -x 1 /dev/sda{1,2,3,4,5}
--name=<名称>
-N
指定自定义名称 mdadm -C /dev/md0 -N myraid -l 0 -n 2 /dev/sdb1 /dev/sdb2
--assemble
-A
组装已存在的 RAID 阵列(也就是重新启动) mdadm -A /dev/md0 /dev/sdb1 /dev/sdb2
可以不指定具体的设备,因为 mdadm
可以通过配置文件(前提要有)或扫描系统自动识别 RAID 设备。mdadm -A /dev/md0
-A --scan 自动扫描组装所有 RAID 阵列,并且启动 mdadm --assemble --scan --add
-a
向 RAID 阵列添加新设备 mdadm -a /dev/md0 /dev/sdb3
--remove
-r
从 RAID 阵列中移除设备 mdadm -r /dev/md0 /dev/sdb1
--fail
-f
将设备标记为故障 mdadm -f /dev/md0 /dev/sdb1
--stop
-S
停止 RAID 阵列 mdadm -S /dev/md0
--detail
-D
查看 RAID 阵列详细信息 mdadm -D /dev/md0
--examine
-E
检查 RAID 超级块信息 mdadm -E /dev/sdb1
--zero-superblock
-z
清除 RAID 超级块 mdadm -z /dev/sdb1
--monitor
-m
监视 RAID 阵列状态 mdadm -m /dev/md0
--force
-f
强制操作 mdadm -A --force /dev/md0 /dev/sdb1 /dev/sdb2
--save
-s
保存当前 RAID 配置 必须和-A(--assemble)连用(或者是刷新已有配置文件)
mdadm -A --save /dev/md0【不跟设备就是所有,跟就是特定】
--detail --scan
-D -scan
自动扫描并输出配置 mdadm --detail --scan 【raid设备名,不写就当前所有】> /etc/mdadm.conf
- 具体的命令:mdadm 【模式】【磁盘阵列】【参数】设备名
-
RAID0创建
- 创建raid0:mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
- 【设备名:/dev/md[x],x可以从0开始】胡乱写就会自己分配
- 查看状态:mdadm -D /dev/md[x]或者 cat /proc/mdstat
- 格式:mkfs.[选项]、mkswap 【设备】
- 挂载:mount 【设备】【挂载点】
- 创建raid0:mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
-
RAID1创建
- 创建raid1:mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb3 /dev/sdb5
- 查看raid1:cat /proc/mdstat或者mdadm -D /dev/md1
- 格式化:mkfs.ext4 【设备】
- 挂载
- 创建raid1:mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb3 /dev/sdb5
-
保存RAID(修改配置文件/etc/mdadm.conf)
- 这个文件默认没有要创建
- mdadm --detail --scan > /etc/mdadm.conf(建议覆盖不要追加)
- mdadm --detail --scan > /etc/mdadm.conf(建议覆盖不要追加)
- mdadm -A --save 【设备名】:刷新一下
- 这个文件默认没有要创建
-
停止与其它RAID
- 先解除挂载——》mdadm -S /dev/md[x]关闭
- mdadm -A /dev/md[x]启动——》然后就可以挂载了
- 先解除挂载——》mdadm -S /dev/md[x]关闭
-
RAID删除
- 解挂
- 停止使用:mdadm -S /dev/md[x]
- 删除磁盘阵列:mdadm -R /dev/md[x]
- 清除元数据:mdadm --misc -z /dev/sd[x][数字](与之前删除的阵列相关的磁盘)
misc
表示与设备或 RAID 阵列的某些状态或元数据相关的杂项信息,通常用于描述不特定或不标准的设备状态。
- 重新将当前的raid状态放入配置文件,可以vim配置文件,也可以:mdadm -D --scan > /etc/mdadm.conf
五,软RAID创建-RAID5
-
环境准备
- 4块盘
- mdadm安装
-
RAID5创建
- 创建raid:mdadm -C /dev/md5 -x 1 -l 5 -n 3 /dev/sdb6 /dev/sdb7 /dev/sdb8 /dev/sdb9
- -x表示热备盘的数量,热备盘:当 RAID 阵列中的某个磁盘发生故障时,热备盘会自动介入,开始恢复数据并替代故障磁盘。(一般不指定就是最后一个盘,如果指定就按照如下语法:-x 数量 【盘名】)
- 查看raid5:mdadm -D /dev/md5 ,cat /proc/mdstat
- 设置文件系统(格式):mkfs.ext4 /dev/md5(或者mkswap {设备名})
- 挂载:mkdir /mnt/raid5;mount /dev/md5 /mnt/raid5
- 创建raid:mdadm -C /dev/md5 -x 1 -l 5 -n 3 /dev/sdb6 /dev/sdb7 /dev/sdb8 /dev/sdb9
-
保存RAID
- mdadm -D -scan > /etc/mdadm.conf
- mdadm -D -scan > /etc/mdadm.conf
-
热备盘测试
- mdadm /dev/md5 -f /dev/sdb8
- 移除sdb8再添加就相当于撤销了-f的损坏标记
mdadm -r /dev/md5 /dev/sdb8;mdadm -a /dev/md5 /dev/sdb8
- mdadm /dev/md5 -f /dev/sdb8
-
停止与启动RAID
- mdadm -S /dev/md5(停止)mdadm -A /dev/md5(启动)
- mdadm -S /dev/md5(停止)mdadm -A /dev/md5(启动)
-
RAID删除
- 解挂
- 关闭阵列:mdadm -S /dev/阵列名
- 删除阵列:mdadm -r /dev/阵列名【不要跟设备名】
- 清除元数据:mdadm -Z /dev/sdb【对应删除的物理盘】
六,扩展内容
inode
什么是 inode?
我们可以把 inode 想象成一个 学生档案卡,上面记录着学生的名字、年龄、班级等信息,但不记录具体位置。类似地,在文件系统中,每个文件都有一个 inode,里面记录了文件大小、文件类型、权限、以及文件在磁盘上的存储位置等信息。
链接(ln 【-s】源 目标)
假设你有一张非常漂亮的画(文件),你想让小朋友们都知道这张画在哪儿。于是你写了几个“名字贴”:
硬链接(Hard Link):就像给画贴上好几个真正的名字贴,比如贴在不同的小朋友手上。每个名字贴都直接指向这幅画,不管画在哪儿,有名字的小朋友都能找到它。即使画上某个名字被撕掉,其他名字贴还在,所以画还是不会丢!
软链接(Soft Link):是像给画拍了张“定位照片”,只告诉小朋友“画在这边哦”,所以每次想看画,他们还是得顺着照片找过去。如果画的地方变了(比如搬到别的房间),照片就不管用了——因为照片里的“路”变错了。
硬链接(存放的文件地址)
ln 源 目标(对目录没有用)
硬链接(Hard Link)可以理解为多个文件名指向同一个 inode。假设有一个文件叫 “学习计划”,它有一个 inode 编号 1001。如果我们创建一个硬链接,就好像给同一个文件加了另一个名字。比如,“学习计划”有了第二个名字叫 “复习资料”。不管叫哪个名字,它们指向的都是 inode 1001,所以都能找到同一个文件内容。
- 软链接文件有自己独立的 inode,它只记录了“指向哪个文件名”。
- 如果原文件被删除或位置改变,软链接会失效,变成“断开的链接”。
软连接(存放的文件地址)
ln -s 源 目标(对目录有用)
软链接(Soft Link)是一个指向原文件路径的快捷方式,它并不直接指向原文件的 inode,而是指向原文件的文件名。就像在桌面上创建一个快捷方式,如果文件名(或位置)变了,快捷方式就会失效。
- 删除任意一个文件名,文件内容还在,因为文件的 inode 还存在。
- 文件内容真正消失,只有在所有硬链接都被删除后才会发生。