From T3_KR_KNU
Jump to: navigation, search
(일반 프로그램에서 dcap을 이용하여 SE의 데이터를 읽기)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== dcap을 이용하여 SE 사용하기 ==
 
== dcap을 이용하여 SE 사용하기 ==
* dcap(dCache Access Protocol)은 SE인 dCache에서 사용하는 파일전송 프로토콜입니다.
+
* dcap(dCache Access Protocol)은 스토리지 엘리먼트(SE)인 dCache에서 사용하는 파일전송 프로토콜입니다.
 
* dcap은 다른 프로토콜에 비해 상대적으로 빠르고 간편합니다.
 
* dcap은 다른 프로토콜에 비해 상대적으로 빠르고 간편합니다.
 
* dcap은 읽기 전용이나 인증없이 사용할 수 있고 쓰기를 위해서는 그리드인증이 추가된 gsidcap 프로토콜을 사용할 수 있습니다.
 
* dcap은 읽기 전용이나 인증없이 사용할 수 있고 쓰기를 위해서는 그리드인증이 추가된 gsidcap 프로토콜을 사용할 수 있습니다.
* dcap을 이용하면 일반 프로그램 및 root 프로그램에서 SE의 데이터를  바로 읽을수 있습니다.
+
* dcap을 이용하면 일반 프로그램 및 root 프로그램에서 SE의 데이터를  바로 읽거나 쓸수 있습니다.
 
* SE의 사용자 홈디렉토리의 dcap 경로는 다음과 같습니다.
 
* SE의 사용자 홈디렉토리의 dcap 경로는 다음과 같습니다.
  dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/{userid}
+
* 아래 예제들에서 (userid)는 본인의 id로 대체하세요.
  gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/{userid}
+
 
 +
  dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)
 +
  gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)
  
 
=== dccp ===
 
=== dccp ===
Line 47: Line 49:
 
=== 일반 프로그램에서 dcap을 이용하여 SE의 데이터를 읽기 ===
 
=== 일반 프로그램에서 dcap을 이용하여 SE의 데이터를 읽기 ===
 
* 다음과 같이 LD_PRELOAD 설정을 사전에 하면 ls와 cp 같은 일반 프로그램에서 SE의 데이터를 읽을 수 있습니다.  
 
* 다음과 같이 LD_PRELOAD 설정을 사전에 하면 ls와 cp 같은 일반 프로그램에서 SE의 데이터를 읽을 수 있습니다.  
 +
* bash 환경
 
  $ export LD_PRELOAD=/usr/lib64/libpdcap.so
 
  $ export LD_PRELOAD=/usr/lib64/libpdcap.so
 
  $ ls dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/
 
  $ ls dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/
 
  test.transfer  test.transfer.20161005112625
 
  test.transfer  test.transfer.20161005112625
 
  $ cp -v dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer .
 
  $ cp -v dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer .
 +
`dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer' -> `./test.transfer'
 +
 +
* tcsh 환경
 +
$ setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
 +
$ ls "dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/"
 +
test.transfer  test.transfer.20161005112625
 +
$ cp -v "dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer" .
 
  `dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer' -> `./test.transfer'
 
  `dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer' -> `./test.transfer'
  
 
=== 일반 프로그램에서 gsidcap을 이용하여 SE에 데이터를 쓰기 ===
 
=== 일반 프로그램에서 gsidcap을 이용하여 SE에 데이터를 쓰기 ===
 
* SE에 파일을 쓰려면 그리드 인증이 필요한 gsidcap 프토로콜을 사용해야합니다.
 
* SE에 파일을 쓰려면 그리드 인증이 필요한 gsidcap 프토로콜을 사용해야합니다.
 +
* bash 환경
 
  $ export LD_PRELOAD=/usr/lib64/libpdcap.so
 
  $ export LD_PRELOAD=/usr/lib64/libpdcap.so
 
  $ voms-proxy-init --voms cms
 
  $ voms-proxy-init --voms cms
  $ cp test.transfer gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer.201610051632
+
  $ cp test.transfer gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test.transfer.201610051632
  
=== dcap을 이용하여 root에서 SE의 Data 접근하기 ===
+
* tcsh 환경
 +
$ setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
 +
$ voms-proxy-init --voms cms
 +
$ cp test.transfer "gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test.transfer.201610051632"
 +
 
 +
=== dcap을 이용하여 root에서 SE의 Data 읽고 쓰기 ===
  
 
* dcap은 읽기 전용의 프로토콜이며 그리드 인증이 필요한 gsidcap은 읽기 뿐만 아니라 쓰기도 가능합니다.  
 
