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为实例的服务器地址,如果不存在,请自行设置。
$ export EOS_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
。举例:
void rawfile(){
int size;
char buf[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)查看用户的资源配额使用命令:
命令格式:
$ eos quota your_eos_path
示例如下:
$ eos quota /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
lihaibo 800 GB 800 GB 10 k- 1.00 TB 200GB 25M - 9.08 ok 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
u07 800 GB 800 GB 10 k- 0 B 0 B 0 - 100.00 ignored ignored
3)查看EOS回收站使用命令
命令格式:
$ eos recycle help
可支持ls(列表),purge(清空),restore(恢复)三种操作。
查看用户个人回收站中的文件
$ eos recycle ls
# Deletion Time UID GID SIZE TYPE RESTORE-KEY RESTORE-PATH
# ==============================================================================================================================
Sat Dec 29 16:32:03 2018 zhangsan u07 13 file 0000000008b0f7bf /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天时间。