毅硕HPC | Lustre文件系统在HPC集群中的部署实战

简介: Lustre作为一种开源的、分布式并行文件系统,凭借其卓越的可扩展性和极高的I/O吞吐量,成为了全球Top 500超算中心的首选。Lustre不仅仅是一个存储系统,它是连接计算资源与科学数据的纽带。

在高性能计算(HPC)领域,计算能力(算力)与数据吞吐能力(I/O)始终是相辅相成的。随着并行计算规模的扩大,传统的NAS存储往往会成为系统的瓶颈。Lustre作为一种开源的、分布式并行文件系统,凭借其卓越的可扩展性和极高的I/O吞吐量,成为了全球Top 500超算中心的首选。


一、 为什么HPC离不开Lustre?

在典型的HPC任务中(如气象预报、基因测序、流体力学模拟),成百上千个计算节点需要同时读写同一份数据集。Lustre的核心优势在于:

  • 高带宽与高并发:通过将数据条带化(Striping)分布在多个存储服务器上,实现并发访问。
  • 元数据与数据分离:独立处理文件索引与实际数据,极大提升了文件查找与读写效率。
  • 横向扩展能力:支持在线增加存储节点,容量可达PB级甚至EB级。

二、 Lustre核心架构拆解

在部署之前,必须理解其三大核心组件:

  • MDS (Metadata Server):元数据服务器。负责管理文件系统的目录结构、权限、文件布局。其后端的存储实体称为MDT。
  • OSS (Object Storage Server):对象存储服务器。负责存储实际的文件内容。其后端的存储实体称为OST。
  • Lustre Client:计算节点通过客户端挂载Lustre分区,像使用本地硬盘一样使用分布式存储。

未标题-1 [已恢复]22-03-03.png


三、 部署实战:从零搭建Lustre环境

1. 环境准备

  • 操作系统:建议使用RHEL/CentOS 7.x或Rocky Linux 8.x。
  • 内核要求:Lustre服务器端需要安装经过补丁修改的特制内核。
  • 网络:建议使用InfiniBand (IB) 或10/25/100G以太网。

2. 安装Lustre软件包

在MDS和OSS节点上配置Whamcloud Lustre官方Repo并安装(组合节点,MGS、MDS和OSS部署在同一台虚拟机):

  • MDS节点配置Whamcloud Lustre Server和e2fsprogs源:nano /etc/yum.repos.d/lustre.repo
    [lustre-server]
    name=Lustre Server
    baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.15.3/el8.8/server/
    gpgcheck=0
    enabled=1

    [e2fsprogs-wc]
    name=e2fsprogs-wc
    baseurl=https://downloads.whamcloud.com/public/e2fsprogs/latest/el8/
    gpgcheck=0
    enabled=1
  • MDS节点安装Lustre Server:
    # 先安装patch后的内核:
    dnf install -y kernel-4.18.0-477.10.1.el8_lustre kernel-headers-4.18.0-477.10.1.el8_lustre kernel-core-4.18.0-477.10.1.el8_lustre
    # 安装Lustre Server
    dnf install -y lustre lustre-osd-ldiskfs-mount kmod-lustre-osd-ldiskfs

321.png

安装成功后查看当前默认使用的内核: grubby --info=ALL | grep -E "kernel|index"

322.png

按索引设置默认内核为lustre:grubby --set-default-index=1

确定当前引导模式,重新生成配置文件:

    [ -d /sys/firmware/efi ] && echo "EFI Mode" || echo "Legacy Mode"

    # 输出EFI Mode 则执行:
    grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

    # 输出Legacy Mode 则执行
    grub2-mkconfig -o /boot/grub2/grub.cfg

323.png

重启系统,若提示内核非法的签名,关闭secure boot再重启系统。执行uname -r 查看是否设置成功:

    4.18.0-477.10.1.el8_lustre.x86_64
  • 计算节点上配置Whamcloud Lustre Client源:nano /etc/yum.repos.d/lustre.repo
    [lustre-client]
    name=Lustre Client
    baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.15.3/el8.8/client/
    gpgcheck=0
    enabled=1
  • 计算节点安装Lustre Client
    yum install -y lustre-client kmod-lustre-client

324.png

