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

推荐订阅源

Google DeepMind News
Google DeepMind News
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
V
V2EX
Vercel News
Vercel News
U
Unit 42
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
J
Java Code Geeks
WordPress大学
WordPress大学
罗磊的独立博客
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
M
MIT News - Artificial intelligence
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
RAID 下 XFS 运维操作
微信公众号 · 2025-10-04 · via 陈少文的网站

xfs 文件系统不支持缩容,本篇主要是对 RAID 10 下换盘、扩容进行操作。

1. RAID 状态与盘状态

在 mdadm 中,RAID 状态:

  • clean, 正常
  • degraded,降级,依然可以读写,但是容错能力降低
  • reshaping,重组中,扩容、缩容时会出现
  • resyncing,同步数据中
  • recovering,恢复数据中,伴随降级,盘重建
  • failed,故障

在 mdadm 中,盘状态有:

  • active, 参与数据读写
  • spare, 热备盘,当有盘故障时,自动接替故障盘
  • failed,故障盘
  • sync,同步中,正常状态
  • rebuilding,重建中
  • set-x,相同标记下的全部盘是一组镜像

2. RAID 0

2.1 创建 RAID 0

  • 停掉 md0
1
2
umount /mnt/mdadmdm
mdadm --stop /dev/md0
  • 创建 RAID 0
1
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
  • 查看 RAID 状态
1
mdadm --detail /dev/md0
1
2
3
4
5
    State : clean
       0     259        0        0      active sync   /dev/nvme0n1
       1     259        1        1      active sync   /dev/nvme1n1
       2     259        4        2      active sync   /dev/nvme2n1
       3     259        3        3      active sync   /dev/nvme3n1
  • 格式化 RAID
  • 挂载 RAID
1
2
mkdir -p /mnt/mdadm
mount /dev/md0 /mnt/mdadm
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        3.0T   21G  2.9T   1% /mnt/mdadm

3. RAID 1

3.1 创建 RAID 1

  • 停掉 md0
1
2
umount /mnt/mdadm
mdadm --stop /dev/md0
  • 创建 RAID 1
1
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
  • 格式化 RAID
  • 挂载 RAID
1
2
mkdir -p /mnt/mdadm
mount /dev/md0 /mnt/mdadm
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        745G  5.3G  740G   1% /mnt/mdadm

3.2 单盘替换

  • 清空新盘
  • 添加热备盘
1
mdadm /dev/md0 --add /dev/nvme2n1
  • 标记故障盘
1
mdadm /dev/md0 --fail /dev/nvme1n1
  • 移除故障盘
1
mdadm /dev/md0 --remove /dev/nvme1n1
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
    State : clean, degraded, recovering
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync   /dev/nvme0n1
       2     259        4        1      spare rebuilding   /dev/nvme2n1

3.3 加盘扩容

  • 将一块盘加入阵列
1
mdadm /dev/md0 --add /dev/nvme3n1
  • 扩容 RAID 1

新加的盘默认为热备盘,需要将热备盘标记为数据盘。

1
mdadm /dev/md0 --grow --raid-devices=3
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
5
    State : clean, degraded, recovering
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync   /dev/nvme0n1
       2     259        4        1      spare rebuilding   /dev/nvme2n1
       3     259        3        2      spare rebuilding   /dev/nvme3n1

因为 RAID 1 每个盘数据都一样,也就没有平衡或者扩容的操作了。

4. RAID 10

4.1 创建 RAID 10

  • 停掉 md0
1
2
umount /mnt/mdadm
mdadm --stop /dev/md0
  • 创建 RAID
1
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
  • 查看 RAID 状态
1
mdadm --detail /dev/md0
1
2
3
4
5
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync set-A   /dev/nvme0n1
       1     259        1        1      active sync set-B   /dev/nvme1n1
       2     259        4        2      active sync set-A   /dev/nvme2n1
       3     259        3        3      active sync set-B   /dev/nvme3n1
  • 格式化 RAID
  • 挂载 RAID
1
2
mkdir -p /mnt/mdadm
mount /dev/md0 /mnt/mdadm
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        1.5T   11G  1.5T   1% /mnt/mdadm
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        1.5T   61G  1.4T   5% /mnt/mdadm

写了一个 50G 的文件 4m_seq_write.0.0

4.2 单盘替换

热备盘可以用于故障自动替换或者替换正常的数据盘。

  • 将热备盘加入阵列
1
mdadm /dev/md0 --add /dev/nvme4n1 /dev/nvme5n1
  • 移除热备盘
1
mdadm /dev/md0 --remove /dev/nvme5n1
  • 查看状态(热备盘为 spare)
