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 汇交数据,用户数据 | 汇交数据有备份,其他无备份 |
-
Lustre 文件系统完全支持 Linux POSIX 语义,用户可以使用 Linux 文件系统访问命令及 API 访问 Lustre。
-
如果需要使用用户 ACL 和扩展属性功能,请提交请求至:ics@ihep.ac.cn
-
/workfs 专用于用户交互使用,即在登录节点上可以读写,但是计算节点上用户无法在 /workfs 下新建和修改文件,即用户作业在运行时无法向 /workfs 目录下写入或修改文件。
8.3.2 常用命令¶
查看用户的资源配额¶
例如:
输出示例:
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 下各目录的配额使用情况¶
-
在特定目录下,对任意一个普通文件(非目录)执行命令
lsattr -p,查看该目录的 project id:输出示例:
发现这个目录的 project id 是 1097。
-
执行命令
lfs quota -p 1097 /besfs5,查看该目录的配额使用情况:输出示例:
查看 Lustre 文件系统中每个磁盘池的空间使用情况¶
-p 参数带磁盘池的名字,例如 ATLAS 组有 acfs.atlaspool,CMS 组有 acfs.cmspool,LHCb 组有 acfs.lhcbpool。
示例如下:
输出示例:
设置文件分条存储,提高并发访问单个文件的性能¶
命令格式:
n 为分条数量。
示例如下:
目录下面的文件会继承目录的分条属性,如果想单独指定文件的分条格式,可以先 touch 一个空文件,并设置其分条属性。
设置目录的 ACL¶
例如:目录 /besfs4/wanglutest 的属主是 root:root,属性是 750,作为用户 wanglu(60007:600)是没有权限访问的:
输出示例:
输出示例:
为用户 wanglu 在这个目录下设置权限:
查看 wanglu 的权限:
输出示例:
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::---
现在就可以读写了:
输出示例:
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 权限:
注意
- 只有目录的属主可以操作目录的 ACL 权限。
- 设置过 ACL 权限后,
ls -l目录会多一个+,此时 Linux 原来的 permission 规则会失效。 - 可以对一个组添加 ACL:
setfacl -m group:xxx /xxx/xxx。
如果要恢复 Linux 原来的权限设置,即清除 ls -l 后面的 +,可以用 setfacl -b 命令:
完整的 ACL 语法规则可查看 PosixAccessControlInLinux.pdf,或者查阅 Linux manpage:
常见问题(FAQ)¶
见常见问题。
有问题?输入后跳转到对话页继续交流