3. 格式化并初始化存储

这是部署的关键步骤,使用 mkfs.lustre 命令。

  • 在MDS上初始化MDT:
    # --mgs 表示同时作为管理服务器,--mdt 表示元数据目标
    modprobe ldiskfs
    mkfs.lustre --fsname=hpcfs --mgs --mdt --index=0 /dev/xvdb
    mkdir /mnt/mdt && mount -t lustre /dev/xvdb /mnt/mdt

331.png

可以看到:

    # df -h
    Filesystem             Size  Used Avail Use% Mounted on
    devtmpfs               4.8G     0  4.8G   0% /dev
    tmpfs                  4.8G     0  4.8G   0% /dev/shm
    tmpfs                  4.8G   17M  4.8G   1% /run
    tmpfs                  4.8G     0  4.8G   0% /sys/fs/cgroup
    /dev/mapper/rhel-root   70G   20G   51G  28% /
    /dev/xvda2            1014M  352M  663M  35% /boot
    /dev/mapper/rhel-home   41G   15G   27G  36% /home
    /dev/xvda1             599M  5.8M  594M   1% /boot/efi
    tmpfs                  971M     0  971M   0% /run/user/1001
    manage01:/slurm-data    17G  7.2G  9.9G  43% /slurm-data
    tmpfs                  971M     0  971M   0% /run/user/0
    /dev/xvdb               56G  5.6M   51G   1% /mnt/mdt
    # /dev/xvdb原100GB

Lustre的ldiskfs后端文件系统在格式化时,为了保障元数据的高性能和高可靠性,采取了特殊的预留和分配策略。

  • 元数据预留 (Inode Space):Lustre的MDT并不存储实际文件内容,而是存储文件的“索引”(元数据)。为了防止在磁盘空间还没满时元数据索引(Inode)就耗尽,mkfs.lustre 在格式化时会预分配大量的Inode。在 df 命令看来,这些预分配的结构占用了大量“已用”或“不可用”的空间。
  • Journal(日志) 空间:为了保证元数据的一致性,Lustre会分配一个较大的Journal区(通常为400MB到数GB),用于记录事务日志。
  • 系统保留空间 (Reserved Blocks):默认情况下,Ext4/ldiskfs会保留5%的空间供root用户使用,防止空间完全塞满导致系统崩溃。
  • Lustre内部管理开销:Lustre会在MDT上创建一组特殊的系统文件(如 CATALOGS, CONFIGS, O/0/LAST_ID 等),用于管理整个集群的配置和对象索引。

可以看到Inode数量非常庞大:

    # df -i /mnt/mdt
    Filesystem       Inodes IUsed    IFree IUse% Mounted on
    /dev/xvdb      41943040   266 41942774    1% /mnt/mdt
  • 在OSS(即MDS) 上初始化OST:
    # --mgsnode 指向 MDS 的地址,--ost 表示对象存储目标
    mkfs.lustre --fsname=hpcfs --mgsnode=192.168.1.11@tcp --ost --index=0 /dev/xvdc
    mkdir /mnt/ost0 && mount -t lustre /dev/xvdc /mnt/ost0

可以看到:

    # df -h
    Filesystem             Size  Used Avail Use% Mounted on
    devtmpfs               4.8G     0  4.8G   0% /dev
    tmpfs                  4.8G     0  4.8G   0% /dev/shm
    tmpfs                  4.8G   18M  4.8G   1% /run
    tmpfs                  4.8G     0  4.8G   0% /sys/fs/cgroup
    /dev/mapper/rhel-root   70G   20G   51G  28% /
    /dev/xvda2            1014M  352M  663M  35% /boot
    /dev/mapper/rhel-home   41G   15G   27G  36% /home
    /dev/xvda1             599M  5.8M  594M   1% /boot/efi
    tmpfs                  971M     0  971M   0% /run/user/1001
    manage01:/slurm-data    17G  7.2G  9.9G  43% /slurm-data
    tmpfs                  971M     0  971M   0% /run/user/0
    /dev/xvdb               56G  5.6M   51G   1% /mnt/mdt
    /dev/xvdc               98G  1.1M   93G   1% /mnt/ost0
    # /dev/xvdc 100GB

4. 客户端挂载

在计算节点上执行:

    mount -t lustre 192.168.1.11@tcp:/hpcfs /pfs/storage

四、 Lustre详细优化参数表

1. LNet网络层优化 (InfiniBand场景)

LNet是Lustre的传输基石。在高带宽网络下,默认参数往往无法跑满物理带宽。

41.jpg

操作方式: 修改 /etc/modprobe.d/lnet.conf,例如: options lnet networks=o2ib(ib0) peer_credits=32 credits=256

2. 操作系统与内核参数 (OS Level)

服务器端的内核调度对存储延迟影响极大。

42.jpg

3. Lustre核心性能参数 (MDS/OSS)

这些参数通常通过 lctl 命令在运行时动态调整,或在挂载时持久化。

  • 元数据服务器 (MDS) 优化

    • MDT预读(Metadata Read-ahead): lctl set_param mdt.*.dir_restripe=1 (仅限Lustre 2.12+) 允许在大型目录扫描时进行更高效的元数据获取。
    • 最大线程数: lctl set_param mdt.*.threads_max=512 对于高并发元数据请求(如大量ls或stat操作),调高线程数可降低排队。
  • 对象存储服务器 (OSS) 优化

    • OSS并发线程: lctl set_param ost.*.threads_max=256 根据CPU核心数调整,通常建议为核心数的2-4倍。
    • 最大条带大小: lctl set_param obdfilter.*.brw_size=16 将单次RPC的I/O大小从默认的1MB提升至16MB,显著提升大块连续写吞吐量。

4. 客户端 (Client) 条带化策略优化

条带化(Striping)是Lustre最具威力的工具,需要根据应用模型动态调整。

43.jpg

为某个高性能计算任务目录设置高条带化

lfs setstripe -c 16 -S 2M /pfs/storage/simulation_data/


五、 运维建议与监控

1. 条带化策略 (File Striping)

这是Lustre的灵魂。运维人员可以根据业务需求调整文件在多少个OST上分布。

  • 小文件场景:设置 stripe_count=1,减少寻址开销。
  • 大文件/高并发场景:增加 stripe_count,将读写压力分散到多个OSS。
    # 查看当前目录条带属性
    lfs getstripe /pfs/storage/data
    # 设置新文件的条带数为 4
    lfs setstripe -c 4 /pfs/storage/big_file.dat

2. 健康监控

运维人员需重点关注:

  • LNET状态:通过 lnetctl 检查网络连通性。
  • 定期检查平衡性:使用 lfs df -h。如果某些OST的空间使用率远高于其他,会触发I/O倾斜,导致整体性能下降。
  • 日志监控:监控 /var/log/messagesdmesg 中的"LustreError",特别是关于 "slow RPC"的报警,这通常预示着底层硬盘可能存在坏道或网络链路不稳定。
  • Benchmark测试:在交付前,务必使用IOR或mdtest进行基准测试,验证参数调整前后的吞吐率(GB/s)和IOPS差异。

六、 总结与最佳实践

在HPC项目实施中,Lustre分布式并行文件系统的稳定性直接决定了整个集群的作业运行率。

  • 高可用性 (HA):在生产环境中,务必为MDS配置双机热备(如使用Pacemaker+Corosync)。
  • 硬件选型:MDT建议使用NVMe SSD以加速元数据处理;OST则可根据成本选择SAS HDD。

Lustre不仅仅是一个存储系统,它是连接计算资源与科学数据的纽带。深入掌握其部署与调优,是每一位HPC架构师与运维工程师的必经之路。

目录
相关文章
|
存储 Linux PHP
CentOS 8 安装图解(一)
CentOS 8 安装图解(一)
2619 0
CentOS 8 安装图解(一)
|
14天前
|
存储 人工智能 API
【保姆级教程】阿里云/本地部署 OpenClaw 配置大模型api +医疗领域 AI 应用场景解析+FAQ
2026年初,一只红色龙虾图标席卷全球科技圈与医疗行业:GitHub星标数飙升至28万,深圳市龙岗区政府专门出台支持政策,开放医疗、城市治理等高质量脱敏公共数据,对相关应用项目给予最高100万元奖励——这只名为OpenClaw的开源AI智能体,正以“真正能干活”的核心优势,从通用场景渗透到医疗科研、临床辅助、产业转化等专业领域,成为驱动医疗行业效率革新的关键力量。
474 5
|
1月前
|
Linux C语言 C++
CentOS 7 安装 gcc-4.8.5-44.el7.x86_64.rpm 详细步骤(含依赖解决)
本指南详解CentOS 7离线安装GCC 4.8.5全流程:先卸载旧版避免冲突,再下载对应RPM包;安装glibc-devel、mpfr等必要依赖;最后用rpm或yum localinstall完成安装,并验证版本。操作清晰,兼顾强制覆盖与自动依赖解决,适配老旧项目编译需求。(239字)
|
3月前
|
监控 Java 测试技术
OOM排查之路:一次曲折的线上故障复盘
本文记录了一次线上服务因Paimon数据湖与RocksDB集成引发的三次内存溢出(OOM)故障排查全过程。通过MAT、NMT、async-profiler等工具,结合监控分析与专家协作,最终定位到RocksDB通过JNI申请堆外内存未释放的根源问题,并推动架构优化:由应用直写改为Flink统一入湖。分享排查思路与工具使用,为同类技术栈提供借鉴。
|
分布式计算 并行计算 调度
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
在HPC场景中,集群任务调度系统是资源管理和作业调度的核心工具。LSF、SGE、Slurm和PBS是主流调度系统。LSF适合大规模企业级集群,提供高可靠性和混合云支持;SGE为经典开源系统,适用于中小规模集群;Slurm成为HPC领域事实标准,支持多架构和容器化;PBS兼具商业和开源版本,擅长拓扑感知调度。选型建议:超大规模科研用Slurm,企业生产环境用LSF/PBS Pro,混合云需求选LSF/PBS Pro,传统小型集群用SGE/Slurm。当前趋势显示Slurm在TOP500系统中占比超60%,而商业系统在金融、制造等领域保持优势。
2818 32
|
8月前
|
存储 测试技术 数据库
Django模型迁移指南:从命令用法到最佳实践
Django迁移系统是数据库版本控制工具,通过生成迁移文件、应用迁移和回滚操作,实现模型与数据库结构的同步。支持迁移生成、应用、冲突解决及遗留数据库集成,确保开发过程中的数据模型一致性与灵活性。
504 0
|
存储 机器学习/深度学习 并行计算
GPU通信互联技术:GPUDirect、NVLink与RDMA
在高性能计算和深度学习领域,GPU已成为关键工具。然而,随着模型复杂度和数据量的增加,单个GPU难以满足需求,多GPU甚至多服务器协同工作成为常态。本文探讨了三种主要的GPU通信互联技术:GPUDirect、NVLink和RDMA。GPUDirect通过绕过CPU实现GPU与设备直接通信;NVLink提供高速点对点连接和支持内存共享;RDMA则在网络层面实现直接内存访问,降低延迟。这些技术各有优势,适用于不同场景,为AI和高性能计算提供了强大支持。
|
存储 缓存 运维
Lustre架构介绍的阅读笔记-HSM
HSM(Hierarchical Storage Management)是数据分级存储管理,根据数据生命周期、访问特性和设备成本,自动在CPU寄存器、缓存、主存、SSD、HDD、光盘、磁带库等不同存储层级间迁移数据。数据热度分为热、温、冷、冰,对应不同成本、性能和容量。迁移策略可基于人工判断或系统自动计算,并确保业务I/O不受影响、数据一致性。访问频率增加时,数据可反向迁移至更高层级。
457 2
|
存储 缓存 NoSQL
缓存(1) —— 总述:分级存储
缓存(1) —— 总述:分级存储
1033 0
|
存储 分布式计算 Kubernetes
PVC、Ceph、HDFS、CPFS、NFS和OSS
PVC、Ceph、HDFS、CPFS、NFS和OSS都是分布式存储系统,下面是它们的详细介绍: 1. PVC(Persistent Volume Claim):PVC是Kubernetes中的一个资源请求,用于声明在集群中存储持久化数据的需求。PVC可以被用于存储应用程序的数据,例如数据库、日志文件等。PVC由Kubernetes集群管理员创建,并在Kubernetes集群中进行分配。
1496 0