1
mdadm --detail /dev/md0
1
2
3
4
5
6
7
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync set-A   /dev/nvme0n1
       1     259        1        1      active sync set-B   /dev/nvme1n1
       2     259        4        2      active sync set-A   /dev/nvme2n1
       3     259        3        3      active sync set-B   /dev/nvme3n1

       4     259        2        -      spare   /dev/nvme4n1
  • 剔除数据盘
1
mdadm /dev/md0 --fail /dev/nvme3n1
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
5
6
7
8
    State : clean, degraded, recovering
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync set-A   /dev/nvme0n1
       1     259        1        1      active sync set-B   /dev/nvme1n1
       2     259        4        2      active sync set-A   /dev/nvme2n1
       4     259        2        3      spare rebuilding   /dev/nvme4n1

       3     259        3        -      faulty   /dev/nvme3n1

此时阵列处于降级状态,正在重建数据。

  • 移除故障盘
1
mdadm /dev/md0 --remove /dev/nvme3n1

4.3 加盘扩容

  • 将两块盘加入阵列
1
mdadm /dev/md0 --add /dev/nvme3n1 /dev/nvme5n1
  • 查看状态(新盘为 spare)
1
mdadm --detail /dev/md0
1
2
3
4
5
6
7
8
9
    State : clean
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync set-A   /dev/nvme0n1
       1     259        1        1      active sync set-B   /dev/nvme1n1
       2     259        4        2      active sync set-A   /dev/nvme2n1
       4     259        2        3      active sync set-B   /dev/nvme4n1

       3     259        3        -      spare   /dev/nvme3n1
       5     259        5        -      spare   /dev/nvme5n1

新加入的盘默认为热备盘。

  • 扩容 RAID 10
1
mdadm /dev/md0 --grow --raid-devices=6
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
5
6
7
8
    State : clean, reshaping
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync set-A   /dev/nvme0n1
       1     259        1        1      active sync set-B   /dev/nvme1n1
       2     259        4        2      active sync set-A   /dev/nvme2n1
       4     259        2        3      active sync set-B   /dev/nvme4n1
       5     259        5        4      active sync set-A   /dev/nvme5n1
       3     259        3        5      active sync set-B   /dev/nvme3n1

等等 reshaping 状态结束,cat /proc/mdstat 可以看到需要多久时间完成。

  • 扩容文件系统
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        2.2T   66G  2.2T   3% /mnt/mdadm

文件系统扩容完成。

5. RAID 6

5.1 创建 RAID 6

  • 停掉 md0
1
2
umount /mnt/mdadm
mdadm --stop /dev/md0
  • 创建 RAID 6
1
mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
  • 格式化 RAID
  • 挂载 RAID
1
2
mkdir -p /mnt/mdadm
mount /dev/md0 /mnt/mdadm
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        1.5T   11G  1.5T   1% /mnt/mdadm

5.2 单盘替换

  • 清空新盘
  • 添加热备盘
1
mdadm /dev/md0 --add /dev/nvme4n1
  • 标记故障盘
1
mdadm /dev/md0 --fail /dev/nvme3n1
  • 移除故障盘
1
mdadm /dev/md0 --remove /dev/nvme3n1
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
5
6
    State : clean, degraded, recovering
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync   /dev/nvme0n1
       1     259        1        1      active sync   /dev/nvme1n1
       2     259        4        2      active sync   /dev/nvme2n1
       4     259        2        3      spare rebuilding   /dev/nvme4n1

5.3 加盘扩容

  • 清空新盘
  • 添加热备盘
1
mdadm /dev/md0 --add /dev/nvme5n1
  • 调整 RAID 设备数量
1
mdadm /dev/md0 --grow --raid-devices=5
  • 查看状态
1
mdadm --detail /dev/md0
1
2
3
4
5
6
7
    State : clean, degraded, reshaping
    Number   Major   Minor   RaidDevice State
       0     259        0        0      active sync   /dev/nvme0n1
       1     259        1        1      active sync   /dev/nvme1n1
       2     259        4        2      active sync   /dev/nvme2n1
       4     259        2        3      spare rebuilding   /dev/nvme4n1
       5     259        5        4      active sync   /dev/nvme5n1

不会自动平衡数据,而是新的数据会逐步写入新盘。

  • 扩容文件系统
  • 查看磁盘大小
1
2
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        2.2T   16G  2.2T   1% /mnt/mdadm

6. 生成测试数据

  • 4M 顺序写
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
fio \
  --name=4m_seq_write \
  --rw=write \
  --bs=4M \
  --ioengine=libaio \
  --direct=1 \
  --numjobs=1 \
  --iodepth=8 \
  --size=50G \
  --time_based \
  --runtime=60 \
  --group_reporting \
  --directory=/mnt/mdadm

用于生成测试数据。

  • 计算文件的 MD5 值
1
md5sum /mnt/mdadm/4m_seq_write.0.0

用于校验调整之后文件的完整性。