Tags:
create new tag
view all tags
-- YaoQiuling - 2009-04-27
 
CASTOR用户指南

一、 前言
  CASTOR是由CERN(欧洲粒子物理研究中心)开发的分级存储管理(简称HSM)系统,主要负责提供分级存储和数据迁移功能,实现用户对分布在不同存储介质上文件的透明访问,不需要关心文件具体的存贮位置和方式。CASTOR中的文件可通过rfio(远程文件输入/输出)协议进行访问。访问时可采用命令行,或采用函数调用的方式(对于C程序)。同时,它特有的数据迁移功能,能够实现真正的、自动化的分级存储,做到了跨介质的存储虚拟化,使存储资源的使用更加合理,也提高了整个存储资源的利用率。

  目前高能所CASTOR软件已经提供给用户使用。CASTOR在高能所的目录结构为   "/castor/ihep.ac.cn/groupname/username"。

二、 安装
要使用CASTOR,首先要在机器上安装castor客户端。下载CASTOR客户端之后,执行命令:

# rpm -ivh CASTOR-client-1.7.1.5-1.longname.i386
  安装后要修改配置文件:/etc/profile,文件中添加下列定义:
    export CASTOR_HOME="/castor"
    export STAGE_HOST="tpserver"
    export CNS_HOST="tpserver"
    export VMGR_HOST="tpserver"
    export CDB_HOST="tpserver"
    export STAGE_POOL="group_pool" (这个参数由castor系统管理员指定)

三、 术语
1.磁盘池和栈
  CASTOR文件在磁盘和磁带之间的迁移是由一个叫"栈"程序管理的。栈负责管理磁盘池中的磁盘空间,迁移数据到磁带,从磁带中读取数据到磁盘池,通过调用垃圾回收程序(garbage collection)确保对新文件有足够的空间。
  磁盘池由多个磁盘组合而成,根据组定义,分配给不同的组使用。磁盘池中放置的是最近创建或读取的文件,文件访问I/O速度较快。

2.CASTOR名字服务器,ns列表
CASTOR名字服务器保存的是关系数据库中的文件目录,文件的信息包括文件段,文件名,详细的访问权限,文件大小,文件类,磁带中的物理地址等。CASTOR的名字空间模仿UNIX的文件结构,只是它的文件系统由/CASTOR命名。

CASTOR提供了一系列的ns查询和访问命令。以下是常用命令:
  nsls <file>   列出指定的文件或目录
  nsls --class <file>   列出指定文件的文件类
  nslistclass --id <class-id>   列出指定文件类的属性
  nsmkdir <directory>   生成一个目录

一旦文件被写入CASTOR,就可用nsls查看其状态:
  nsls -l /castor/ihep.ac.cn/user/s/smith/data.big
  mrwxr-xr-x 1 smith zz 1234567890 Jun 12 09:56 data.big

  nsls的输出显示与ls命令类似,即文件属主和权限等。属性字节中的第一个字母m表示文件已经迁移到磁带中。如果文件还没有迁移,则此处会显示"-"。 名字服务器被设计为与栈和磁盘池中的文件无关,这样在名字服务器中修改文件属性就不会影响文件在磁盘池中的位置。

3.rfio命令
  文件的修改操作(修改模式,删除)可用rfio命令(rfchmod和rfrm)执行。修改磁盘池中的文件会同时更新名字服务器的目录。

修改文件或目录的参数的rfio命令如下:
  rfrm <file/directory>   移动(删除)文件或目录
  rfrename <oldfile_name> <newfile_name>   重命名文件或目录
  rfchmod <absolute_mode> <file>   修改文件权限

4.文件类
  CASTOR文件类从其所在的目录继承,此目录中的所有文件和下级目录都是同一个文件类。文件类由id和classname定义,它指定了文件迁移的一些相关属性:磁带池--文件将会迁移的地点;在磁盘上想保留的时间;文件可迁移的时间等等。

  可用下面的命令显示文件的文件类:
    nsls --class /castor/ihep.ac.cn/user/test.tar
    600 /castor/ihep.ac.cn/user/test.tar
  命令输出显示/castor/ihep.ac.cn/user/test.tar文件类为600。nslistclass --id 600命令可用来查看这个文件类的属性。命令nslistclass(无参数)显示的是所有文件类。

