跳转至

8.3 Lustre 文件存储

8.3.1 概述

Lustre 是一个开源、可扩展的高性能面向对象的并行文件系统,被广泛应用于超级计算平台。在全球的超级计算机中有超过 70% 使用了 Lustre 文件系统。Lustre 由元数据服务器(MDS)、对象存储服务器(OSS)以及客户端组成。通过元数据服务器,Lustre 将所有对象存储服务器上存储设备组成统一的存储空间,提供给客户端挂载,完全兼容 POSIX 语义。Lustre 具有很强的可扩展性,能够轻松管理数十 PB 的存储空间,且具有极高的性能,聚合带宽能够达到每秒几十甚至上百 GB,因此其在高性能计算领域获得广泛应用。但是,由于 Lustre 元数据服务器的限制,在管理海量小文件时不具有优势,且不支持纠删码、副本等功能,因此 Lustre 文件系统被主要用于海量的实验数据存储。Lustre 是目前计算中心最主要的磁盘文件系统。

Lustre 是高性能计算平台中使用规模最大的文件系统,提供 BES、DYB、JUNO 等多个实验海量存储服务。当前 Lustre 文件系统的信息如表 8.3-1 所示:

总空间(TB) 用途 用户限额 备份情况
/bes3fs 2500 BESIII 生产数据 原始数据有磁带备份,其它无备份
/besfs4 2500 BESIII 生产数据 原始数据有磁带备份,其它无备份
/besfs5 2400 BESIII 生产数据,BESIII group数据,用户数据 users目录每人50GB使用空间,group目录各组不同 原始数据有磁带备份,其它无备份
/besfs7 3600 BESIII 生产数据 原始数据有磁带备份,其它无备份
/besfs8 3300 BESIII 生产数据 原始数据有磁带备份,其它无备份
/besfs9 4000 BESIII 生产数据 原始数据有磁带备份,其它无备份
/besfs10 4100 BESIII 生产数据 原始数据有磁带备份,其它无备份
/publicfs 3000 ATLAS,CMS,LHCB,UCAS分池共享数据盘 每人5TB使用空间,30万文件数 各组资源完全隔离使用,无备份
/sharefs 1500 Alicpt,BES,HBKG,HEPS,MBH分池共享数据盘 各组资源完全隔离使用,无备份
/scratchfs 572 用户临时文件 每人500GB使用空间,20万文件数 无备份
/scratchfs2 1300 用户临时文件(逐步替换/scratchfs) 每人500GB使用空间,20万文件数 无备份
/workfs2 22 用户个人文件(推荐保存重要文件或结果) 每人5GB使用空间,5万文件数 全盘备份
/cefs 2500 CEPC 实验数据,用户数据 无备份
/junofs 3100 JUNO 实验数据 每人500GB使用空间,30万文件数 无备份
/lustre/juno26 2600 JUNO 实验数据 每人500GB使用空间,30万文件数 无备份
/lustre/junoflash 88 JUNO 实验数据 无备份
/dybfs2 1400 DYB 实验数据,用户数据 每人1TB使用空间,30万文件数 原始数据有磁带备份,其它无备份
/gecamfs 2200 GECAM 实验数据 无备份
/hxmtfs 1300 HXMT 实验数据 每人home目录500G使用空间,5万文件数;data目录5T使用空间,100万文件数 无备份
/hxmtfs2 2200 HXMT 实验数据 无备份
/hpcfs 1800 Slurm集群GPU应用数据 无备份
/lhaasofs 610 LHAASO 用户数据 每人200GB使用空间,50万文件数 无备份
/epfs 610 EP 实验数据,用户数据 无备份
/extpfs 610 EXTP 实验数据,用户数据 无备份
/herdfs 1700 HERD 实验数据,用户数据 每人200GB使用空间,30万文件数 无备份
/hepsfs 645 BSRF 实验数据,用户数据 无备份
/hepsdatafs 29000 HEPSBL 中心存储实验数据 无备份
/lustrefs/atlas 635 ATLAS 实验数据,用户数据 无备份
/lustrefs/alicpt 1300 ALICPT 实验数据,用户数据 无备份
/aifs 194 IHEPAI 人工智能相关应用数据,用户数据 每人home目录500G使用空间,50万文件数 无备份
/sdcfs 1700 SDC 汇交数据,用户数据 汇交数据有备份,其他无备份
表 8.3-1 Lustre 文件系统信息说明
  • Lustre 文件系统完全支持 Linux POSIX 语义,用户可以使用 Linux 文件系统访问命令及 API 访问 Lustre。

  • 如果需要使用用户 ACL 和扩展属性功能,请提交请求至:ics@ihep.ac.cn

  • /workfs 专用于用户交互使用,即在登录节点上可以读写,但是计算节点上用户无法在 /workfs 下新建和修改文件,即用户作业在运行时无法向 /workfs 目录下写入或修改文件。