* dcap은 읽기 전용의 프로토콜이며 그리드 인증이 필요한 gsidcap은 읽기 뿐만 아니라 쓰기도 가능합니다.  
# 읽기
+
* 읽기
 
  $ root -l
 
  $ root -l
 
  root [0] TFile *f = TFile::Open("dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/CE4D66EB-5AAE-E111-96D6-003048D37524.root");
 
  root [0] TFile *f = TFile::Open("dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/CE4D66EB-5AAE-E111-96D6-003048D37524.root");
Line 68: Line 84:
 
  root [2] .q
 
  root [2] .q
 
   
 
   
# 쓰기
+
* 쓰기, bash 환경
 
  $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/dcap
 
  $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/dcap
 
  $ voms-proxy-init --voms cms
 
  $ voms-proxy-init --voms cms
 
  $ root -l
 
  $ root -l
  root [0] TFile *f = TFile::Open("gsidcap://cluster142.knu.ac.kr:22128//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test.root", "RECREATE");
+
  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 [1] f->Close();
  root [2] .q
+
  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
 
  $
 
  $
 +
 +
* 쓰기, tcsh 환경
 +
$ setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/usr/lib64/dcap"
 +
$ voms-proxy-init --voms cms
 +
$ 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
 +
$
 +
 +
===  KNU Tier3에서 Batch job을 돌릴때 SE의 데이터를 읽기 ===
 +
* 아래 명령어를 batch script에 추가하면 일반 프로그램에서 dcap 프로토콜로 SE의 데이터를 읽을수 있습니다.
 +
bash)
 +
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap"
 +
 +
tcsh)
 +
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap"
 +
 +
* 읽을 파일의 경로는 다음과 같이 지정할수 있습니다.
 +
dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/...
 +
 +
===  KNU Tier3에서 Batch job을 돌릴때 gsidcap을 이용하여 SE에 데이터 쓰기 ===
 +
dcap프로토콜로 SE에 데이터를 쓰려면 인증이 필요한 gsidcap프로토콜을 사용해야 합니다.
 +
 +
* 따라서 Job submit 전에 프록시를 다음과 같이 생성합니다.
 +
 +
bash)
 +
$ export X509_USER_PROXY=/u/user/(userid)/proxy.cert
 +
$ voms-proxy-init --voms cms
 +
 +
tcsh)
 +
$ setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert"
 +
$ voms-proxy-init --voms cms
 +
 +
* batch job 스크립트에 환경변수 추가
 +
바뀐 프록시파일의 위치를 알려주는 설정과, gsidcap을 사용하기위한 설정을 작업 실행 스크립트에 추가합니다.
 +
 +
bash)
 +
export X509_USER_PROXY=/u/user/(userid)/proxy.cert
 +
export LD_PRELOAD="/usr/lib64/libpdcap.so"
 +
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap"
 +
 +
tcsh)
 +
setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert"
 +
setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
 +
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap"
 +
 +
* 참고용 예제 코드
 +
 +
  #!/bin/bash
 +
  export X509_USER_PROXY="/u/user/(userid)/proxy.cert"
 +
  export SCRAM_ARCH="slc5_amd64_gcc530"
 +
  export LD_PRELOAD="/usr/lib64/libpdcap.so"
 +
  export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap"
 +
  source /cvmfs/cms.cern.ch/cmsset_default.sh
 +
  cd <working-directory>
 +
  eval `scramv1 runtime -csh`
 +
  cmsRun parser_test.py inputFiles_load=FileTestMC.txt outputFile=gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test/test.root
 +
 +
  #!/bin/tcsh
 +
  setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert"
 +
  setenv SCRAM_ARCH "slc5_amd64_gcc530"
 +
  setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
 +
  setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap"
 +
  source /cvmfs/cms.cern.ch/cmsset_default.csh
 +
  cd <working-directory>
 +
  eval `scramv1 runtime -csh`
 +
  cmsRun parser_test.py inputFiles_load=FileTestMC.txt outputFile="gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test/test.root"
 +
 +
===  참고자료 ===
 +
 +
* https://github.com/dCache/dcap

Latest revision as of 08:14, 17 March 2021

dcap을 이용하여 SE 사용하기

  • dcap(dCache Access Protocol)은 스토리지 엘리먼트(SE)인 dCache에서 사용하는 파일전송 프로토콜입니다.
  • dcap은 다른 프로토콜에 비해 상대적으로 빠르고 간편합니다.
  • dcap은 읽기 전용이나 인증없이 사용할 수 있고 쓰기를 위해서는 그리드인증이 추가된 gsidcap 프로토콜을 사용할 수 있습니다.
  • dcap을 이용하면 일반 프로그램 및 root 프로그램에서 SE의 데이터를 바로 읽거나 쓸수 있습니다.
  • SE의 사용자 홈디렉토리의 dcap 경로는 다음과 같습니다.
  • 아래 예제들에서 (userid)는 본인의 id로 대체하세요.
dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)
gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)

dccp

  • dcap 을 이용한 파일 복사 툴입니다. 자세한 옵션의 사용법은 다음과 같습니다.