四、 使用
1.CASTOR环境
  首先得设置两个基本的环境变量。它们常在客户端的profile文件重新定义。
  STAGE_HOST:定义使用的stager,如tpserver
  STAGE_POOL:定义磁盘池,如user_pool
  如果它们没有被设置,则会使用默认的公共stager(stagepublic)和磁盘池(public)。
2.从C程序访问CASTOR文件
  RFIO应用程序接口(API)包括下面相当接近UNIX I/O的函数调用:
  rfio_open(), rfio_write(), rfio_read(), rfio_close()
  这样可写文件:
    #include <stdio.h>
    #include <fcntl.h>
    #include <shift.h>
    int main(int argc, char argv[]) {
    int rc, fd, buffer_size;
    char *buffer = NULL;
    char *CASTOR_file_name = NULL;
    CASTOR_file_name = argv[1];
    buffer = argv[2];
    buffer_size = strlen(argv[2]);
    fd = rfio_open(CASTOR_file_name,O_RDWR,0766);
    if ( fd = -1 ) {
      rfio_perror(CASTOR_file_name);
      exit(1);
    }
    rc = rfio_write(fd,buffer,buffer_size);
    if ( rc
buffer_size ) {
    rfio_perror(CASTOR_file_name);
    rfio_close(fd);
    exit(1);
    }
    rfio_close(fd);
    }
  这个程序需要在安装CASTOR客户端的节点机(如所有的‘plus')上编译和链接。读一个文件,使用rfio_open,rfio_read和rfio_close。

3.本地文件拷贝至CASTOR,列出CASTOR目录
  > rfcp myfile1 /castor/ihep.ac.cn/user/t/tonyo/mycastorfile1
  39605868 bytes ready for migration
  > rfcp myfile2 /castor/ihep.ac.cn/user/t/tonyo/mycastorfile2
  46206846 bytes ready for migration
  之后可用:
  > nsls -l /castor/ihep.ac.cn/user/t/tonyo
  mrw-r--r-- 1 tonyo c3 39605868 Mar 06 14:48 mycastorfile1
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2
  mycastorfile1的模式位"m"字符表示该文件已经迁移到磁带。文件mycastorfile2还没有迁移。rfdir也可以用来列出目录,但是它不能显示迁移状态上的"m"标志。
  > rfdir /castor/ihep.ac.cn/user/t/tonyo
  -rw-r--r-- 1 tonyo c3 39605868 Mar 06 14:48 mycastorfile1
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2
查看文件迁移到哪盘磁带上:
  > nsls -T /castor/ihep.ac.cn/user/t/tonyo/mycastorfile1
  - 1 1 R08706 516 000b6622 39605868 100 mycastorfile1
显示磁带的VID(R08706)和文件序列号(516)。

4.通过rfcp从CASTOR拷贝到本地
  > rfcp /castor/ihep.ac.cn/user/t/tonyo/mycastorfile1 mylocalfile1
  39605868 bytes in 12 seconds through eth0 (in) and local (out) (3223 KB/sec)
  假如rfcp返回一个长的时间,则表示数据是从磁带介质上读取的。

5.查看文件在运输磁盘上的状态
  当文件在磁盘池或被读取到磁盘上时,它的状态可用stageqry命令加-M参数查看。
  >stageqry -M /castor/ihep.ac.cn/user/t/tonyo/mycastorfile2
  File name State Nbacc. Size Pool
  mycastorfile2 CAN_BE_MIGR 1 44.1/ public

6.用rfrename重命名文件或目录
  该命令执行的是mv命令的部分内容,即并没有进行物理上的数据移动。如果文件被重命名,它的文件类不变。格式为:rfrename <old_path>< new_path>。
  > rfrename /castor/ihep.ac.cn/user/t/tonyo/mycastorfile1 /castor/   ihep.ac.cn/user/t/tonyo/myfile1
  > nsls -l /castor/ihep.ac.cn/user/t/tonyo
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2
  mrw-r--r-- 1 tonyo c3 39605868 Mar 06 14:48 myfile1
  CASTOR的文件重命名没有任何的限制,文件并不需要迁移到磁带。

7.用nsmkdir创建新目录
  > nsmkdir /castor/ihep.ac.cn/user/t/tonyo/test-directory
  > nsls -l /castor/ihep.ac.cn/user/t/tonyo
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2
  mrw-r--r-- 1 tonyo c3 39605868 Mar 06 14:48 myfile1
  drwxr-xr-x 0 tonyo c3 0 Mar 06 15:10 test-directory
  新的用户目录由管理员或用户创建。

8.用rfrm删除文件或目录
  为了方便,rfrm命令也支持目录的递归删除(-r选项)。
  > rfrm /castor/ihep.ac.cn/user/t/tonyo/myfile1
  > nsls -l /castor/ihep.ac.cn/user/t/tonyo
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2
  drwxr-xr-x 0 tonyo c3 0 Mar 06 15:10 test-directory
  > rfrm -r /castor/ihep.ac.cn/user/t/tonyo/test-directory
  > nsls -l /castor/ihep.ac.cn/user/t/tonyo
  -rw-r--r-- 1 tonyo c3 46206846 Mar 06 14:52 mycastorfile2

9.修改文件权限
  > rfchmod 750 /castor/ihep.ac.cn/user/t/tonyo/mycastorfile
  注意模式要用八进制给出。

10.修改目录属主
  组管理员,即那些在CASTOR用户特权认证(Cupv)注册过的用户,可用下面的命令修改自己组中的任何目录的属主:
  > nschown userid:gg path
  对于给定组的组管理员列表可用命令:"Cupvlist --priv GRP_ADMIN --group gg"查看,gg为组名。否则一般nschown的使用需root权限。

五、 常见问题
1.我有CASTOR用户目录吗?
  使用nsls查看。
  nsls -ld /castor/ihep.ac.cn/user/t/tonyo
  drwxr-xr-x 1 tonyo c3 0 Mar 06 15:15 /castor/ihep.ac.cn/user/t/tonyo
  说明用户tonyo的使用目录为/castor/ihep.ac.cn/user/t/tonyo。
  另一个例子:
  nsls -ld /castor/ihep.ac.cn/user/t/tonyo3
  /castor/ihep.ac.cn/user/t/tonyo3: No such file or directory

2.我的文件在CASTOR中安全吗?
  如同所有包含硬件、软件和人为这些因素的系统一样,CASTOR也没有绝对的100%的安全保证。请注意如下几点:
  1) CASTOR磁盘服务器使用镜像磁盘(特别现在逐渐被淘汰的一些旧机器),这样能够最大限度的减少磁盘损坏的影响。
  2) 磁带本身也有缺陷。有时可以修复这些错误,但也有很多时候错误修复不了,所以重要的数据应该在磁带中至少做两个备份(参考上述的文件类NBCOPIES=2)。
  3) 如果文件由于某种原因(一般由于文件类和磁带池定义的冲突)迁移失败,文件即使被置为"PUT-FAILED"也不会被删除。
  还有其它潜在的原因,CASTOR的软件错误或者系统管理的错误,这两个原因我们尽量消除。目前的CASTOR版本已经非常安全可靠了。

