From T3_KR_KNU
Jump to: navigation, search
(Tier-2 저장공간(Disk) 활용 분류)
(xrootd 를 활용한 SE Data 접근 방법)
Line 65: Line 65:
 
=== xrootd 를 활용한 SE Data 접근 방법 ===
 
=== xrootd 를 활용한 SE Data 접근 방법 ===
  
==== xrdcp client 사용하기 ====
+
* [[Xrootd|xrootd 을 이용하여 SE 사용하기]]
$ xrdcp root://cluster142.knu.ac.kr//store/user/(username)/test.file /some/local/path/test.file
+
  (참조 : http://xrootd.org/doc/prod/Syntax_config.htm)
+
+
$ xrdcp /some/local/path/test.file root://cluster142.knu.ac.kr//store/user/(username)/test.file
+
 
+
==== libXrdPosixPreload library 사용하기 ====
+
$ export LD_PRELOAD=/usr/lib64/libXrdPosixPreload.so
+
$ echo “This is a new test” >./test
+
+
$ mkdir xroot://cluster142.knu.ac.kr:1094//store/user/(username)/testdir
+
$ cp ./test xroot://cluster142.knu.ac.kr:1094//store/user/(username)/testdir/test
+
+
$ cp xroot://cluster142.knu.ac.kr:1094//store/user/(username)/testdir/test ./test1
+
$ diff ./test1 ./test
+
+
$ rm xroot://cluster142.knu.ac.kr:1094//store/user/(username)/testdir/test
+
$ rmdir xroot://cluster142.knu.ac.kr:1094//store/user/(username)/testdir
+
 
+
==== xrdfs 사용하기  ====
+
$ echo “This is a new test” >./test
+
$ cat ./test
+
“This is a new test”
+
$ xrdcp ./test xroot://cluster142.knu.ac.kr:1094//store/user/(username)/test
+
$ xrdfs cluster142 ls /store/user/(username)
+
...
+
/store/user/(username)/test
+
...
+
$ xrdfs cluster142.knu.ac.kr cat /store/user/(username)/test
+
“This is a test”
+
   
+
$ xrdfs cluster142.knu.ac.kr
+
[cluster142.knu.ac.kr:1094] / > cd store/user/(username)
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > ls
+
...
+
/store/user/(username)/test
+
...
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > ls test
+
[ERROR] Server responded with an error: [3012] Error when processing list response: Not a directory: /pnfs/knu.ac.kr/data/cms/store/user/(username)/test
+
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > cat test
+
“This is a test”
+
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > mkdir testdir
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > ls
+
...
+
/store/user/(username)/test
+
/store/user/(username)/testdir
+
...
+
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > mv test testdir
+
[ERROR] Server responded with an error: [3005] Will not overwrite existing file (File exists:/pnfs/knu.ac.kr/data/cms/store/user/(username)/testdir).
+
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > mv test testdir/test
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > cd testdir
+
[cluster142.knu.ac.kr:1094] /store/user/(username)/testdir > ls
+
/store/user/(username)/testdir/test
+
+
[cluster142.knu.ac.kr:1094] /store/user/(username)/testdir > rm test
+
[cluster142.knu.ac.kr:1094] /store/user/(username)/testdir > cd ..
+
[cluster142.knu.ac.kr:1094] /store/user/(username) > rmdir testdir
+
[cluster142.knu.ac.kr:1094] / > quit
+
Goodbye.
+
 
+
 
+
$ xrdfs --help
+
Usage:
+
    xrdfs [--no-cwd] host[:port]              - interactive mode
+
    xrdfs            host[:port] command args - batch mode
+
+
Available options:
+
+
  --no-cwd no CWD is being preset
+
+
Available commands:
+
+
  exit
+
    Exits from the program.
+
+
                              tpc          - support for third party copies
+
                              wan_port      - the port to use for wan copies
+
                              wan_window    - the wan_port window size
+
                              window        - the tcp window size
+
                              cms          - the status of the cmsd
+
                              role          - the role in a cluster
+
                              sitename      - the site name
+
                              version      - the version of the server
+
    checksumcancel <path>  File checksum cancellation
+
    checksum      <path>  File checksum
+
    opaque        <arg>    Implementation dependent
+
    opaquefile    <arg>    Implementation dependent
+
    space          <space>  Logical space stats
+
    stats          <what>  Server stats; <what> is a list
+
                            of letters indicating information
+
                            to be returned:
+
                              a - all statistics
+
                              p - protocol statistics
+
                              b - buffer usage statistics
+
                              s - scheduling statistics
+
                              d - device polling statistics
+
                              u - usage statistics
+
                              i - server identification
+
                              z - synchronized statistics
+
                              l - connection statistics
+
    xattr          <path>  Extended attributes
+
+
  rm <filename>
+
    Remove a file.
+
+
  rmdir <dirname>
+
    Remove a directory.
+
+
  truncate <filename> <length>
+
    Truncate a file.
+
+
  prepare [-c] [-f] [-s] [-w] [-p priority] filenames
+
    Prepare one or more files for access.
+
    -c co-locate staged files if possible
+
    -f refresh file access time even if the location is known
+
    -s stage the files to disk if they are not online
+
    -w the files will be accessed for modification
+
    -p priority of the request, 0 (lowest) - 3 (highest)
+
+
  cat [-o local file] file
+
    Print contents of a file to stdout.
+
    -o print to the specified local file
+
+
  tail [-c bytes] [-f] file
+
    Output last part of files to stdout.
+
    -c num_bytes out last num_bytes
+
    -f          output appended data as file grows
+
+
  spaceinfo path
+
    Get space statistics for given path.
+
  
 
=== dcap을 이용한 SE Data 접근 방법 ===
 
=== dcap을 이용한 SE Data 접근 방법 ===

Revision as of 08:37, 22 November 2017

Storage Element Tutorial

CRAB 등을 사용하여 얻은 데이터를 보관할 수 있는 저장 공간을 Storage Element (SE)라 합니다. 이곳에 데이터를 저장하기 위해서는 몇가지 특수한 명령어를 사용해야 합니다.

[주의 : tcsh, csh 등 에서 관련 명령어를 사용할 때, 경로 인자에 반드시 " " 를 사용해주시기 바랍니다.]


voms 인증

  • voms 인증 후 사용할수 있습니다.
$ voms-proxy-init --voms cms

voms 인증 정보 확인

  • voms 인증 정보는 다음 명령어로 확인할 수 있습니다.
$ voms-proxy-info --all
voms-proxy-info --all
subject   : /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=gdhong/CN=000000/CN=Gildong Hong/CN=00000000
issuer    : /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=gdhong/CN=000000/CN=Gildong Hong
identity  : /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=gdhong/CN=000000/CN=Gildong Hong
type      : RFC3820 compliant impersonation proxy
strength  : 1024
path      : /tmp/x509up_u77420
timeleft  : 11:59:52
key usage : Digital Signature, Key Encipherment
=== VO cms extension information ===
VO        : cms
subject   : /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=gdhong/CN=000000/CN=Gildong Hong
issuer    : /DC=ch/DC=cern/OU=computers/CN=voms2.cern.ch
attribute : /cms/Role=NULL/Capability=NULL
timeleft  : 11:59:54
uri       : voms2.cern.ch:15002

주의해야할 부분은 VO cms extension information 부분입니다. 만약 VO cms extension information 부분이 출력되지 않는다면 --voms cms 옵션을 정확하게 입력하였는지 자신의 cms vo가 만료된건 아닌지 확인 해야합니다.

T2_KR_KNU의 Computing Resource 실시간 조회하기 (CPU, Disk 자원 조회)

  • UI 에서 "knuinfo" 명령어를 실행합니다.
$ knuinfo
$
-----------------------------------------------------------------------------------------
   CPU    Free Total Jobs      Running Waiting ComputingElement
   161      99         62           62       0 cluster118.knu.ac.kr:8443/cream-pbs-cms
   496     127        368          368       0 cluster50.knu.ac.kr:8443/cream-pbs-cms
-----------------------------------------------------------------------------------------
 Avail Space(kB)  Used Space(kB)  Type  SE
    125508644406    644170969874  SRM   cluster142.knu.ac.kr
-----------------------------------------------------------------------------------------


SE(Storage Element)의 사용자 디렉토리 경로

$ srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile
$ dcap://cluster142.knu.ac.kr/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile
$ gsidcap://cluster142.knu.ac.kr:22128/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile

참고사항:
- 위의 예시에서 username은 향후 publish 할 경우를 대비하서 경북대 ID가 아니라 CERNID를 사용해야 합니다.
- 만약에 본인의 디렉토리가 만들어져 있지 않는 경우에는 관리자에게 연락바랍니다.


test.file 파일의 SE 및 local 디렉토리로 복사하기

$ gfal-copy srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile     srm://cluster142/.../DestFile
$ gfal-copy srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile     file:////u/user/(username)/.../DestFile
$ gfal-copy gsidcap://cluster142.knu.ac.kr:22128/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile     file:////u/user/(username)/.../DestFile


xrootd 를 활용한 SE Data 접근 방법

dcap을 이용한 SE Data 접근 방법

UI에서 NFS로 마운트된 스토리지 엘리먼트 사용하기

root에서 SE Data 접근 방법

  • dcap 프로토콜을 이용
# 읽기
$ TFile *f = TFile::Open("dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(username)/test.root");
$
# 쓰기
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/dcap
$ root -l
root [0] TFile *f = TFile::Open("gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(username)/test.root", "CREATE");
root [1] f->Close();
root [2] TFile *f2 = TFile::Open("gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(username)/test.root", "RECREATE");
root [3] f2->Close();
root [4] .q
$
  • xrootd 프로토콜을 이용
# 읽기
$ voms-proxy-init --voms cms
$ TFile *f = TFile::Open("root://cluster142.knu.ac.kr//store/user/(username)/test.root");
$
# 쓰기
$ voms-proxy-init --voms cms
$ root -l
root [0] TFile *f = TFile::Open("root://cluster142.knu.ac.kr//store/user/(username)/test.root", "CREATE");
root [1] f->Close();
root [2] TFile *f2 = TFile::Open("root://cluster142.knu.ac.kr//store/user/(username)/test.root", "RECREATE");
root [3] f2->Close();
root [4] .q
$

복수의 파일을 동시에 전송하기

$ /usr/local/bin/lcgcp_copyfiles list.txt
$ cat  list.txt 
srm://myhost.mydomain.edu:8443//dir1/dir2/sh-copy1 file:///localdir/sh1
srm://myhost.mydomain.edu:8443//dir1/dir2/sh-copy2 file:///localdir/sh2
srm://myhost.mydomain.edu:8443//dir1/dir2/sh-copy3 file:///localdir/sh3
  • lcg_cp는 기본적으로 복수파일 전송을 지원하지 않으나 원본경로 대상경로를 포함하는 목록 파일을 생성한뒤, 위의 스크립트를 사용하면 복수의 파일을 전송할수 있다.


복사가 정상적으로 이루어졌는지 확인 또는 디렉토리의 목록 확인

$ gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)


