找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2765

积分

1

好友

377

主题
发表于 12 小时前 | 查看: 0| 回复: 0

今天我们来聊聊一个在运维中很常见的场景:如何在服务器没有硬件RAID卡的情况下,仅通过操作系统来构建RAID阵列。这只需要掌握一个关键命令:mdadm

1 软 RAID 和硬 RAID区别

硬 RAID 通常指服务器配备了专用的RAID卡。RAID卡负责将多个物理磁盘组合成一个逻辑上的大磁盘,所有的RAID计算(如奇偶校验)都由硬件完成。对操作系统而言,它看到的只是一块“虚拟磁盘”。这种方式性能好、稳定性高,但依赖特定硬件。

软RAID 则完全由操作系统底层的软件驱动实现。它将SCSI或IDE控制器提交的物理磁盘虚拟化,再提交给上层管理。软RAID主要在没有硬件RAID卡,但又希望实现数据冗余和性能提升的场景下使用。它依赖于系统的CPU资源进行计算。

两者简单对比如下:

对比项 硬 RAID 软 RAID
谁来算 RAID RAID 卡 操作系统
是否依赖硬件
可迁移性 很强
运维灵活度

没有谁绝对更好,只是场景不同。

2 RAID 到底有多少种?

常见的RAID级别及其特点如下:

RAID 级别 最少磁盘 特点 适合场景
RAID0 2 性能最高,无冗余 临时数据、缓存
RAID1 2 1:1 镜像 系统盘
RAID5 3 性能 + 容错平衡 业务数据盘
RAID6 4 双校验,更安全 大容量存储
RAID10 4 性能 + 高可靠 核心业务

生产环境最常用的组合策略是:

RAID1做系统盘, RAID5 / RAID10做数据盘,有些数据要求较高的可以做RAID6。

3 实战做软RAID

下面我们以创建一个在生产环境中也比较常用的RAID5为例。假设我们已经准备了3块硬盘,设备名分别为:

/dev/sdb
/dev/sdc
/dev/sdd

lsblk命令输出显示三块8GB磁盘

3.1 创建 RAID

首先确保系统已安装 mdadm 工具。大多数Linux发行版已预装,若没有,可以使用包管理器安装,例如在RHEL/CentOS系统上:

yum install mdadm -y

接下来,使用 mdadm 命令创建RAID5阵列:

mdadm --create /dev/md0 \
--level=5 \
--raid-devices=3 \
/dev/sdb /dev/sdc /dev/sdd

参数说明:

  • mdadm:Linux下的RAID管理工具。
  • --create:创建一个新的RAID阵列。注意:此操作会清空指定磁盘上的所有现有数据。
  • /dev/md0:创建的阵列设备名称。md0 表示第一个RAID设备,后续可依次使用 md1, md2
  • --level:指定RAID级别,这里为5。
  • --raid-devices=3:指定组成阵列的物理磁盘数量,必须与后面列出的磁盘路径数量一致,否则会报错。

执行完成后,可以运行 lsblk 命令查看块设备状态:

lsblk

使用mdadm创建RAID5阵列的过程

此时,对于操作系统来说,/dev/md0 就是一块全新的磁盘。你可以计算一下它的容量:三块8GB的磁盘组建RAID5后,形成了一块约16GB的虚拟磁盘,这符合RAID5(N-1)的容量计算原理。

2️⃣ 格式化并挂载

创建好的RAID设备需要格式化为文件系统并挂载后才能正常使用。这里我们格式化为XFS文件系统并挂载到 /data 目录:

mkfs.xfs /dev/md0
mkdir /data && mount /dev/md0 /data

mkfs.xfs格式化RAID设备时的输出

3️⃣ 配置持久化

这是至关重要的一步,务必不要遗漏! 许多线上故障正是因为重启后RAID配置丢失导致的。我们需要将当前的RAID阵列配置信息保存到配置文件中:

mdadm --detail --scan >> /etc/mdadm.conf

完成以上步骤,一个可用的软RAID5阵列就创建并配置完毕了。

4 软 RAID日常运维操作

创建RAID只是开始,持续的运维监控才是保障数据安全的关键

4.1 查看 RAID 状态

最快速的方法是查看内核提供的RAID状态文件:

cat /proc/mdstat

查看/proc/mdstat文件获取RAID阵列状态

4.2 查看详细信息

使用 mdadm 命令可以获取阵列的详尽信息,包括健康状态、成员盘等:

mdadm --detail /dev/md0

mdadm --detail命令显示的RAID5阵列详细信息

从详细输出中,你可以清晰地看到:

  • RAID 级别 (Raid Level)
  • 所有成员磁盘 (Number, Major, Minor)
  • 阵列状态,例如是否有磁盘降级 (State, Failed Devices)

4.3 磁盘坏了怎么办?

在运维过程中,如果发现某块成员盘出现故障,可以按以下流程处理:

  1. 标记故障盘:告知RAID管理系统某块盘已失效。
    mdadm /dev/md0 --fail /dev/sdb
  2. 移除故障盘:将已标记为故障的磁盘从阵列中移除。
    mdadm /dev/md0 --remove /dev/sdb

通常,在RAID5阵列中单盘故障不会立即导致业务中断(阵列会进入降级模式运行),但对于重要的生产业务,更换磁盘的操作仍建议安排在维护窗口进行。

  1. 添加新盘并重建:插入新的完好磁盘(例如 /dev/sde),将其加入阵列并开始数据重建。
    mdadm /dev/md0 --add /dev/sde

    重建过程通常可以在线进行,业务无需停止。

结语

由此可见,实现数据冗余和高可用并非硬件RAID卡的专利。在Linux系统下,借助功能强大的 mdadm 工具,我们完全可以利用软件方式灵活、高效地构建和管理RAID阵列。掌握这项技能,能为你在各种硬件环境下的运维工作提供多一种可靠的选择。

希望这篇实战指南对你有帮助。想了解更多类似的运维实战技巧与系统知识,欢迎来云栈社区交流探讨。




上一篇:运维自动化脚本库盘点:OpenVPN/StrongSwan证书管理、SmartDNS优化一键部署
下一篇:RK3588 MPP编码ROI功能调优:解决码率失控与画质平衡问题
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 18:51 , Processed in 0.243416 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表