先搞清楚这三个东西在物理层面是怎么连接的
| 架构 | 全称 | 连接方式 | 通俗理解 |
|---|---|---|---|
| DAS | Direct Attached Storage | 直接插在服务器上 | 就像你电脑上插个 U 盘或移动硬盘 |
| NAS | Network Attached Storage | 通过网络 (以太网) 连接 | 就像家里买了华为家庭存储,全家设备都能访问 |
| SAN | Storage Area Network | 通过专用存储网络 (FC / iSCSI) | 就像服务器后面的专用高速存储通道 |
💡 最原始的方案:硬盘直接接到服务器
- 优点是简单、延迟低
- 缺点是只能一台服务器用,别的服务器眼馋也访问不了
- 常见接口:SATA、SAS、NVMe
# 在 Linux 下你看到的本地磁盘就是 DAS
[root@host ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part /
'这就是典型的 DAS —— 磁盘直接插在主板上'
💡 把存储变成"共享文件夹":通过网络提供文件级共享
- 跑的是文件共享协议:NFS (Linux)、Samba/CIFS (Windows)、FTP
- 本质是在网络上传文件,你看到的是文件夹和文件
- 适合:部门共享文件、家庭媒体服务器
# 挂载 NFS 共享 —— 典型 NAS 使用场景
[root@host ~]# mount -t nfs 192.168.1.100:/data/share /mnt/nas
# 挂载完后就像本地目录一样用,但数据实际存在远端 NAS 设备上
💡 把存储变成"远程硬盘":服务器看到的是一个裸盘,需要自己格式化
- 跑的是块级协议:iSCSI、FC (Fibre Channel)
- 服务器拿到的是 block device,不是文件,服务器自己决定用什么文件系统
- 适合:数据库、虚拟化集群 (多个 ESXi 共享同一套存储)
# iSCSI 登录后,你会在服务器上看到一块新磁盘 (比如 /dev/sdb)
[root@host ~]# iscsiadm -m discovery -t st -p 192.168.1.100
192.168.1.100:3260,1 iqn.2025-01.com.example:target1
[root@host ~]# iscsiadm -m node --login
# 然后 lsblk 就能看到多了一块盘,后面格式化、挂载和本地盘一样操作
📌 一句话区分
- DAS:盘插在我身上,只有我能用
- NAS:文件在网络上,大家都来访问同一个文件夹
- SAN:一块"远程空白硬盘",我拿到后自己格式化、装文件系统
上面是从连接架构区分,现在从数据组织方式区分
| 类型 | 访问方式 | 核心特点 | 典型场景 |
|---|---|---|---|
| 块存储 | 裸盘 / Block Device | 需要格式化,速度快 | 数据库、虚拟机磁盘 |
| 文件存储 | 文件夹 + 文件 | 即开即用,多用户共享 | NFS、Samba 共享 |
| 对象存储 | HTTP API (GET/PUT) | 扁平空间,无限扩展 | 图片、视频、备份归档 |
💡 最底层的存储形式:数据被切成一块一块 (block) 直接读写
- 需要格式化成文件系统 (ext4、xfs、NTFS) 才能用
- 延迟最低,速度最快
- SAN 提供的通常就是块存储,DAS 也是
# 块存储的典型操作流
(1)拿到一块盘 /dev/sdb
(2)分区 fdisk /dev/sdb
(3)格式化 mkfs.xfs /dev/sdb1
(4)挂载 mount /dev/sdb1 /data
'你得自己走完这四步,块存储只负责给你"一块空白硬盘"'
💡 最常见的存储形式:你已经看到文件夹和文件了,直接读写
- 文件系统由存储端管理,你只管往里存文件
- 不用操心格式化、分区
- NAS 提供的就是文件存储
# 文件存储用起来就简单多了
[root@host ~]# mount -t nfs 192.168.1.100:/vol/share /mnt
[root@host ~]# echo "hello" > /mnt/test.txt
'挂上去就能用,和本地文件夹一样'
💡 面向海量数据的存储:没有目录树,数据是扁平存放的
- 每个文件是一个"对象":包含 数据 + 元数据 + 唯一 ID
- 用 HTTP REST API 访问 (GET / PUT / DELETE)
- 没有目录层级这回事,所有对象在同一个扁平空间里
- 代表产品:AWS S3、MinIO、Ceph RGW
[!WARNING]
- 这个不太懂, 先放在这
✅️ 对象存储不 mount,通过 API 操作
✅️ 对象存储不是给你"挂载"用的,而是通过 HTTP 上传下载
[root@host ~]# curl -X PUT -T photo.jpg \
http://s3.example.com/bucket/photo.jpg
- 块存储 = 给你一块空地,你自己打地基、盖墙、装修 (格式化、分区、建文件系统)
- 文件存储 = 给你一间精装房,拎包入住 (挂载即用)
- 对象存储 = 给你一个无限大的仓库,东西塞进去拿个编号,用的时候凭编号取
之前学过的三个核心服务,这里做对比梳理
| 特性 | NFS | Samba | iSCSI |
|---|---|---|---|
| 所属类型 | NAS (文件级) | NAS (文件级) | SAN (块级) |
| 协议 | NFSv3 / NFSv4 | SMB / CIFS | iSCSI (SCSI over TCP) |
| 权限模型 | IP 或域名 + 导出策略 | 用户名密码 / AD 域 | CHAP 认证 + IQN |
| 服务端口 | 2049 (nfsd) | 139 (NetBIOS), 445 (SMB) | 3260 |
| 拿到的对象 | 文件夹 | 文件夹 | 裸盘 (/dev/sdX) |
NFS — Linux 世界的文件共享
Samba — 打通 Linux 和 Windows 的文件共享
iSCSI — 通过网络给服务器"插一块远程硬盘"
💡 iSCSI 的核心概念:
🚢 ① Target (目标端) — 存储服务器,负责"提供磁盘" 📦 ② Initiator (发起端) — 客户端,主动去连接拿盘 ⚙️ ③ IQN (iSCSI Qualified Name) — 全局唯一标识名,相当于"磁盘的身份证" 🔹 ④ LUN (Logical Unit Number) — 逻辑单元号,一个 target 可以包含多个 LUN
⚠️ iSCSI 注意事项
- iSCSI 走的是网络,网络断了磁盘就"掉"了
- 生产环境建议专用存储网络或 VLAN,不要和业务流量混跑
- 文件系统推荐用支持并发的 (如 VMware VMFS、GFS2、OCFS2),普通 ext4/xfs 在多机共享一块盘时会出问题
- CHAP 认证只是基础安全,敏感数据建议再加一层 IPSec
- DAS / NAS / SAN 是物理连接架构的分类
- 块存储 / 文件存储 / 对象存储 是数据组织方式的分类
- NAS 通常 = 文件存储,SAN 通常 = 块存储,但不是绝对绑定
- NFS 和 Samba 属于 NAS (文件级共享),iSCSI 属于 SAN (块级共享)
- 块存储快但需自己管理,文件存储方便但性能上限低,对象存储海量但延迟高
在这个拓展章节中,我们将探讨集群文件系统、分布式存储等方案,并最终聚焦于企业级首选——Ceph
🧱 通俗解释:多个服务器同时挂载同一个文件系统,任何一个节点写入的数据,其他节点立即可见
- 传统单机文件系统(ext4/xfs):一块硬盘只能一台机器用
- 集群文件系统:多台机器同时读写同一个文件系统,通过 锁机制 防止数据冲突
- 代表方案:GFS2(Red Hat)、OCFS2(Oracle)、Veritas CFS
💡 核心特征:强一致性、需要 STONITH 机制防脑裂、适合小规模高可用场景
🧱 通俗解释:把文件切成小块,分散存储在 N 台服务器上,对外表现为一个统一的目录树
- 文件和目录的 元数据(文件名、权限、位置)由专门的 元数据服务器(MDS) 管理
- 实际数据分散在多台数据服务器上并行读写
- 代表方案:HDFS(Hadoop 生态)、CephFS(Ceph 的文件接口)
| 特性 | 集群文件系统 | 分布式文件系统 |
|---|---|---|
| 数据存储 | 共享 SAN/NAS 存储 | 数据分散在本地磁盘 |
| 扩展性 | 受限于存储设备容量 | 水平扩展,加节点即可 |
| 元数据管理 | 共享锁管理 | 独立 MDS 服务器 |
| 典型场景 | 小规模高可用集群 | 大规模数据存储与分析 |
🧱 通俗解释:不仅仅是文件——把 块存储、文件存储、对象存储 统一在一个分布式平台上
分布式存储是分布式文件系统的"进阶版",它不仅提供文件接口,还能:
- 模拟出一块虚拟硬盘(块存储),直接给操作系统用,格式化分区随心所欲
- 提供 HTTP RESTful 接口(对象存储),适合存储图片、视频等非结构化数据
- 挂载为 POSIX 文件系统(文件存储),像 NFS 一样方便
💡 Ceph 是目前唯一一个同时原生支持块、文件、对象三种存储接口的开源分布式存储系统
🧱 通俗解释:数据在存储集群中的"分片+打散"策略
一个大文件存入分布式存储后: ① 先被切分为多个固定大小的对象(object),比如每个 4MB ② 通过 CRUSH 算法 计算每个对象应该存放在哪些 OSD 上 ③ 数据被均匀打散到所有磁盘上,避免热点
📌 一句话:链路分布解决了"数据该放在哪里"的路由问题
🧱 通俗解释:数据存了不止一份,坏几块盘丢不了数据
- 多副本(Replicated):每份数据存 N 份(默认 3 副本),是最直观的冗余方式
- 纠删码(Erasure Code):有点像 RAID5,把数据+校验码分散存储,比副本更省空间
- Ceph 默认使用 3 副本 策略,哪怕 2 个 OSD 同时损坏,数据依然安全
🧱 通俗解释:集群没有"老大",每个节点都是平等的——挂了谁都不影响整体
- 传统存储系统的元数据集中在某台服务器上 → 单点故障
- Ceph 使用 CRUSH 算法 替代中心化元数据查找:
- 客户端自己就能算出数据存放在哪个 OSD
- 不需要问任何中心节点
📌 CRUSH = Controlled Replication Under Scalable Hashing,是 Ceph 实现去中心化的核心
💡 RAID (Redundant Array of Independent Disks):把多块物理硬盘组合成一个逻辑磁盘
- 目的:提高读写速度 (条带化) 或 提高数据安全性 (镜像/校验)
- 软件 RAID:用
mdadm工具管理,由 CPU 计算校验,成本低、灵活- 硬件 RAID:用 Raid 卡处理,带独立缓存,性能好但绑定硬件
| RAID 级别 | 数据保护方式 | 硬盘数量 | 容量使用率 | 可坏几块盘 |
|---|---|---|---|---|
| RAID0 | 不安全 | 2(1块也行) | 1 | 0 ❌ 坏一块全丢 |
| RAID1 | 镜像 | 2(偶数即可) | 1/2 | 1 ✅ 坏一块 |
| RAID3 | 校验 | 至少3块 | (n-1)/n | 1 ✅ 坏一块 |
| RAID5 | 校验 | 至少3块 | (n-1)/n | 1 ✅ 坏一块 |
| RAID6 | 校验 | 至少4块 | (n-2)/n | 2 ✅ 坏两块 |
| RAID10 | 镜像 + 校验 | 至少4块 | 1/2 | 2 ✅ 每组坏一块 组内最多允许坏1块 组间最多允许坏2块 |
| RAID50 | 校验 | 至少6块(2组×3) | (n-2)/n(2组) | 2 ✅ 每组坏一块 组内最多允许坏1块 组间最多允许坏2块 |
| RAID60 | 校验 | 至少8块(2组×4) | (n-4)/n(2组) | 4 ✅ 每组坏两块 组内最多允许坏2块 组间最多允许坏4块 |
sudo1)确认磁盘已识别
root@ubuntu ~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 38G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 30G 0 lvm /
sr0 11:0 1 2.6G 0 rom
nvme0n1 259:0 0 5G 0 disk
nvme0n2 259:1 0 5G 0 disk
nvme0n3 259:2 0 5G 0 disk
nvme0n4 259:3 0 5G 0 disk
nvme0n5 259:4 0 5G 0 disk
nvme0n6 259:5 0 5G 0 disk
# sda 是系统盘,其余 6 块为空盘
2)安装 mdadm (Ubuntu 24.04 默认未预装)
root@ubuntu:~# apt update && apt install -y mdadm
'一路回车即可,无需额外配置'
root@ubuntu ~# dpkg -l | grep mdadm
amd64 mdadm amd64 4.3-1ubuntu2.1 [464 kB]
⚠️ 如果磁盘之前被创建过 RAID,需要先清除
root@ubuntu:~# mdadm --zero-superblock /dev/nvme0n{1,2,3,4,5,6}
💡 两块盘拼成一块,数据交替写入,读写速度接近翻倍,但坏一块全丢
root@ubuntu:~# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n1 /dev/nvme0n2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
--create /dev/md0 # 创建名为 md0 的 RAID 设备
--level=0 # 指定 RAID 0
--raid-devices=2 # 用 2 块活动盘
验证创建结果:
1)查看阵列概况
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 nvme0n2[1] nvme0n1[0]
10475520 blocks super 1.2 512k chunks
2)查看详细状态
root@ubuntu ~# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 15 16:17:43 2026
Raid Level : raid0
Array Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri May 15 16:17:43 2026
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : original
Chunk Size : 512K
Consistency Policy : none
Name : ubuntu:0 (local to host ubuntu)
UUID : 579174b2:1e1c0583:9a4578ac:72afd403
Events : 0
Number Major Minor RaidDevice State
0 259 0 0 active sync /dev/nvme0n1
1 259 1 1 active sync /dev/nvme0n2
格式化与挂载:
root@ubuntu:~# mkfs.xfs /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=512 agcount=16, agsize=163712 blks
...............
root@ubuntu:~# mount /dev/md0 /mnt
root@ubuntu ~# df -h | grep md0
/dev/md0 10G 228M 9.8G 3% /mnt
'格式化 + 挂载成功,10G 可用 (2×5G)'
root@ubuntu:~# echo "RAID0 test" > /mnt/test.txt
root@ubuntu:~# cat /mnt/test.txt
RAID0 test
停止 RAID 0 (为后续实验释放磁盘):
1)卸载文件系统
root@ubuntu ~# umount /mnt
2)停止阵列
root@ubuntu ~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
3)释放磁盘 --> 清理元数据
root@ubuntu ~# mdadm --zero-superblock /dev/nvme0n1 /dev/nvme0n2
💡 两块盘互为镜像,数据一模一样,坏一张另一张顶上
root@ubuntu ~# mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=1.2 /dev/nvme0n1 /dev/nvme0n2
mdadm: array /dev/md1 started.
'因为会跳选择 [y/N]?' --> 元数据版本是否使用现代格式
--metadata=1.2
# 指定版本 --> 自动回答 yes 并强制创建
⚠️ metadata 1.2 vs 0.90 v1.2 元数据写在磁盘开头 (4K 偏移),v0.90 写在磁盘末尾
1)查看阵列概况
root@ubuntu:~#
md1 : active raid1 nvme0n2[1] nvme0n1[0]
5237760 blocks super 1.2 [2/2] [UU] --> '[UU] 表示两块盘都正常在线'
[=========>...........] resync = 48.9% xxx speed=213616K/sec
# 概率观察到同步进度
2)格式化与挂载
root@ubuntu ~# mkfs -t ext4 -F /dev/md1
-F # 强制格式化,不询问
root@ubuntu ~# mkdir -p /mnt/raid1
root@ubuntu ~# mount /dev/md1 /mnt/raid1
root@ubuntu ~# df -h | grep md1
/dev/md1 4.9G 24K 4.6G 1% /mnt/raid1
'可用的空间只有一块盘的容量' --> 5G
root@ubuntu ~# echo "RAID1 mirror test" > /mnt/raid1/test.txt
3)停止 (保留磁盘给下一个实验)
root@ubuntu ~# umount /mnt/raid1
root@ubuntu ~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@ubuntu ~# mdadm --zero-superblock /dev/nvme0n1 /dev/nvme0n2
💡 共 4 块盘 --> 3 块活动盘 + 1 块热备盘
任意一块活动盘故障 → 热备自动顶上开始重建
可用容量 = (3-1) × 5G = 10G
- 在这3块活动盘中 --> 只有两块用来真正的存放数据
- 一块校验, 一块热备
1)创建 RAID 5 + 热备
root@ubuntu ~# mdadm --create /dev/md5 --level=5 --raid-devices=3 --spare-devices=1 --metadata=1.2 \
/dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
--spare-devices=1 # 1 块作为热备 (nvme0n5)
2)查看阵列概况
root@ubuntu:~# cat /proc/mdstat
md5 : active raid5 nvme0n3[4] "nvme0n4[3](S)" nvme0n2[1] nvme0n1[0]
10475520 blocks super 1.2 level 5, 512k chunk, algorithm 2 "[3/3] [UUU]"
# nvme0n4[3](S) --> (S) 即 Spare 热备
# [3/3] [UUU] --> 3块活动盘 --> 都已同步 && 全部就绪
3)查看详细状态
root@ubuntu ~# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri May 15 16:45:06 2026
Raid Level : raid5
....................
Name : ubuntu:5 (local to host ubuntu)
UUID : 4343f479:179002a2:b2ba6cd2:009bebd7
Events : 18
Number Major Minor RaidDevice State
0 259 0 0 active sync /dev/nvme0n1
1 259 1 1 active sync /dev/nvme0n2
4 259 2 2 active sync /dev/nvme0n3
3 259 3 - spare /dev/nvme0n4
"3 块 active sync + 1 块 spare"
4)格式化并挂载
root@ubuntu ~# mkfs -t ext4 -F /dev/md5
root@ubuntu ~# mkdir -p /mnt/raid5
root@ubuntu ~# mount /dev/md5 /mnt/raid5
root@ubuntu ~# df -h | grep md5
/dev/md5 9.8G 24K 9.3G 1% /mnt/raid5
'共10G可用'
root@ubuntu ~# echo "RAID5 hot-spare test" > /mnt/raid5/test.txt
💡 模拟一块盘挂掉 → 观察热备自动接管 → 移除坏盘 → 添加新热备
1)模拟磁盘故障 — 标记 nvme0n1 为 faulty
root@ubuntu ~# mdadm /dev/md5 --fail /dev/nvme0n1
mdadm: set /dev/nvme0n1 faulty in /dev/md5
2)立即查看 — 热备自动启动,开始重建
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md5 : active raid5 nvme0n3[4] nvme0n4[3] nvme0n2[1] "nvme0n1[0](F)"
10475520 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
[===>.................] recovery = 16.2% (850332/5237760) finish=0.3min speed=212583K/sec
# nvme0n1[0](F) → (F) = Faulty 已标记故障
# nvme0n4 自动从 (S) 变成活动盘,接管重建
'热备自动顶上,无需人工干预!'
3)重建完成
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md5 : active raid5 nvme0n3[4] nvme0n4[3] nvme0n2[1] "nvme0n1[0](F)"-->故障
10475520 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
4)查看最新详情
root@ubuntu ~# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri May 15 16:45:06 2026
Raid Level : raid5
Number Major Minor RaidDevice State
3 259 3 0 active sync /dev/nvme0n4 <-- 原热备已接手
1 259 1 1 active sync /dev/nvme0n2
4 259 2 2 active sync /dev/nvme0n3
0 259 0 - faulty /dev/nvme0n1 <-- 标记故障
'热备消失 (Spare Devices: 0),因为它已经转正了'
5)移除故障盘
root@ubuntu ~# mdadm /dev/md5 --remove /dev/nvme0n1
mdadm: hot removed /dev/nvme0n1 from /dev/md5
6)添加新热备 — 模拟更换硬盘
root@ubuntu:~# mdadm --zero-superblock /dev/nvme0n5
'先清空新盘的元数据'
root@ubuntu ~# mdadm /dev/md5 --add /dev/nvme0n5
mdadm: added /dev/nvme0n5
==========================
root@ubuntu ~# mdadm --detail /dev/md5 | grep spare
5 259 4 - spare /dev/nvme0n5
# 新热备就位!
验证数据完整性:
root@ubuntu ~# cat /mnt/raid5/test.txt
RAID5 hot-spare test
# 数据完好无损,故障期间完全不受影响!
"数据清理"
root@ubuntu ~# umount /dev/md5
root@ubuntu ~# mdadm --stop /dev/md5
root@ubuntu ~# mdadm --zero-superblock /dev/nvme0n{1,2,3,4,5,6}
- 4 块盘组成 RAID 6,最多允许 2 块盘同时故障
没有热备盘
可用容量 = (4-2) × 5G = 10G
1)使用 4 块盘创建 RAID 6 (无热备)
root@ubuntu:~# mdadm --create /dev/md6 --level=6 --raid-devices=4 --metadata=1.2 \
/dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
mdadm: array /dev/md6 started.
2)等待同步
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md6 : active raid6 nvme0n4[3] nvme0n3[2] nvme0n2[1] nvme0n1[0]
10475520 blocks super 1.2 level 6, 512k chunk, algorithm 2 "[4/4] [UUUU]"
[=========>...........] resync = 49.7% (2603648/5237760) finish=0.2min speed=216970K/sec
3)同步完成
root@ubuntu:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md6 : active raid6 nvme0n4[3] nvme0n3[2] nvme0n2[1] nvme0n1[0]
10475520 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
⚠️ 重启后 RAID 设备名称可能变化,必须将阵列信息写入配置文件
1)生成配置
root@ubuntu ~# mdadm --detail --scan
ARRAY /dev/md6 metadata=1.2 UUID=04852c0f:c021750a:ed6a8074:a96c200d
2)写入配置文件 (Ubuntu 路径为 /etc/mdadm/mdadm.conf)
root@ubuntu ~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
root@ubuntu ~# tail -1 /etc/mdadm/mdadm.conf
ARRAY /dev/md6 metadata=1.2 UUID=04852c0f:c021750a:ed6a8074:a96c200d
⚠️ Rocky Linux / RHEL 的配置文件是
/etc/mdadm.conf,Ubuntu 是/etc/mdadm/mdadm.conf,注意区分
重新扫描激活 (对已停止的阵列):
root@ubuntu:~# mdadm --stop /dev/md6
mdadm: stopped /dev/md6
'停止后查看不到相关配置'
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: "<none>"
root@ubuntu ~# mdadm --assemble --scan
mdadm: /dev/md6 has been started with 4 drives.
"根据配置文件自动扫描并启动所有阵列"
# 再次查看
root@ubuntu ~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md6 : active raid6 nvme0n1[0] nvme0n4[3] nvme0n3[2] nvme0n2[1]
10475520 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
| 任务 | 命令 |
|---|---|
| 查看所有阵列概况 | cat /proc/mdstat |
| 监控重建进度 (实时刷新) | watch -n 1 cat /proc/mdstat |
| 查看阵列详细信息 | mdadm --detail /dev/mdX |
| 检查磁盘超级块信息 | mdadm --examine /dev/sdX |
| 标记磁盘故障 | mdadm /dev/mdX --fail /dev/sdY |
| 移除故障磁盘 | mdadm /dev/mdX --remove /dev/sdY |
| 添加磁盘 (热备/替换) | mdadm /dev/mdX --add /dev/sdY |
| 停止阵列 | mdadm --stop /dev/mdX |
| 清除磁盘 RAID 元数据 | mdadm --zero-superblock /dev/sdX |
| 扫描并重新组装 | mdadm --assemble --scan |
| 生成配置文件 | mdadm --detail --scan |
| 设置邮件通知 | /etc/mdadm/mdadm.conf 中添加 MAILADDR root |
- RAID 0:条带,快但无冗余,坏一块全丢
- RAID 1:镜像,最安全但容量利用率只有 50%
- RAID 5:分布式校验,容量 = (N-1),实验最常用
- RAID 6:双重校验,容量 = (N-2),允许坏两块
- 热备盘 (Hot Spare):平时闲置,故障时自动顶替,无需人工干预
- 核心流程:
create→--fail模拟故障 → 热备自动重建 →--remove移除坏盘 →--add加入新热备- Ubuntu 24.04 配置路径:
/etc/mdadm/mdadm.conf(非/etc/mdadm.conf)- 软件 RAID (
mdadm) 适合学习和非 IO 密集型场景,掌握后可平滑迁移至 CentOS Stream / RHEL / Rocky Linux