核心说明
本步骤适配 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 # 替换为实际硬盘名
评论 (0)