From T3_KR_KNU
(→dcap을 이용하여 root에서 SE의 Data 접근하기) |
|||
(27 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== dcap을 이용하여 SE 사용하기 == | == dcap을 이용하여 SE 사용하기 == | ||
− | * dcap(dCache Access Protocol)은 | + | * dcap(dCache Access Protocol)은 스토리지 엘리먼트(SE)인 dCache에서 사용하는 파일전송 프로토콜입니다. |
* dcap은 다른 프로토콜에 비해 상대적으로 빠르고 간편합니다. | * dcap은 다른 프로토콜에 비해 상대적으로 빠르고 간편합니다. | ||
* dcap은 읽기 전용이나 인증없이 사용할 수 있고 쓰기를 위해서는 그리드인증이 추가된 gsidcap 프로토콜을 사용할 수 있습니다. | * dcap은 읽기 전용이나 인증없이 사용할 수 있고 쓰기를 위해서는 그리드인증이 추가된 gsidcap 프로토콜을 사용할 수 있습니다. | ||
− | * dcap을 이용하면 일반 프로그램 및 root 프로그램에서 SE의 데이터를 바로 | + | * dcap을 이용하면 일반 프로그램 및 root 프로그램에서 SE의 데이터를 바로 읽거나 쓸수 있습니다. |
* SE의 사용자 홈디렉토리의 dcap 경로는 다음과 같습니다. | * SE의 사용자 홈디렉토리의 dcap 경로는 다음과 같습니다. | ||
− | * 아래 | + | * 아래 예제들에서 (userid)는 본인의 id로 대체하세요. |
dcap://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) | ||
Line 49: | 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/(userid)/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 70: | 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//pnfs/knu.ac.kr/data/cms/store/user/( | + | 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
Contents
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"