$ dccp -h
DiskCache Copy Program. LibDCAP version: 2.47.10-1
Usage:  dccp [-H] [-d <debugLevel>]  [-h <replyhostname>] [-i]
   [-P [-t 
  • SE의 파일을 현재 디렉토리에 복사하는 예제 입니다. -H 옵션은 진행바를 나타냅니다.
$ dccp -H dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/tmp/test.transfer .

일반 프로그램에서 dcap을 이용하여 SE의 데이터를 읽기

  • 다음과 같이 LD_PRELOAD 설정을 사전에 하면 ls와 cp 같은 일반 프로그램에서 SE의 데이터를 읽을 수 있습니다.
  • bash 환경
$ export LD_PRELOAD=/usr/lib64/libpdcap.so
$ ls dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/
test.transfer  test.transfer.20161005112625
$ cp -v dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer .
`dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer' -> `./test.transfer'
  • tcsh 환경
$ setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
$ ls "dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/"
test.transfer  test.transfer.20161005112625
$ cp -v "dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer" .
`dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/test.transfer' -> `./test.transfer'

일반 프로그램에서 gsidcap을 이용하여 SE에 데이터를 쓰기

  • SE에 파일을 쓰려면 그리드 인증이 필요한 gsidcap 프토로콜을 사용해야합니다.
  • bash 환경
$ export LD_PRELOAD=/usr/lib64/libpdcap.so
$ voms-proxy-init --voms cms
$ cp test.transfer gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test.transfer.201610051632
  • tcsh 환경
$ setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
$ voms-proxy-init --voms cms
$ cp test.transfer "gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test.transfer.201610051632"

dcap을 이용하여 root에서 SE의 Data 읽고 쓰기

  • dcap은 읽기 전용의 프로토콜이며 그리드 인증이 필요한 gsidcap은 읽기 뿐만 아니라 쓰기도 가능합니다.
  • 읽기
$ root -l
root [0] TFile *f = TFile::Open("dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/test/CE4D66EB-5AAE-E111-96D6-003048D37524.root");
root [1] f->Close();
root [2] .q

  • 쓰기, bash 환경
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/dcap
$ voms-proxy-init --voms cms
$ 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
$
  • 쓰기, tcsh 환경
$ setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/usr/lib64/dcap"
$ voms-proxy-init --voms cms
$ 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
$

KNU Tier3에서 Batch job을 돌릴때 SE의 데이터를 읽기

  • 아래 명령어를 batch script에 추가하면 일반 프로그램에서 dcap 프로토콜로 SE의 데이터를 읽을수 있습니다.
bash)
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap"
tcsh)
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap"
  • 읽을 파일의 경로는 다음과 같이 지정할수 있습니다.
dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/...

KNU Tier3에서 Batch job을 돌릴때 gsidcap을 이용하여 SE에 데이터 쓰기

dcap프로토콜로 SE에 데이터를 쓰려면 인증이 필요한 gsidcap프로토콜을 사용해야 합니다.

  • 따라서 Job submit 전에 프록시를 다음과 같이 생성합니다.
bash)
$ export X509_USER_PROXY=/u/user/(userid)/proxy.cert
$ voms-proxy-init --voms cms
tcsh)
$ setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert"
$ voms-proxy-init --voms cms
  • batch job 스크립트에 환경변수 추가

바뀐 프록시파일의 위치를 알려주는 설정과, gsidcap을 사용하기위한 설정을 작업 실행 스크립트에 추가합니다.

bash)
export X509_USER_PROXY=/u/user/(userid)/proxy.cert
export LD_PRELOAD="/usr/lib64/libpdcap.so"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap"
tcsh)
setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert"
setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap"
  • 참고용 예제 코드
 #!/bin/bash
 export X509_USER_PROXY="/u/user/(userid)/proxy.cert" 
 export SCRAM_ARCH="slc5_amd64_gcc530" 
 export LD_PRELOAD="/usr/lib64/libpdcap.so"
 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib64/dcap" 
 source /cvmfs/cms.cern.ch/cmsset_default.sh
 cd <working-directory>
 eval `scramv1 runtime -csh`
 cmsRun parser_test.py inputFiles_load=FileTestMC.txt outputFile=gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test/test.root
 #!/bin/tcsh
 setenv X509_USER_PROXY "/u/user/(userid)/proxy.cert" 
 setenv SCRAM_ARCH "slc5_amd64_gcc530" 
 setenv LD_PRELOAD "/usr/lib64/libpdcap.so"
 setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/lib64/dcap" 
 source /cvmfs/cms.cern.ch/cmsset_default.csh
 cd <working-directory>
 eval `scramv1 runtime -csh`
 cmsRun parser_test.py inputFiles_load=FileTestMC.txt outputFile="gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/(userid)/test/test.root"

참고자료