3.对于一个还未迁移的文件我能做什么操作?
  你可以升级一个文件,如果它在池中的状态是CAN_BE_MIGR,而不是BEING_MIGR。状态可用stageqry命令查看(stageqry -M castor_file_name)。

4.我用的是哪种CASTOR版本?
  用castor -v查看。

5.我的文件在哪盘磁带上?
  用带-T参数的nsls查看磁带号:
  nsls -T /castor/ihep.ac.cn/user/m/myuserid/mycastorfile
  - 1 1 R08706 530 000b9832 46206846 100 /castor/ihep.ac.cn/user/ m/myuserid/mycastorfile
  输出是:状态("-"表示OK,"D"表示Disabled);拷贝数(1);此拷贝的区段号(1);磁带Vid;磁带文件序列号(530);段大小(46206846)和压缩数*100。

6.我的文件所放置的磁带是否有问题?
  如果你收到以下的错误信息:
  stagein error : Required tape segments are not all accessible
  STG98 - Invalid argument
  这表示磁带中组成你的文件的部分(至少有一部分)段不能挂载。通常一个文件就是一个段,虽然只有1%的文件被放入两个磁带而因此有两个段。大部分磁带状态为"DISABLED"都是这个原因造成的。对于任何已经迁移到磁带的castor文件,可用下面的命令检查其相关的磁带:
  >nsls -T --deleted /castor/ihep.ac.cn/user/m/mysusrid/mycastorfile
  - 1 1 P05485 338 0022beb8 46206896 100 /castor/ ihep.ac.cn/user/m/ myuserid/mycastorfile
  >vmgrlisttape -V P05485
  P05485 P05485 STK_ACS5 200GC aul default 0B 20031129 FULL|RDONLY|DISABLED
  如果nsls -T输出的第一个字符为"D"(而非"-"),则此段就是不可用的。vmgrlisttape输出的最后一节是磁带的状态。如果状态为DISABLED,EXPORTED或ARCHIVED意味着磁带目前不能挂载。一般包括DISABLED表示读或写磁带时发生了重大错误,这是由于磁带的最后一次使用或磁带本身的错误。虽然概率很低,但磁带介质的错误确实存在。当磁带的状态为DISABLED时,该磁带上的所有文件都不能被访问。