파일 또는 디렉토리 삭제

$ gfal-rm srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/test/test.file
$ gfal-rm srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/test
$ lcg-del -d srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/test


gfal 명령어 사용 요약

 $ voms-proxy-init --voms cms 로 proxy 생성후 아래 명령어를 수행하시면 됩니다.
 $ 조회 : gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/MyAccount/FolderName
 $ 복사 : gfal-copy srm://cluster142.knu.ac.kr:8443/.../FileNameSrc    srm://cluster142.knu.ac.kr:8443/.../FileNameDest
 $ 삭제 : gfal-rm srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/MyAccount/FolderName/FileName
 $ 디렉토리 삭제 : gfal-rm -R srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/MyAccount/FolderName
  • 명령어 뒤의 Option은 매뉴얼 페이지를 참고 바랍니다. (ex. man gfal-ls)
  • 1000개 이상의 파일 포함한 폴더 내용 보기 : (ex. 500번째 파일부터 700개의 파일을 보고 싶을 경우) lcg-ls --offset 500 --count 700 srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(DestFoler)


crab3를 사용한 후 gfal-* 명령어들이 오류가 발생합니다

source /cvmfs/cms.cern.ch/crab3/crab.sh 실행후에 gfal-* 명령어들이 오류가 발생합니다.

$ gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer
-rw-r--r-- 1   2    2    Oct 12 02:17 4.8M srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer
$ source /cvmfs/cms.cern.ch/crab3/crab.sh
$ gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "/usr/bin/gfal-ls", line 8, in <module>
    from gfal2_util.shell import Gfal2Shell
ImportError: No module named gfal2_util.shell

crab3 에서 사용하는 python 환경변수와 gfal-* 명령어들에 문제를 일으키기 때문입니다. gfal-* 명령어 앞에 " env --unset=LD_LIBRARY_PATH "을 넣어줌으로써 문제를 해결할 수 있습니다.

$ env --unset=LD_LIBRARY_PATH gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer
-rw-r--r-- 1   2    2    Oct 12 02:17 4.8M srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer


cmsenv 실행후 gfal 명령어들이 정상 동작 하지 않을때

cmsenv 실행후에 다음과 같은 오류가 발생한다면

Failed to add IO tunnel (libgsiTunnel.so: cannot open shared object file: No such file or directory). Provider: [libgsiTunnel.so].
Error ( POLLIN) (with data) on control line [12]
Failed to create a control line
Failed open file in the dCache.
gfal-copy: error: Input/output error 

아래 명령을 먼저 실행해줌으로써 문제를 해결할 수 있습니다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/dcap 


