8.4 EOS 文件存储¶
8.4.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实验 |
8.4.2 EOS 文件系统使用说明¶
eos 使用¶
EOS 目前提供两种访问方式:客户端 FUSE 方式和 xrootd 方式。
FUSE 方式¶
此方式是以挂载点的方式来访问 EOS 系统,类似于访问本地文件系统。对于不同的实验存储实例,其挂载点如上表所示。比如对于 LHAASO 实验的挂载目录为 /eos,HXMT 实验的挂载目录为 /mnt/hxmt。在登录节点上,可以通过挂载点来访问 EOS 文件系统中的数据。
注意
JUNO 实验不提供 FUSE 方式。
xrootd 方式¶
此方式是使用 xrootd 协议访问 EOS 系统,访问方式为:
注意
- xrootd 默认使用 1094 端口
- 在端口后需要使用
// - filepath 需要使用 绝对路径
此处的 EOS_MGM_URL 为实例的服务器地址,如果不存在,请自行设置:
用户可以使用 xrootd 自带的命令,也可以使用 eos 命令来访问。以 LHAASO 实验为例,如果要列出 LHAASO 实验中某个文件情况,命令如下:
或者:
| 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 | ls | 判断文件是否存在,如果不存在,返回值为空 |
| 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打开:
或
- 对于非 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,打开文件的方法:
查看用户的资源配额¶
命令格式:
示例如下:
输出示例:
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
zhangsan 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
查看 EOS 回收站¶
命令格式:
可支持 ls(列表)、purge(清空)、restore(恢复)三种操作。
查看用户个人回收站中的文件:
输出示例:
# 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 回收站中的文件只保留 3 天时间。
常见问题(FAQ)¶
见常见问题。
有问题?输入后跳转到对话页继续交流