7.如果我的文件在磁带池中的状态显示错误,我该怎么办?
  如果stageqry显示文件的状态不正常,比如PUT_FAILED,请联络castor管理员。

8.如果我的用户名被删除我的CASTOR文件会如何?
  在用户名被删除以后,所有的用户文件将被放置于一个隐藏的目录,并且至少保存两年。如果CASTOR用户目录中没有文件,则目录就会被删除。删除和对隐藏目录的操作都很谨慎,因为用户的id有可能被其它人使用。

9.为何stagein/rfcp反应速度不快?
  如果rfcp或stagein命令没有迅速回复,这可能是由于文件需要从磁带中读取。这可在已经安装客户端的机器,比如lxplus上,用showqueues命令查看。比如下例对于给定用户id:myuserid:
  >showqueues -x | grep myuserid
  > DA 994BR4 994B43AC@tpsrv127 RUNNING 39 (No_dedication) None P06180 R 1599 (myuserid,vl)  @stage005
  输出显示myuserid的磁带请求已经运行在tpsrv125上,站号stage05。如果该请求在队列中,这显示结果如下:
  >Q 994BR4 P06234 R 754869 (myuserid,vl)@stage005 46
  这表明请求在排队,而且已经排了46秒了。磁带请求都是随机的,所以用户需要有耐心。在繁忙的时候,磁带请求有可能需要等1个小时或者以上的时间。

六、 建议
1.总使用同一个栈
  目前的CASTOR还不支持栈之间的通信,所以强烈建议要使用一个组用一个栈来管理所有的池。多个栈的使用会混淆和导致错误结果,同一个文件会被不同的栈放入不同的磁盘池。

2.使用rfio命令胜于stage命令
  要使用rfio命令,而不要使用stage(stagein/stagewrt)命令。前者既容易使用,也较少导致用户错误。stage命令最终会被淘汰。

3.使用名字服务器(ns)列表命令胜于等价的rfio列表命令
  一般来说,名字服务器命令有着更丰富的功能和更好的结果,比如nsls和rfdir。

4.使用rfio修改命令胜于等价的名字服务器修改命令
  名字服务器修改命令,比如nsrm和nschmod,不能够同时更新磁盘池中的文件--仅能够更新名字服务器目录。等价的rfio命令,rfrm和rfchmod可替代它们使用。

5.在CASTOR目录中只能保存大文件(>20MB)
  CASTOR是为大文件设计,不建议使用小文件。

6.不要把CASTOR当成文件备份系统
  用备份系统来备份你的文件。CASTOR,作为一个分级存储管理系统,不具有频繁备份文件和增量备份的能力。重复使用CASTOR来备份用户文件将会导致许多垃圾文件。

Topic revision: r1 - 2009-04-27 - YaoQiuling
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback