
在高性能计算(HPC)领域,计算能力(算力)与数据吞吐能力(I/O)始终是相辅相成的。随着并行计算规模的扩大,传统的NAS存储往往会成为系统的瓶颈。Lustre作为一种开源的、分布式并行文件系统,凭借其卓越的可扩展性和极高的I/O吞吐量,成为了全球Top 500超算中心的首选。
在典型的HPC任务中(如气象预报、基因测序、流体力学模拟),成百上千个计算节点需要同时读写同一份数据集。Lustre的核心优势在于:
在部署之前,必须理解其三大核心组件:

在MDS和OSS节点上配置Whamcloud Lustre官方Repo并安装(组合节点,MGS、MDS和OSS部署在同一台虚拟机):
[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# 先安装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
安装成功后查看当前默认使用的内核: grubby --info=ALL | grep -E "kernel|index"

按索引设置默认内核为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
重启系统,若提示内核非法的签名,关闭secure boot再重启系统。执行uname -r 查看是否设置成功:
4.18.0-477.10.1.el8_lustre.x86_64[lustre-client]
name=Lustre Client
baseurl=https://downloads.whamcloud.com/public/lustre/lustre-2.15.3/el8.8/client/
gpgcheck=0
enabled=1yum install -y lustre-client kmod-lustre-client
这是部署的关键步骤,使用 mkfs.lustre 命令。
# --mgs 表示同时作为管理服务器,--mdt 表示元数据目标
modprobe ldiskfs
mkfs.lustre --fsname=hpcfs --mgs --mdt --index=0 /dev/xvdb
mkdir /mnt/mdt && mount -t lustre /dev/xvdb /mnt/mdt
可以看到:
# 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原100GBLustre的ldiskfs后端文件系统在格式化时,为了保障元数据的高性能和高可靠性,采取了特殊的预留和分配策略。
可以看到Inode数量非常庞大:
# df -i /mnt/mdt
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvdb 41943040 266 41942774 1% /mnt/mdt# --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在计算节点上执行:
mount -t lustre 192.168.1.11@tcp:/hpcfs /pfs/storageLNet是Lustre的传输基石。在高带宽网络下,默认参数往往无法跑满物理带宽。
参数分类 | 参数项 / 路径 | 建议取值 | 说明 |
|---|---|---|---|
并发数 | peer_credits | 32或64 | 单个对端允许的并发请求数,高并发集群建议调大 |
并发数 | credits | 256 | LNet 层的总信誉额度,确保有足够的槽位处理请求 |
内存限制 | max_rpcs_in_flight | 32-128 | 控制客户端到服务器同时进行的RPC数量 |
网络超时 | lnet_transaction_timeout | 50 | 在网络拥塞或丢包时缩短超时时间,加速故障转移 |
操作方式: 修改 /etc/modprobe.d/lnet.conf,例如: options lnet networks=o2ib(ib0) peer_credits=32 credits=256
服务器端的内核调度对存储延迟影响极大。
优化项 | 路径 / 命令 | 推荐配置 | 目的 |
|---|---|---|---|
磁盘调度 | /sys/block/*/queue/scheduler | deadline或noop | 避免复杂的电梯算法干扰Lustre自身的并行I/O调度 |
预读大小 | /sys/block/*/queue/read_ahead_kb | 4096-16384 | 增加底层磁盘预读,提升大文件顺序读性能 |
脏数据比例 | vm.dirty_ratio | 20-40 | 增大内核缓冲区,平衡内存压力与写入吞吐 |
中断绑定 | irqbalance | 关闭并手动绑定 | 将IB网卡中断绑定到特定CPU核心,减少上下文切换 |
这些参数通常通过 lctl 命令在运行时动态调整,或在挂载时持久化。
条带化(Striping)是Lustre最具威力的工具,需要根据应用模型动态调整。
应用类型 | 建议Stripe Count | 建议Stripe Size | 理由 |
|---|---|---|---|
海量小文件 | 1 | 1M | 避免多台OSS寻址开销 |
单文件并行写 | 8-(-1) (全部) | 1M-4M | 利用多个OST的聚合带宽,适合Checkpoint文件 |
气象/流体大文件 | 4-16 | 2M | 平衡单文件带宽与系统负载 |
为某个高性能计算任务目录设置高条带化 lfs setstripe -c 16 -S 2M /pfs/storage/simulation_data/
这是Lustre的灵魂。运维人员可以根据业务需求调整文件在多少个OST上分布。
# 查看当前目录条带属性
lfs getstripe /pfs/storage/data
# 设置新文件的条带数为 4
lfs setstripe -c 4 /pfs/storage/big_file.dat运维人员需重点关注:
在HPC项目实施中,Lustre分布式并行文件系统的稳定性直接决定了整个集群的作业运行率。
Lustre不仅仅是一个存储系统,它是连接计算资源与科学数据的纽带。深入掌握其部署与调优,是每一位HPC架构师与运维工程师的必经之路。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。