no match 오류가 발생할때

  • tcsh에서 ?는 wild card로 인식이 됩니다. 따라서 tcsh을 사용하고 있다면 srm 경로에 반드시 ""를 사용해야 합니다.


srm*, lcg*, gfal* 주요 명령어 비교표

srm* lcg* gfal* 비고
srmls lcg-ls gfal-ls ls
srmcp lcg-cp gfal-copy cp
srmrm lcg-del gfal-rm rm
srmmkdir gfal-mkdir mkdir
srmrmdir lcg-del -d gfal-rm -R rmdir
gfal-cat cat


uberftp를 이용한 Storage Element 사용

WebFTS를 이용한 Storage Element 로의 Data 전송

Tier-2 저장공간(Disk) 활용 분류

* Storage Element (srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/...)
 : 대용량 저장 공간으로 장기간 보관이 가능합니다.
  - PhEDEx를 통해 전송된 DataSet 저장
  - Crab Analysis 이후의 결과파일 저장
    srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/
 : 현재 약 1.29 PB의 공간을 마련하여 운영하고 있습니다.
 : 사용자의 데이터 저장으로 공간이 부족할 경우, 사전 설문을 통해 더 이상 사용하지 않는 과거 데이터의 삭제 요청을 드릴 수 있습니다. 
* User Home Directory (/u/user/...)
 : Tier-2 UI에 로그할 경우 기본적인 설정사항 등을 보관하는 장소입니다.
 : 약 20 TB 규모의 공간입니다.
 : 모든 사용자가 20 TB를 나누어 사용하므로 용량이 큰 데이터의 보관은 가급적 삼가해 주시기 바랍니다.
* Scratch Disk
 : UI에 총 4개의 임시 저장공간이 있습니다.
  - /d  : 4 TB single Disk
  - /d1 : 2 TB single Disk
  - /d2 : 2 TB single Disk
  - /d3 : Logical Volume ( 2 TB single Disk * 3)
 : scratch disk는 Storage Element와 User Home Directory 영역과 달리 Single Disk로 구성이 되어 있습니다.
 : 개별 Disk의 물리적 장애 발생 시, 데이터의 유실이 발생하므로 중요한 데이터 및 장기 보관 데이터는 반드시 Storage Element로 이동하여 주시기 바랍니다.