类别:Ubantu / 日期:2026-08-26 / 浏览:128 / 评论:0
需求:
已有的Ubuntu 22.04系统上操作。一共4块硬盘,其中一块已安装ubutntu22.04,系统盘是sdc(LVM管理)不动,现成想将剩下的三块硬盘(sda、sdb和sdd)安装成RAID5,并挂载到/data目录。
下面是详细的操作步骤。
重要提示
操作前请务必确认三块硬盘上的数据已备份且不再需要。 以下操作会清除这三块硬盘上的所有数据。
第一步:确认硬盘信息
首先,找出哪三块硬盘是你要组建RAID的
lsblk
根据SIZE确认你要用的三块硬盘名称(如 /dev/sda、/dev/sdb、/dev/sdd)。请仔细核对,不要选错。
第二步:安装 mdadm
Ubuntu 22.04 默认已安装 mdadm,如果没有,执行:
sudo apt update sudo apt install mdadm -y
第三步:创建 RAID 5 阵列
用以下命令创建RAID 5。请将 /dev/sda /dev/sdb /dev/sdd 替换为你实际的硬盘名称。
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdd
/dev/md0:新创建的RAID设备名称。--level=5:RAID级别为5。--raid-devices=3:使用3块硬盘。
第四步:监控阵列同步
RAID 5创建后会自动开始后台同步(重建奇偶校验数据)。查看进度:
cat /proc/mdstat
输出中可以看到类似 [======>........] recovery = 35.2% 的进度条。同步完成后会显示 [UUU]。
同步完成后再进行下一步操作。
第五步:格式化并挂载
格式化为 xfs文件系统:
sudo mkfs.xfs /dev/md0 #如果格式化为ext4系统,用以下命令 # sudo mkfs.ext4 /dev/md0
2.创建挂载点:
sudo mkdir -p /data
3.临时挂载:
sudo mount /dev/md0 /data
4.验证挂载:
df -hT /data
第六步:配置开机自动挂载
为了重启后RAID能自动识别和挂载,需要两步配置。
保存RAID配置(系统启动时自动组装阵列):
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf sudo update-initramfs -u
2.添加到 fstab 实现自动挂载:
先获取 /dev/md0 的UUID:
sudo blkid /dev/md0
输出以下:(a964bf13-0419-4d4f-8b5a-be9b5373ce4a)
编辑 /etc/fstab:
sudo vim /etc/fstab
在文件末尾添加一行(将 <your-uuid> 替换为实际UUID,<文件类型>:ext4或xfs):
#格式如下: UUID=<your-uuid> /data <文件类型> defaults,nofail 0 0 #本次实际输入: UUID=a964bf13-0419-4d4f-8b5a-be9b5373ce4a /data xfs defaults,nofail 0 0
nofail 选项可以防止阵列挂载失败时系统无法启动。
保存退出
第七步:验证重启
重启系统,确保一切正常:
sudo reboot
重启后检查:
# 查看RAID状态 sudo mdadm --detail /dev/md0 # 查看挂载情况 df -h /data # 查看所有挂载 mount | grep /data
有个奇怪的地方,配置好后,硬盘顺序自动变为dba(系统盘),dbb、dbc和dbd为RAID5盘。但总的来说RAID配置是正确的,只是硬盘被操作系统自动重新命名了。这在多硬盘系统中很常见。
=======检查RAID硬盘情况和日志==========
一、快速状态检查
1. 查看RAID阵列整体状态
cat /proc/mdstat
2. 查看详细阵列信息
sudo mdadm --detail /dev/md0
重点关注:
State:应该是
clean或activeActive Devices:应该是全部数量(如3)
Failed Devices:应该是0
Working Devices:应该是全部数量
二、检查每块硬盘的健康状态
1. 查看每块硬盘的RAID元数据
# 分别查看三块硬盘的RAID成员信息
sudo mdadm --examine /dev/sdb | grep -E "Device|State|UUID|Role"
sudo mdadm --examine /dev/sdc | grep -E "Device|State|UUID|Role"
sudo mdadm --examine /dev/sdd | grep -E "Device|State|UUID|Role"
关键信息解读:
Role:应该是0、1、2(对应阵列中的位置)State:应该是active或syncDevice:显示硬盘设备名
三、查看RAID相关日志
1. 查看内核消息(实时)
# 实时查看内核消息(RAID事件会记录在这里)
sudo dmesg -T -w | grep -i raid
-T:显示可读时间戳-w:实时监控(按Ctrl+C退出)grep -i raid:只显示RAID相关消息
2. 查看系统日志中的RAID事件
# 查看systemd日志中的RAID相关记录
sudo journalctl -u mdadm -n 50
# 查看所有包含"raid"或"md0"的日志
sudo journalctl | grep -E "raid|md0" | tail -50
# 查看今天的RAID相关日志
sudo journalctl --since today | grep -i raid
持续监控脚本
如果想持续监控RAID状态,可以创建一个简单的脚本:
# 创建监控脚本
cat > ~/check_raid.sh << 'EOF'
#!/bin/bash
echo "=== RAID Status ==="
cat /proc/mdstat
echo ""
echo "=== RAID Detail ==="
sudo mdadm --detail /dev/md0 | grep -E "State|Active|Failed|Working|Spare"
echo ""
echo "=== Disk Health ==="
for disk in sdb sdc sdd; do
echo "/dev/$disk:"
sudo smartctl -H /dev/$disk | grep "SMART overall-health"
done
EOF
chmod +x ~/check_raid.sh
# 执行
./check_raid.sh
=======制造问题=========
出现错误:手工拔下一块硬盘dbd,之前保存在/data里面的数据已消失
原因:
md0 显示为 inactive(非活动状态),这意味着RAID阵列没有正常启动,而且无法挂载。
不过数据还在硬盘上,只是阵列处于非活动状态。我们需要手动重新激活它。
md0 : inactive sdb[0](S) sdc[1](S) 20953088 blocks super 1.2
inactive:阵列处于非活动状态(没有正常组装)(S):表示这两块硬盘被标记为 Spare(备用盘),而不是阵列成员RAID元数据还在,但阵列没有正确激活
立即修复步骤
第一步:停止当前错误的阵列
sudo mdadm --stop /dev/md0
第二步:重新强制组装阵列(只使用两块硬盘)
sudo mdadm --assemble --force --run /dev/md0 /dev/sdb /dev/sdc
参数说明:
--force:强制组装(即使认为可能不完整)--run:立即启动阵列(即使降级也启动)
第三步:检查是否成功
cat /proc/mdstat
第四步:检查文件系统
# 先检查超级块是否正常 sudo mdadm --detail /dev/md0 # 检查文件系统 sudo fsck -n /dev/md0
第五步:尝试挂载
# 先只读挂载测试 sudo mount -o ro /dev/md0 /data # 如果成功,查看数据 ls -la /data # 如果数据完整,重新挂载为读写 sudo mount -o remount,rw /dev/md0 /data
======新加入硬盘,恢复回raid5========
现在找了一块新的10硬盘,接入系统,需要恢复回raid5,数据不变。如下图
现在情况很清晰:
sdb和sdc已经组成了 降级模式 的RAID 5阵列(显示为md0,已挂载到/data)sdd是新插入的空白硬盘,还没有加入阵列阵列目前工作正常,数据完整
现在需要做的就是把新硬盘 sdd 添加到现有的RAID 5阵列中,让它自动同步恢复。
操作步骤
第一步:确认当前阵列状态
sudo mdadm --detail /dev/md0
State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0
这确认了阵列处于降级状态,等待第三块硬盘加入。
第二步:将新硬盘添加到阵列
sudo mdadm --add /dev/md0 /dev/sdd
第三步:监控同步进度
cat /proc/mdstat
同步完成
第四步:验证阵列完整状态
sudo mdadm --detail /dev/md0
第五步:验证数据完整性
# 查看数据是否正常 ls -la /data # 查看挂载情况 df -h /data # 查看是否有错误日志 sudo dmesg -T | grep -i raid | tail -2


