8.3.2 常用命令

查看用户的资源配额

lfs quota -u username dirname

例如:

lfs quota -u zhangsan /publicfs

输出示例:

quotas for user zhangsan (uid XXXX):    
Filesystem  kbytes     quota     limit     grace   files   quota   limit   grace    
 /publicfs 338626804  524288000 524288000     -     232010  300000  300100         

           (已用空间)  (软空间配额)  (硬空间配额)    (已存文件数) (软文件数配额)

查看 /besfs5/user、/besfs5/group 下各目录的配额使用情况

  1. 在特定目录下,对任意一个普通文件(非目录)执行命令 lsattr -p,查看该目录的 project id:

    lsattr -p nohup.out
    

    输出示例:

    1097 -----------------P nohup.out
    

    发现这个目录的 project id 是 1097。

  2. 执行命令 lfs quota -p 1097 /besfs5,查看该目录的配额使用情况:

    lfs quota -p 1097 -h /besfs5
    

    输出示例:

    Disk quotas for prj 1097 (pid 1097):
        Filesystem    used   quota   limit   grace   files   quota   limit   grace
           /besfs5  1.362T*    50G     50G       -  293249       0       0       -
    

查看 Lustre 文件系统中每个磁盘池的空间使用情况

lfs df -h -p poolname dirname

-p 参数带磁盘池的名字,例如 ATLAS 组有 acfs.atlaspool,CMS 组有 acfs.cmspool,LHCb 组有 acfs.lhcbpool。

示例如下:

lfs df -h -p acfs.lhcbpool /publicfs
lfs df -p acfs.atlaspool /publicfs | tail -n 3

输出示例:

filesystem summary:  934854246652 267931989532 619787497356  30% /publicfs

设置文件分条存储,提高并发访问单个文件的性能

命令格式:

lfs setstripe -c n dirname

n 为分条数量。

示例如下:

lfs setstripe -c 6 yourdirname   # 分 6 条存储

目录下面的文件会继承目录的分条属性,如果想单独指定文件的分条格式,可以先 touch 一个空文件,并设置其分条属性。

设置目录的 ACL

例如:目录 /besfs4/wanglutest 的属主是 root:root,属性是 750,作为用户 wanglu(60007:600)是没有权限访问的:

ll /besfs4 | grep wanglutest

输出示例:

drwxr-x---+ 2 root  root   4096 May 11 15:24 wanglutest
cd /besfs4/wanglutest

输出示例:

-bash: cd: /besfs4/wanglutest: Permission denied

为用户 wanglu 在这个目录下设置权限:

setfacl -m user:wanglu:rwx /besfs4/wanglutest

查看 wanglu 的权限:

getfacl /besfs4/wanglutest

输出示例:

getfacl: Removing leading '/' from absolute path names
# file: besfs4/wanglutest
# owner: root
# group: root
user::rwx
user:wanglu:rwx
group::r-x
mask::rwx
other::---

现在就可以读写了:

cd /besfs4/wanglutest
cp /etc/hosts .
ls -lh

输出示例:

total 3.1M
-rw-r--r-- 1 wanglu u07 3.0M May 11 15:22 f1
-rw-r--r-- 1 wanglu u07  292 May 11 15:38 hosts

删除用户的 ACL 权限:

setfacl -x user:wanglu /besfs4/wanglutest

注意

  1. 只有目录的属主可以操作目录的 ACL 权限。
  2. 设置过 ACL 权限后,ls -l 目录会多一个 +,此时 Linux 原来的 permission 规则会失效。
  3. 可以对一个组添加 ACL:setfacl -m group:xxx /xxx/xxx。

如果要恢复 Linux 原来的权限设置,即清除 ls -l 后面的 +,可以用 setfacl -b 命令:

setfacl -b /besfs4/wanglutest

完整的 ACL 语法规则可查看 PosixAccessControlInLinux.pdf,或者查阅 Linux manpage:

man getfacl
man setfacl

常见问题(FAQ)

见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流