惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
A
About on SuperTechFans
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
D
DataBreaches.Net
B
Blog
博客园 - 【当耐特】
爱范儿
爱范儿
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
WordPress大学
WordPress大学
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
Microsoft Azure Blog
Microsoft Azure Blog
雷峰网
雷峰网
量子位
G
Google Developers Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Ubuntu 22.04 使用 mdadm 实现软 raid
Yiwei Zhang · 2025-04-28 · via 又见苍岚

没有磁盘阵列卡,还想做 raid,本文记录 Ubuntu 软 raid 实现过程。

简介

mdadm 是一个用于管理和监控 Linux 系统中软件 RAID 数组的命令行工具。RAID(Redundant Array of Independent Disks)是一种数据存储虚拟化技术,通过将多个物理磁盘驱动器组合成一个逻辑单元来提高数据存储的可靠性、性能或容量。

mdadm 工具可以用于创建、组装、监控和管理 RAID 数组。以下是一些 mdadm 的主要功能:

  1. 创建 RAID 数组:mdadm 可以创建不同级别的 RAID 数组,如 RAID 0(条带化)、RAID 1(镜像)、RAID 5(分布式奇偶校验)等。
  2. 组装 RAID 数组:在系统启动时,mdadm 可以将已创建的 RAID 数组组装起来,使其可供系统使用。
  3. 监控 RAID 数组:mdadm 可以监控 RAID 数组的健康状况,包括检查磁盘是否出现故障、重建失败的磁盘等。
  4. 扩展 RAID 数组:mdadm 允许在 RAID 数组中添加或删除磁盘,以调整数组的容量和性能。
  5. 管理 Spare 磁盘:mdadm 可以配置 Spare(备用)磁盘,当 RAID 数组中的某个磁盘出现故障时,Spare 磁盘会自动接管其工作。

请注意,使用 mdadm 管理 RAID 数组时,需要谨慎操作,因为错误的命令可能会导致数据丢失。在执行任何操作之前,请确保已备份重要数据。

mdadm

安装

1
sudo apt install mdadm -y

常用命令

  • 使用 mdadm 的基本命令格式如下:
1
mdadm [mode] <raiddevice> [options] <component-devices>

其中,mode 指定了 mdadm 的操作模式,如创建、组装、监控等;raiddevice 是 RAID 数组的设备文件,通常是 /dev/mdXoptions 是可选的参数,用于指定操作的具体细节;component-devices 是组成 RAID 数组的物理磁盘设备。

例如,要创建一个由两个磁盘(/dev/sdc 和 /dev/sdd)组成的 RAID 1 数组,可以使用以下命令:

1
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
  • 要监控 RAID 数组的健康状况,可以使用以下命令:
1
mdadm --detail /dev/md0

raid 流程

这里以 Raid 1 两块磁盘为例

确认硬盘信息

执行以下命令查看磁盘标识符

1
sudo fdisk -l  # 或使用 lsblk 查看块设备
1
2
sdg                     8:96   0 931.5G  0 disk /media/vvd/stable_disk_A
sdh 8:112 0 931.5G 0 disk /media/vvd/stable_disk_B

我要搞的就是这两块磁盘

初始化 RAID 设备

将两块硬盘组成 RAID1:

1
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdg /dev/sdh
  • /dev/md0:自定义 RAID 设备名称

  • --level=1:指定 RAID1 模式

    需要确保两块硬盘处于未挂载状态

1
2
3
4
5
6
7
8
9
10
11
12
13
mdadm: /dev/sdg appears to contain an ext2fs file system
size=976762584K mtime=Mon Apr 28 23:07:39 2025
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: /dev/sdh appears to contain an ext2fs file system
size=976762584K mtime=Mon Apr 28 23:09:04 2025
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

验证阵列状态

1
sudo mdadm --detail /dev/md0  # 检查 "State" 是否为 clean
  • 输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/dev/md0:
