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 下的 cattail 命令 可以用 xrdfs 相应命令代替, 需要在 xrdfs 后面加上 EOS 的域名, 比如 LHAASO EOS, 就是 eos01eos01.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天时间。

results matching ""

    No results matching ""