基于openEuler 24.03 LTS SP3 利用 AI 扩展 LVM PE 大小
LVM 快照基于 ** 写时复制 (COW)** 技术,能在秒级创建数据的一致性快照,适合训练前备份和故障恢复。:模型训练过程中,/ai/data 空间不足,新增了一块 4TB NVMe 磁盘。:不要将 VG 空间全部分配完,预留 10-20% 用于应急扩容。:多块 NVMe 磁盘创建条带化 LV,提升 I/O 并行度。:以下操作会永久删除磁盘上的所有数据,请确认磁盘未被使用!:这里指定 PE=3
一、背景认知:为什么 AI 场景必须重视 LVM PE 大小
1.1 openEuler 24.03 LTS SP3 与 AI 的天然契合
- 版本定位:2025 年 12 月发布的首个支持超节点的 LTS 版本,基于 Linux 6.6 内核,官方原生优化 AI 训练 / 推理性能,大模型 MoE 预训练性能提升 3 倍
- 默认存储方案:系统默认采用 LVM 逻辑卷管理,是信创环境下 AI 服务器的标准存储规范
- AI 存储痛点:大模型训练涉及GB 级单文件(模型权重、Checkpoint)、TB 级数据集和高频大块 I/O,默认 4MB PE 会导致严重的元数据开销和性能下降
1.2 LVM 核心概念(AI 场景必懂)
物理磁盘 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → XFS文件系统 → 挂载点(/ai)
- PE(Physical Extent):LVM 最小存储分配单位,创建 VG 时指定,一旦创建无法修改
- LE(Logical Extent):LV 的最小分配单位,与 PE 大小一一对应
- AI 场景核心矛盾:PE 太小→元数据过多→管理开销大→I/O 性能差;PE 太大→小文件空间浪费
1.3 AI 场景 PE 大小选择标准
| 存储容量 | 普通场景 | AI 大模型场景 | 适用业务 |
|---|---|---|---|
| <1TB | 4MB (默认) | 8MB | 个人 AI 实验、小模型推理 |
| 1TB~10TB | 16MB | 32MB | 7B/13B 模型微调、中等数据集训练 |
| 10TB~100TB | 32MB | 64MB | 34B/70B 模型全量训练、多模态数据存储 |
| >100TB | 64MB | 128MB | 千亿参数模型集群、PB 级数据湖 |
关键提示:AI 场景优先选择32MB 或 64MB PE,平衡性能与空间利用率。系统盘保持默认 4MB 即可,单独为 AI 数据盘创建专用 VG。
二、核心配置:AI 场景 LVM 环境准备
2.1 系统要求与工具安装
openEuler 24.03 LTS SP3 标准安装已自带 lvm2,最小化安装需手动安装:
# 1. 更新软件源缓存(必做)
sudo dnf makecache
# 2. 安装LVM工具集
sudo dnf install -y lvm2
# 3. 验证安装
lvm version
# 4. 检查监控服务状态(默认已启用)
sudo systemctl status lvm2-monitor
2.2 AI 服务器磁盘规划最佳实践
| 磁盘类型 | 用途 | 分区方案 | PE 大小 | 文件系统 |
|---|---|---|---|---|
| SATA/SAS HDD | 系统盘 | /boot (2GB)+/boot/efi (1GB)+LVM 系统 VG | 4MB | XFS |
| NVMe SSD | AI 数据盘 | 整块磁盘作为 PV,不分区 | 32MB/64MB | XFS |
| 多块 NVMe | 高速存储池 | 所有 NVMe 合并为一个 VG | 64MB | XFS |
AI 专属建议:
- 系统盘与 AI 数据盘物理分离,避免系统 I/O 影响训练
- 优先使用NVMe SSD作为 AI 数据盘,HDD 仅用于冷数据备份
- 禁用 swap 分区(AI 训练对内存敏感,swap 会导致性能暴跌)openEuler社区
2.3 核心查看命令(AI 运维必备)
# 查看所有磁盘及分区(最常用)
lsblk
# 查看LVM可用磁盘
lvmdiskscan
# 查看物理卷摘要
pvs
# 查看卷组摘要(重点看PE大小和剩余空间)
vgs
# 查看逻辑卷摘要
lvs
# 查看卷组详细信息(确认PE大小)
vgdisplay vg_ai
# 查看文件系统使用情况
df -hT
三、基础实操:从零创建 AI 专用 LVM 存储池
实验环境
- 系统:openEuler 24.03 LTS SP3
- 空闲磁盘:2 块 NVMe SSD,分别为
/dev/nvme1n1(2TB) 和/dev/nvme2n1(2TB) - 目标:创建 PE=32MB 的 AI 专用卷组
vg_ai,划分逻辑卷lv_model(2TB) 和lv_data(2TB)
3.1 步骤 1:准备磁盘(数据会被清除!)
⚠️ 警告:以下操作会永久删除磁盘上的所有数据,请确认磁盘未被使用!
# 1. 查看系统磁盘,确认目标磁盘
lsblk
# 预期输出:
# nvme1n1 259:0 0 2T 0 disk
# nvme2n1 259:1 0 2T 0 disk
# 2. 清除磁盘旧分区表和数据(推荐执行)
sudo wipefs -a /dev/nvme1n1 /dev/nvme2n1
3.2 步骤 2:创建物理卷 (PV)
将空闲磁盘转换为 LVM 可识别的物理卷:
sudo pvcreate /dev/nvme1n1 /dev/nvme2n1
# 预期输出:
# Physical volume "/dev/nvme1n1" successfully created.
# Physical volume "/dev/nvme2n1" successfully created.
# 验证PV创建结果
sudo pvs
3.3 步骤 3:创建 AI 专用卷组 (VG) 并指定 PE 大小
✅ 关键步骤:这里指定 PE=32MB,适合 7B/13B 模型训练
# 创建VG并指定PE大小为32MB
sudo vgcreate -s 32M vg_ai /dev/nvme1n1 /dev/nvme2n1
# 预期输出:
# Volume group "vg_ai" successfully created
# 验证VG创建结果,重点确认PE大小
sudo vgdisplay vg_ai
# 预期输出关键行:
# PE Size 32.00 MiB
# Total PE 131071
# Free PE 131071
3.4 步骤 4:创建 AI 逻辑卷 (LV)
从 VG 中划分逻辑卷用于存储模型和数据:
# 1. 创建模型存储逻辑卷,大小2TB
sudo lvcreate -L 2T -n lv_model vg_ai
# 2. 创建数据集存储逻辑卷,使用所有剩余空间
sudo lvcreate -l +100%FREE -n lv_data vg_ai
# 参数说明:
# -L:指定绝对大小(如10G、500M、2T)
# -l:指定PE数量,+100%FREE表示使用所有剩余空间
# -n:指定逻辑卷名称
# 验证LV创建结果
sudo lvs
3.5 步骤 5:格式化逻辑卷(XFS)
openEuler 默认推荐 XFS 文件系统,专为大文件和高并发优化:
# 格式化模型卷
sudo mkfs.xfs /dev/vg_ai/lv_model
# 格式化数据卷
sudo mkfs.xfs /dev/vg_ai/lv_data
3.6 步骤 6:临时挂载逻辑卷
# 1. 创建挂载点目录
sudo mkdir -p /ai/model /ai/data
# 2. 临时挂载(重启后失效)
sudo mount /dev/vg_ai/lv_model /ai/model
sudo mount /dev/vg_ai/lv_data /ai/data
# 3. 验证挂载结果
df -hT
3.7 步骤 7:配置永久挂载(重启生效)
✅ 推荐使用 UUID 挂载,比设备名更稳定,避免磁盘顺序变化导致挂载失败
# 1. 获取逻辑卷的UUID
sudo blkid /dev/vg_ai/lv_model
sudo blkid /dev/vg_ai/lv_data
# 预期输出:
# /dev/vg_ai/lv_model: UUID="xxxx-xxxx-xxxx-xxxx" TYPE="xfs"
# /dev/vg_ai/lv_data: UUID="yyyy-yyyy-yyyy-yyyy" TYPE="xfs"
# 2. 编辑/etc/fstab文件
sudo vi /etc/fstab
# 3. 在文件末尾添加以下内容(替换为你的UUID)
# AI专用LVM逻辑卷永久挂载
UUID=xxxx-xxxx-xxxx-xxxx /ai/model xfs defaults 0 0
UUID=yyyy-yyyy-yyyy-yyyy /ai/data xfs defaults 0 0
# 4. 验证fstab配置是否正确(必须执行!错误会导致系统无法启动)
sudo mount -a
# 5. 重启系统验证
sudo reboot
3.8 步骤 8:设置 AI 目录权限
# 创建AI用户(可选)
sudo useradd -m aiuser
# 设置目录所有者
sudo chown -R aiuser:aiuser /ai
# 设置目录权限
sudo chmod -R 755 /ai
四、高阶用法:AI 场景 LVM 高级操作
4.1 AI 数据盘在线扩容(零停机)
场景:模型训练过程中,/ai/data 空间不足,新增了一块 4TB NVMe 磁盘/dev/nvme3n1
# 1. 准备新磁盘
sudo wipefs -a /dev/nvme3n1
# 2. 创建物理卷
sudo pvcreate /dev/nvme3n1
# 3. 将新PV添加到AI卷组
sudo vgextend vg_ai /dev/nvme3n1
# 4. 验证VG扩容结果
sudo vgs vg_ai
# 5. 扩容数据逻辑卷(使用所有剩余空间)
sudo lvextend -l +100%FREE /dev/vg_ai/lv_data
# 6. 扩容XFS文件系统(关键!很多人忘记这一步)
# 注意:XFS使用xfs_growfs,后面跟挂载点,不是设备路径!
sudo xfs_growfs /ai/data
# 7. 验证扩容结果
df -h /ai/data
4.2 系统安装时修改默认卷组 PE 大小
如果需要在系统安装时就设置好 AI 专用 PE 大小,按以下步骤操作:
- 在 "安装概览" 页面点击 "安装目的地"
- 选择要安装系统的磁盘,勾选 "自定义" 分区,点击 "完成"
- 在 "手动分区" 界面,点击 "卷组" 区域中的 "修改" 按钮openEuler社区
- 在弹出的 "修改卷组" 对话框中,找到 "物理扩展块大小" 选项
- 选择或输入你需要的 PE 大小(如 32MB)
- 点击 "保存",然后继续完成系统安装
4.3 LVM 快照:AI 训练 Checkpoint 快速备份
LVM 快照基于 ** 写时复制 (COW)** 技术,能在秒级创建数据的一致性快照,适合训练前备份和故障恢复
# 1. 创建lv_model的快照,命名为lv_model_snap,大小50GB
# 快照大小建议为原LV容量的15-20%,需大于备份期间的写入量
sudo lvcreate -L 50G -s -n lv_model_snap /dev/vg_ai/lv_model
# 2. 挂载快照(只读)
sudo mkdir /ai/model_snap
sudo mount -o ro /dev/vg_ai/lv_model_snap /ai/model_snap
# 3. 从快照恢复数据(训练失败时使用)
sudo umount /ai/model
sudo umount /ai/model_snap
sudo lvconvert --merge /dev/vg_ai/lv_model_snap
sudo mount /dev/vg_ai/lv_model /ai/model
4.4 调整已存在卷组的 PE 大小
⚠️ 重要警告:PE 大小一旦创建无法直接修改!只能通过 "创建新卷组→迁移数据→删除旧卷组" 的方式调整
# 1. 准备新磁盘/dev/nvme4n1,创建新VG并指定PE=64MB
sudo pvcreate /dev/nvme4n1
sudo vgcreate -s 64M vg_ai_new /dev/nvme4n1
# 2. 在新VG中创建相同大小的逻辑卷
sudo lvcreate -L 2T -n lv_model_new vg_ai_new
sudo mkfs.xfs /dev/vg_ai_new/lv_model_new
# 3. 挂载新逻辑卷
sudo mkdir /ai/model_new
sudo mount /dev/vg_ai_new/lv_model_new /ai/model_new
# 4. 迁移数据(使用rsync保证数据一致性)
sudo rsync -av /ai/model/ /ai/model_new/
# 5. 卸载旧逻辑卷,修改/etc/fstab指向新逻辑卷
sudo umount /ai/model
sudo vi /etc/fstab
# 6. 删除旧逻辑卷和旧卷组
sudo lvremove /dev/vg_ai/lv_model
sudo vgremove vg_ai
sudo pvremove /dev/nvme1n1 /dev/nvme2n1
五、拓展建议:AI 场景 LVM 最佳实践
5.1 AI 训练存储性能优化
-
使用条带化逻辑卷:多块 NVMe 磁盘创建条带化 LV,提升 I/O 并行度
# 创建4路条带化逻辑卷,条带大小=PE大小 sudo lvcreate -L 8T -i 4 -I 32M -n lv_stripe vg_ai -
优化 XFS 挂载参数:在 /etc/fstab 中添加 AI 优化参数
UUID=xxxx /ai/data xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 0 -
预留 VG 空间:不要将 VG 空间全部分配完,预留 10-20% 用于应急扩容
5.2 常见陷阱与避坑指南
| 陷阱 | 后果 | 解决方法 |
|---|---|---|
| 只扩展 LV,忘记扩展文件系统 | df -h 显示空间没有变化 | 执行sudo xfs_growfs 挂载点 |
| 尝试缩容 XFS 文件系统 | 数据损坏,无法挂载 | 备份数据后重建 LV 和文件系统 |
| 系统盘使用过大 PE | 系统启动变慢,小文件空间浪费 | 系统盘保持默认 4MB,单独创建 AI 数据 VG |
| 使用设备名挂载 | 重启后磁盘顺序变化,挂载失败 | 改用 UUID 方式挂载 |
| fstab 配置错误 | 系统无法启动 | 进入单用户模式,注释错误的挂载行 |
5.3 AI 场景 LVM 监控与运维
- 定期监控空间使用:设置脚本监控逻辑卷使用率,超过 80% 自动告警
- 定期清理 Checkpoint:大模型训练会产生大量 Checkpoint 文件,及时清理无用文件
- 数据备份:LVM 快照不能替代完整备份,重要模型和数据定期备份到异地存储
- 磁盘健康检查:定期使用
smartctl检查 NVMe 磁盘健康状态
5.4 官方参考资料
- openEuler 官方 LVM 文档:https://docs.openeuler.org/zh/docs/24.03_LTS/docs/Storage/lvm.html
- openEuler 24.03 LTS SP3 技术白皮书:https://www.openeuler.org/whitepaper/en/openEuler%2024.03%20LTS%20SP3%20Technical%20White%20Paper.pdf
- openEuler 社区论坛:https://forum.openeuler.org/
更多推荐


所有评论(0)