3.3.5 EOS 文件存储
3.3.5.1 EOS文件系统概况
EOS文件系统是一套基于xrootd框架的面向EB级数据存储的分布式文件系统。目前提供LHAASO、HXMT等多个实验的海量数据存储服务。
当前EOS文件系统的信息如下表所示。
| 实例名 | 挂载点 | 实例服务器地址 | 总空间 | 用途 |
|---|---|---|---|---|
| LHAASO实验 | /eos | eos01.ihep.ac.cn | 46 PB | LHAASO本地实验数据 |
| LHAASO稻城 | /eos/daocheng | lhmteos01.ihep.ac.cn | 5.84 PB | LHAASO稻城快速重建 |
| HXMT实验 | /mnt/hxmt | hxmteos01.ihep.ac.cn | 806.22 TB | HXMT实验数据 |
| JUNO实验 | /eos/juno | junoeos01.ihep.ac.cn | 6.69 PB | JUNO实验 |
3.3.5.2 EOS文件系统使用说明
1) eos 使用
eos目前提供两种访问方式:客户端FUSE方式和xrootd方式。
a)FUSE方式
此方式是以挂载点的方式来访问EOS系统,类似于访问本地文件系统。对于不同的实验存储实例,其挂载点如上表所示。比如对于LHAASO实验的挂载目录为/eos,HXMT实验的挂载目录为/mnt/hxmt。在登录节点上,可以通过挂载点来访问EOS文件系统中的数据。
注:Juno实验不提供FUSE方式。
b)xrootd方式
此方式是使用xrootd协议访问EOS系统,访问方式为:
#### 访问方式: root://EOS_MGM_SERVER//filepath
注意:
- Xrootd默认使用用1094端口
- 在端口后需要使用”//”
- filepath需要使用绝对路径
此处的EOS_MGM_URL为实例的服务器地址,如果不存在,请自行设置。
$exportEOS_MGM_URL=root://xxx.ihep.ac.cn/
用户可以使用xrootd自带的命令,也可以使用eos命令来访问。以lhaaso实验为例,如果要列出lhaaso实验中某个文件情况,命令如下:
$ xrdfs root://eos01.ihep.ac.cn/ls/eos/user/file.txt
或者
$ eos root://eos01.ihep.ac.cn/ls/eos/user/file.txt
eos命令与系统命令对照表
| Eos命令(推荐使用) | Linux命令(不可用) | 说明 |
|---|---|---|
| eos ls | ls | 查看文件列表 |
| eos cp | cp | 拷贝文件 |
| eos mv | mv | 移动文件 |
| eos cp /eos/user/myfile - | cat | cat | 查看文件内容 |
| eos cp /eos/user/myfile - | tail | tail | 查看文件内容 |
| eos mkdir | mkdir | 创建文件夹 |
| eos touch | touch | 创建文件 |
| eos newfind -f /eos/mypath | 无 | 查找某一个目录下所有文件列表(包含子目录) |
| eos newfind -d /eos/mypath | 无 | 查找某一个目录下所有目录列表(包含子目录) |
| eos ln | ln | 创建软链接 |
| eos quota | 无 | 查看个人空间使用大小(/eos/user/a-z/username) |
| eos stat | -f | 判断文件是否存在,如果不存在,返回值为空 |
| eos file info | stat | 可查看文件的Modify修改时间和Change状态改动时间 |
其中, Linux 下的cat和tail命令 可以用 xrdfs 相应命令代替, 需要在xrdfs后面加上 EOS 的域名, 比如 LHAASO EOS, 就是eos01或eos01.ihep.ac.cn:
- 查看文件全部内容:
xrdfs eos01 cat /eos/user/myfile - 查看文件尾部 N bytes 内容:
xrdfs eos01 tail -c N /eos/user/myfile - 实时查看文件尾部内容:
xrdfs eos01 tail -f /eos/user/myfile
作业中使用xrootd的方法:前提:作业中使用xrootd读写文件的前提是物理软件需要支持xrootd协议。 对于ROOT软件,目前已支持xrootd方式,但需要注意目前有三种方式产生Tfile对象:
- 声明:
TFile(PATHNAME)-- 不支持xrootd - 新文件:
new TFile (PATHNAME)-- 不支持xrootd - 打开方法:
TFile::Open(PATHNAME)--支持xrootd
举例:
对于ROOT格式的文件,可以直接用
TFile::Open打开:TFile*filein=TFile::Open("root://eos01.ihep.ac.cn//eos_absolute_path_filein_name.root")或
TFile*fileout=TFile::Open("root://eos01.ihep.ac.cn//eos_absolute_path_fileout_name.root")对于非ROOT格式的文件,也可以用ROOT的TFile类可以直接读写,需要在文件名后增加一个参数
?filetype=raw。举例:
voidrawfile(){intsize;charbuf[1024];TFile*rf=TFile::Open("root://eos01.ihep.ac.cn//eos/user/c/chyd/set.log?filetype=raw");size=rf->GetSize();printf("size is %d\n",size);memset(buf,0,1024);rf->ReadBuffer(buf,1024);printf("%s\n",buf);rf->Close();}
如果使用Python和pyroot,打开文件的方法:
f=ROOT.TFile.Open("root://eos01.ihep.ac.cn//eos_absolute_path_fileout_name.root")
2)查看用户的资源配额使用命令:
命令格式:
$ eosquotayour_eos_path
示例如下:
$ eosquota/eos/user/z/zhangsan By user...# _______________________________________________________________________________________________# ==> Quota Node: /eos/user/z/zhangsan/# _______________________________________________________________________________________________user used bytes logi bytes used files aval bytes aval logib aval files filled[%]vol-status ino-status lihaibo800GB800GB10k-1.00TB 200GB 25M -9.08ok ok (已用空间) (已使用文件数) (空间配额)(文件数配额) By group...# _______________________________________________________________________________________________# ==> Quota Node: /eos/user/z/zhangsan/# _______________________________________________________________________________________________# ...............................................................................................group used bytes logi bytes used files aval bytes aval logib aval files filled[%]vol-status ino-status u07800GB800GB10k-0B0B0-100.00ignored ignored
3)查看EOS回收站使用命令
命令格式:
$ eos recyclehelp可支持ls(列表),purge(清空),restore(恢复)三种操作。
查看用户个人回收站中的文件
$ eos recyclels# Deletion Time UID GID SIZE TYPE RESTORE-KEY RESTORE-PATH# ==============================================================================================================================Sat Dec2916:32:032018zhangsan u0713file0000000008b0f7bf /eos/user/z/zhangsan/test.txt
清空用户个人回收站中的文件
$ eos recycle purge
恢复用户个人回收站中的某个文件
$ eos recycle restore[--force-original-name|-f][--restore-versions|-r]<recycle-key>
示例:
$ eos recycle restore 0000000008b0f7bf
注意:目前/eos回收站中的文件只保留3天时间。