Version : 1.2
Creation Time : Mon Apr 28 23:29:56 2025
Raid Level : raid1
Array Size : 976630464 (931.39 GiB 1000.07 GB)
Used Dev Size : 976630464 (931.39 GiB 1000.07 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Mon Apr 28 23:31:13 2025
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : bitmap

Resync Status : 1% complete

Name : vvd-desktop:0 (local to host vvd-desktop)
UUID : 7b9fc2e7:31d837b7:ac8ecc82:15e17775
Events : 15

Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh

格式化 RAID 设备

1
sudo mkfs.ext4 /dev/md0  # 使用 ext4 文件系统
  • 输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
mke2fs 1.45.5 (07-Jan-2020)
丢弃设备块: 完成
创建含有 244157616 个块(每块 4k)和 61046784 个inode的文件系统
文件系统UUID:4eb15ef5-4170-4407-87cf-a1727c167410
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

正在分配组表: 完成
正在写入inode表: 完成
创建日志(262144 个块) 完成
写入超级块和文件系统账户统计信息: 已完成

持久化配置

保存 RAID 配置
1
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
更新 initramfs
1
sudo update-initramfs -u
设置开机自动挂载
  • Plan A
1
sudo mkdir /mnt/raid1

编辑 /etc/fstab 文件,添加:

1
/dev/md0 /mnt/raid1 ext4 defaults 0 0

立即挂载生效:

1
sudo mount -a
  • Plan B

查询 md0 设备的UUID,命令如下:

1
sudo blkid /dev/md0

运行结果:

1
/dev/md0: UUID="1aaeec0c-d918-4e91-802e-f8f2e9645b56" TYPE="ext4"

上面的结果中的UUID后面的字符串即为我们要获取的内容,然后通过 vim 打开配置文件:

1
sudo vim /etc/fstab

具体配置如下,将下面这行添加到打开的文件末尾即可:

1
UUID=1aaeec0c-d918-4e91-802e-f8f2e9645b56 /mnt/raid0 ext4 defaults 0 0

立即挂载生效:

1
sudo mount -a

故障处理与维护

  1. 磁盘故障模拟

    1
    2
    3
    sudo mdadm /dev/md0 --fail /dev/sdb  # 标记磁盘为故障状态
    sudo mdadm /dev/md0 --remove /dev/sdb # 移除故障盘
    sudo mdadm /dev/md0 --add /dev/sdd # 添加新磁盘(需提前格式化)
  2. 监控 RAID 状态

    1
    watch -n 1 cat /proc/mdstat  # 实时监控同步进度

删除软raid

首先,确认你要删除的 RAID 设备未被挂载。如果已经挂载,可以使用以下命令卸载它:

1
sudo umount /dev/md0

停用 RAID 设备。使用以下命令停用 RAID 设备:

1
sudo mdadm --stop /dev/md0

如果你有多个 RAID 设备,需要针对每个设备执行此命令。

从配置文件中删除 RAID 配置。打开 /etc/mdadm/mdadm.conf 文件,并删除包含要删除的 RAID 设备的条目。

从 mdadm.conf 文件中更新 initramfs。使用以下命令更新 initramfs,以确保新的 RAID 配置生效:

1
sudo update-initramfs -u

最后,可以通过以下命令从系统中删除 RAID 元数据:

1
2
sudo mdadm --zero-superblock /dev/sdb
sudo mdadm --zero-superblock /dev/sdc

这里的 /dev/sdb 和 /dev/sdc 是 RAID 设备的磁盘路径。根据你的实际情况,可能有多个磁盘需要执行此命令。

完成上述步骤后,软 RAID 设备将会被删除。请注意,在进行任何删除操作之前,请确保备份你的数据,并确保你了解自己所做的更改的后果。

注意事项

  1. 数据备份
    操作前务必备份原硬盘数据‌,RAID 创建过程会清除磁盘内容
  2. 硬件兼容性
    确保两块硬盘容量一致,否则 RAID 将按最小容量硬盘计算
  3. 性能优化
    可通过调整 /proc/sys/dev/raid/speed_limit_min 控制同步速度

参考资料

文章链接:
https://www.zywvvd.com/notes/system/linux/ubuntu-soft-raid/ubuntu-soft-raid/