3.3.4 Lustre 文件存储
3.3.4.1 概述
LUSTRE是一个开源、可扩展的高性能面向对象的并行文件系统,被广泛应用于超级计算平台。在全球的超级计算机中有超过70%使用了LUSTRE文件系统。LUSTRE由元数据服务器(MDS)、对象存储服务器(OSS)以及客户端组成。通过元数据服务器,LUSTRE将所有对象存储服务器上存储设备组成统一的存储空间,提供给客户端挂载,完全兼容POSIX语义。LUSTRE具有很强的可扩展性,能够轻松管理数十PB的存储空间,且具有极高的性能,聚合带宽能够达到每秒几十甚至上百GB,因此其在高性能计算领域获得广泛应用。但是,由于LUSTRE元数据服务器的限制,在管理海量小文件时不具有优势,且不支持纠删码、副本等功能,因此LUSTRE文件系统被主要用于海量的实验数据存储。LUSTRE是目前计算中心最主要的磁盘文件系统。
LUSTRE是高性能计算平台中使用规模最大的文件系统。提供BES,DYB,JUNO等多个实验海量存储服务。当前lustre文件系统的信息如表6所示:
总空间(TB) | 用途 | 用户限额 | 备份情况 | |
---|---|---|---|---|
/besfs5 | 1800 | BESIII生产数据,BESIII group数据,用户数据 | users目录每人50GB使用空间,group目录各组不同 | 原始数据有磁带备份,其它无备份 |
/bes3fs | 1900 | BESIII 生产数据 | 原始数据有磁带备份,其它无备份 | |
/bes3fs | 1900 | BESIII 生产数据 | 原始数据有磁带备份,其它无备份 | |
/besfs3 | 2600 | BESIII 生产数据 | 原始数据有磁带备份,其它无备份 | |
/besfs4 | 2500 | BESIII 生产数据 | 原始数据有磁带备份,其它无备份 | |
/publicfs | 3000 | ATLAS,CMS,LHCB,UCAS分池共享数据盘 | 每人5TB使用空间,30万文件数 | 各组资源完全隔离使用,无备份 |
/sharefs | 1500 | Alicpt,BES,HBKG,HEPS,MBH分池共享数据盘 | 各组资源完全隔离使用,无备份 | |
/scratchfs | 572 | 用户临时文件 | 每人500GB使用空间,20万文件数 | 无备份 |
/workfs2 | 22 | 用户个人文件(推荐保存重要文件或结果) | 每人5GB使用空间,5万文件数 | 全盘备份 |
/cefs | 2500 | CEPC 实验数据,用户数据 | 无备份 | |
/junofs | 3100 | JUNO 实验数据 | 每人500GB使用空间,30万文件数 | 无备份 |
/dybfs | 2500 | DYB 实验数据,用户数据 | 每人1TB使用空间,30万文件数 | 原始数据有磁带备份,其它无备份 |
/dybfs2 | 1400 | DYB 实验数据,用户数据 | 每人1TB使用空间,30万文件数 | 原始数据有磁带备份,其它无备份 |
/gecamfs | 1500 | GECAM 实验数据 | 无备份 | |
/hxmtfs | 1300 | HXMT 实验数据 | 无备份 | |
/hpcfs | 1800 | Slurm集群GPU应用数据 | 无备份 | |
/lhaasofs | 610 | LHAASO 用户数据 | 每人200GB使用空间,50万文件数 | 无备份 |
表6 lustre文件系统信息说明
Lustre文件系统完全支持Linux POSIX语义,用户可以使用Linux 文件系统访问命令及API访问Lustre。
如果需要使用用户ACL和扩展属性功能,请提交请求至:ics@ihep.ac.cn
/workfs专用于用户交互使用,即在登录结点上可以读写,但是计算结点上用户无法在/workfs下新建和修改文件,即用户作业在运行时无法向/workfs目录下写入或修改文件。
3.3.4.2 常用命令
查看用户的资源配额:
$ lfs quota -u username dirname
例如:
$ lfs quota -u zhangsan /publicfsDisk
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
#lsattr -p nohup.out 1097 -----------------P nohup.out
发现这个目录的project id 是1097
执行 命令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 参数带磁盘池的名字,l例如 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 dirname –c n
n为分条数量。
示例如下:
$ lfs setstripe yourdirname –c 6 (分6条存储)
目录下面的文件会继承目录的分条属性,如果想单独指定文件的分条格式,可以先touch 一个空文件,并设置其分条属性。
设置目录的ACL:**
例如:目录 /besfs4/wanglutest 的属主是root:root, 属性是750,作为用户wanglu(60007:600)是没有权限访问的
-bash-4.2$ ll /besfs4 |grep wanglutest
drwxr-x---+ 2 root root 4096 May 11 15:24 wanglutest
-bash-4.2$ cd /besfs4/wanglutest
-bash: cd: /besfs4/wanglutest: Permission denied
为用户wanglu在这个目录下设置权限
setfacl -m user:wanglu:rwx /besfs4/wanglutest
查看wanglu的权限
-bash-4.2$ 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::---
现在就可以读写了
-bash-4.2$ pwd
/afs/ihep.ac.cn/users/w/wanglu
-bash-4.2$ cd /besfs4/wanglutest
-bash-4.2$ cp /etc/hosts .
-bash-4.2$ 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
注意:
- 只有目录的属主可以操作目录的ACL权限
- 设置过ACL权限后, ls -l 目录会多一个“+”, 此时,Linux原来的permisson规则会失效
- 可以对一个组添加ACL setfacl -m group:xxx /xxx/xxx
如果要恢复Linux原来的权限设置,即清除 ls -l 后面那个"+", 可以用setfacl -b 命令
#setfacl -b /besfs4/wanglutest
完整的ACL语法规则查看
http://wiki.lustre.org/images/5/57/PosixAccessControlInLinux.pdf
或者查阅Linux manpage
# man getfacl
# man setfacl