核心说明
本步骤适配 Ubuntu 系统(Debian 通用),基于 by-id 标识(避免设备名漂移)、GPT 分区表(支持大硬盘)、FD00 类型 RAID 分区(符合 Linux 软 RAID 规范),最终将 RAID6 格式化为 XFS(适配 Ollama 大模型 / 知识库存储)并挂载到 /Lanuer-Ai,解决了实操中「mkfs.xfs 找不到」「挂载点不存在」「命令换行报错」等问题。
前置准备
确认硬盘信息:5 块 NVMe 硬盘的 by-id 标识(示例):

/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540316
/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540318
/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540304
/dev/disk/by-id/nvme-Fanxiang_S790E_500GB_FXS790E253650047
/dev/disk/by-id/nvme-WDS500G3X0C-00SJG0_201890801660

备份数据:操作会清空硬盘所有数据,务必确认无重要数据。
切换 root 用户(避免权限不足):

sudo -i

步骤 1:安装依赖工具

# 更新源并安装 mdadm(RAID 管理)、gdisk(GPT 分区)、xfsprogs(XFS 格式化)
apt update && apt install -y mdadm gdisk xfsprogs util-linux

步骤 2:清理硬盘残留信息(关键)
清除每块硬盘的旧分区表、RAID 元数据,避免干扰:

# 定义 5 块硬盘的 by-id 列表(替换为实际路径)
declare -a DISKS=(
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540316"
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540318"
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540304"
   "/dev/disk/by-id/nvme-Fanxiang_S790E_500GB_FXS790E253650047"
   "/dev/disk/by-id/nvme-WDS500G3X0C-00SJG0_201890801660"
)

# 批量清理每块硬盘(前 10MB 数据,包含分区表/元数据)
for disk in "${DISKS[@]}"; do
   dd if=/dev/zero of=${disk} bs=1M count=10 && echo "清理 ${disk} 完成"
done

# 验证清理结果:无 PTTYPE/gpt 或分区信息
blkid | grep -f <(printf "%s\n" "${DISKS[@]}" | awk -F/ '{print $NF}')

步骤 3:创建 GPT + FD00 类型 RAID 分区
为每块硬盘创建填满整盘的 fd00(Linux RAID 专用)分区,分区号默认 1:

# 批量创建 RAID 分区(自动交互,无需手动输入)
for disk in "${DISKS[@]}"; do
   echo "正在为 ${disk} 创建 RAID 分区..."
   gdisk ${disk} << EOF
o
y
n
1

+0
t
1
fd00
w
y
EOF
done

# 验证分区结果:每块硬盘均有 1 个 fd00 类型分区
for disk in "${DISKS[@]}"; do
   gdisk -l ${disk} | grep -E "Partition 1|fd00" && echo "${disk} 分区正常"
done

步骤 4:获取分区的 by-id 路径 RAID 需基于分区的 by-id 创建(避免设备名漂移):

# 列出所有 nvme 分区的 by-id 路径(筛选出分区 1)
ll /dev/disk/by-id/ | grep nvme | grep part1

复制输出的 5 个分区路径(示例):
/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540316-part1
/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540318-part1
/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540304-part1
/dev/disk/by-id/nvme-Fanxiang_S790E_500GB_FXS790E253650047-part1
/dev/disk/by-id/nvme-WDS500G3X0C-00SJG0_201890801660-part1 

步骤 5:创建 RAID6 阵列

# 定义 5 个分区的 by-id 路径(替换为上一步实际输出)
declare -a RAID_PARTS=(
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540316-part1"
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540318-part1"
   "/dev/disk/by-id/nvme-Fanxiang_S790_500GB_FXS790254540304-part1"
   "/dev/disk/by-id/nvme-Fanxiang_S790E_500GB_FXS790E253650047-part1"
   "/dev/disk/by-id/nvme-WDS500G3X0C-00SJG0_201890801660-part1"
)

# 创建 RAID6:-l 6=RAID6,-n 5=5 块成员盘,-a yes=自动创建 /dev/md0
mdadm -Cv /dev/md0 -a yes -l 6 -n 5 "${RAID_PARTS[@]}"

# 验证 RAID 状态(显示 raid6、5 块成员盘、同步进度即为成功)
cat /proc/mdstat

步骤 6:格式化 RAID6 为 XFS(适配 Ollama / 知识库) 整行执行(避免换行拆分导致 -L/-s 被识别为独立命令):

# 格式化 /dev/md0 为 XFS,优化大文件/SSD 性能,卷标设为 Lanuer-Ai
mkfs.xfs -f -L Lanuer-Ai -s size=4096 -d su=128k,sw=1 /dev/md0

# 提取 /dev/md0 的 UUID(用于后续挂载)
RAID_UUID=$(blkid /dev/md0 | grep -o 'UUID="[^"]*"' | cut -d'"' -f2)
echo "RAID6 UUID: $RAID_UUID"  # 记录该 UUID,备用

步骤 7:创建挂载点并配置开机自动挂载

# 1. 创建 /Lanuer-Ai 挂载点(解决「mount point does not exist」报错)
mkdir -p /Lanuer-Ai

# 2. 备份原有 fstab(防止改错)
cp /etc/fstab /etc/fstab.bak

# 3. 写入挂载配置(基于 UUID,避免设备名漂移)
echo "UUID=$RAID_UUID /Lanuer-Ai xfs defaults 0 0" >> /etc/fstab

# 4. 测试挂载(无报错则配置正常)
mount -a

# 5. 验证挂载结果(显示 /dev/md0 挂载到 /Lanuer-Ai 即为成功)
df -h /Lanuer-Ai

步骤 8:适配 Ollama 权限配置
确保 Ollama 可读写 /Lanuer-Ai(未安装 Ollama 可先跳过,安装后再执行):

# 检查 ollama 用户是否存在,不存在则创建
id ollama || useradd -r -s /sbin/nologin ollama

# 设置挂载点所有者为 ollama
chown -R ollama:ollama /Lanuer-Ai

# 配置权限(755:ollama 可读写,其他用户只读)
chmod -R 755 /Lanuer-Ai

步骤 9:固化 RAID 配置(避免重启识别异常)

# 扫描 RAID 信息并写入 mdadm.conf
mdadm --detail --scan > /etc/mdadm/mdadm.conf

# 更新 initramfs(确保启动时加载 RAID 驱动)
update-initramfs -u

步骤 10:重启验证

reboot
# 重启后执行以下命令验证:
# 1. RAID 正常运行
cat /proc/mdstat
# 2. /Lanuer-Ai 已挂载
df -h /Lanuer-Ai
# 3. 权限正常
ls -ld /Lanuer-Ai

常见问题排查
mkfs.xfs 找不到命令:执行 apt install -y xfsprogs 安装即可。
mount: /Lanuer-Ai: mount point does not exist:执行 mkdir -p /Lanuer-Ai 创建挂载点。
-L/-s/-d 未找到命令:确保格式化命令整行执行,不要拆分换行。
/dev/md0 权限不够:当前已是 root 用户,若仍报错执行 chmod 660 /dev/md0 后重新格式化。
重启后 RAID 消失:检查分区类型是否为 fd00,并确认 /etc/mdadm/mdadm.conf 配置正确。

常用运维命令

# 查看 RAID 详细信息
mdadm --detail /dev/md0
# 监控 RAID 同步进度
watch -n 1 cat /proc/mdstat
# 检查 fstab 配置错误
mount -a
# 查看硬盘健康状态(NVMe 专用)
nvme smart-log /dev/nvme0n1 # 替换为实际硬盘名