CRAB 등을 사용하여 얻은 데이터를 보관할 수 있는 저장 공간을 Storage Element (SE)라 합니다.
이곳에 데이터를 저장하기 위해서는 몇가지 특수한 명령어를 사용해야 합니다.
UI에 로그인 했을 때 일반 사용자가 읽고 쓸수 있는 저장공간은 다음과 같이 3가지 종류가 있습니다.
서비스 |
스토리지 |
지원 프로토콜 |
경로 |
Grid인증 |
비고
|
UI
|
UI User Home
|
nfs
|
/u/user/{knu_id}
|
X
|
|
UI Scratch
|
nfs
|
|
X
|
|
SE
|
xrootd
|
xrootd: root://cluster142.knu.ac.kr//store/user/{cern_id}
|
O
|
|
webdav
|
webdav: davs://cluster142.knu.ac.kr:2880/cms/store/user/{cern_id}
|
O
|
|
srm
|
srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
|
O
|
|
gsiftp
|
gsiftp://cluster142.knu.ac.kr:2811/pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
|
O
|
|
dcap
|
dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
|
X
|
읽기전용
|
gsidcap
|
xrootd: root://cluster142.knu.ac.kr//store/user/{cern_id}
|
O
|
|
nfs
|
/pnfs/knu.ac.kr/data/cms/store/user/{cern_id} /u/user/{knu_id}/SE_UserHome -----> /pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
|
X
|
|
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가 만료된건 아닌지 확인 해야합니다.
T3_KR_KNU의 Computing Resource 실시간 조회하기 (CPU, Disk 자원 조회)
- UI 에서 "knuinfo" 명령어를 실행합니다.
$ knuinfo
$
-----------------------------------------------------------------------------------------
CPU Free Total Jobs Running Waiting ComputingElement
1328 571 253 157 0 ce01.knu.ac.kr:9619/ce01.knu.ac.kr-condor
-----------------------------------------------------------------------------------------
Avail Space(kB) Used Space(kB) Type SE
369726007282 1076716332991 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
$ gsiftp://cluster142.knu.ac.kr:2811/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은 향후 data를 publish 할 경우를 대비하서 경북대 ID가 아니라 CERNID를 사용해야 합니다.
- 계정을 발급받을 당시에 cern id가 없는 사용자는 해당 경로가 생성되지 않습니다.
- 만약에 cern id가 있는데도 불구하고 본인의 디렉토리가 만들어져 있지 않는 경우에는 관리자에게 연락바랍니다.
SE에서 SE로 파일 복사하기
$ gfal-copy srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../.../DestFile
$ gfal-copy gsiftp://cluster142.knu.ac.kr:2811/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
gsiftp://cluster142.knu.ac.kr:2811/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../DestFile
SE에 있는 파일을 및 local 디렉토리로 복사하기
$ 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 srm://cluster142.knu.ac.kr/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
./DestFile
$ gfal-copy gsiftp://cluster142.knu.ac.kr:2811/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
file:////u/user/(username)/.../DestFile
$ gfal-copy gsiftp://cluster142.knu.ac.kr/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
./DestFile
$ gfal-copy gsidcap://cluster142.knu.ac.kr:22128/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
file:////u/user/(username)/.../DestFile
$ gfal-copy gsidcap://cluster142.knu.ac.kr/pnfs/knu.ac.kr/data/cms/store/user/(username)/.../SrcFile \
./DestFile
$ gfal-copy root://cluster142.knu.ac.kr/store/user/(username)/.../SrcFile \
./DestFile
xrootd 를 활용한 SE Data 접근 방법
WebDav 프로토콜을 활용한 SE Data 접근 방법
dcap을 이용한 SE Data 접근 방법
UI에서 NFS로 마운트된 스토리지 엘리먼트 사용하기
root에서 SE Data 접근 방법
# 읽기
$ 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
$
# 읽기
$ 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)
- gfal-copy에서 "-r" 옵션을 사용하면 디렉토리까지 복사가 가능합니다.
gfal-copy를 이용한 디렉토리 복사
gfal-copy에서 "-r" 옵션을 사용하면 서브 디렉토리까지 한번에 복사가 가능합니다. 다음과 같이 임의의 테스트 디렉토리를 만들었을때
[hanbi@cms tmp5]$ ll
total 0
-rw-r--r-- 1 hanbi knu 0 Aug 26 17:21 aa
-rw-r--r-- 1 hanbi knu 0 Aug 26 17:21 bb
-rw-r--r-- 1 hanbi knu 0 Aug 26 17:21 cc
drwxr-xr-x 2 hanbi knu 24 Aug 26 17:22 dir1
-r 옵션을 적용해서 다음과 같이 실행하면 (로컬 디스크의 ~/hanbi/tmp5 디렉토리를 SE의 hanbi/tmp5로 복사)
gfal-copy -r file:////u/user/hanbi/tmp5 srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5
[hanbi@cms ~]$ gfal-copy -r file:////u/user/hanbi/tmp5 srm://cluster142.knu.ac.kr:8443/srm/managerv2? SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5
Mkdir srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5
Copying file:////u/user/hanbi/tmp5/aa [DONE] after 0s
Copying file:////u/user/hanbi/tmp5/bb [DONE] after 0s
Copying file:////u/user/hanbi/tmp5/cc [DONE] after 0s
Mkdir srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5/dir1
Copying file:////u/user/hanbi/tmp5/dir1/dd [DONE] after 0s
Copying file:////u/user/hanbi/tmp5/dir1/ee [DONE] after 0s
아래와 같이 하부 디렉토리까지 스토리지 엘리먼트로 전부 전송이 되는 것을 확인 할 수 있습니다.
[hanbi@cms ~]$ ll /pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5
total 1
-rw-r--r-- 1 hanbi cms 0 Aug 26 17:22 aa
-rw-r--r-- 1 hanbi cms 0 Aug 26 17:22 bb
-rw-r--r-- 1 hanbi cms 0 Aug 26 17:22 cc
drwxr-xr-x 4 hanbi cms 512 Aug 26 17:22 dir1
물론 반대로 스토리지 엘리먼트에서 로컬 하드로 복사도 가능한데, 사용시 주의해야할 점은 SE의 소스 용량을 먼저 확인해서 전송을해야 로컬 하드디스크가 가득차는 것을 방지할 수 있습니다.
gfal-copy -r srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5 file:////u/user/hanbi/tmp5
소스디렉토리의 크기를 확인하는 방법은 다음과 같이 확인할 수 있습니다. 다만 해당 디렉토리 아래의 크기가 매우 클 경우에는 결과가 나오는데 시간이 오래 결릴수 있습니다.
du -hs /pnfs/knu.ac.kr/data/cms/store/user/hanbi/tmp5
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 전송
GNU Parallel & gfap-copy 를 이용한 SE → SE Data 전송
[source]
srm://dcache-se-cms.desy.de:8443//pnfs/desy.de/cms/tier2/store/user/beinsam/test
[target]
srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/test
1) uberftp를 이용하여 gfal-copy 실행 파일 리스트 생성
$ uberftp -ls -r gsiftp://dcache-door-cms15.desy.de/pnfs/desy.de/cms/tier2/store/user/beinsam/test | grep .root$ | awk {' print "gfal-copy srm://dcache-se-cms.desy.de:8443/"$8" srm://cluster142.knu.ac.kr:8443/"$8}' | sed 's/desy.de\/cms\/tier2\/store\/user\/beinsam/knu.ac.kr\/data\/cms\/store\/user\/hanbi/2' > gfal-copy.txt
2) parallel를 이용하여 10개씩 gfal-copy 실행
$ cat gfal-copy.txt | parallel -j 10
fts-transfer-submit 를 이용한 SE → SE Data 전송
[source]
srm://dcache-se-cms.desy.de:8443//pnfs/desy.de/cms/tier2/store/user/beinsam/test
[target]
srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/hanbi/test
1) uberftp를 이용하여 파일 리스트 파일 생성.
$ uberftp -ls -r gsiftp://dcache-door-cms15.desy.de/pnfs/desy.de/cms/tier2/store/user/beinsam/test | grep .root$ | awk {' print "srm://dcache-se-cms.desy.de:8443/"$8" srm://cluster142.knu.ac.kr:8443/"$8}' | sed 's/desy.de\/cms\/tier2\/store\/user\/beinsam/knu.ac.kr\/data\/cms\/store\/user\/hanbi/2' > copylist.txt
2) fts-transfer-submit
$ export PATH=/cvmfs/grid.cern.ch/Grid/FTS3/3.7.8/x86_64-slc6-gcc44-opt/bin:$PATH
$ export LD_LIBRARY_PATH=/cvmfs/grid.cern.ch/Grid/FTS3/3.7.8/x86_64-slc6-gcc44-opt/lib64:$LD_LIBRARY_PATH
$ fts-transfer-submit -s https://fts3-pilot.cern.ch:8446 -f copylist.txt
165b3e94-ac07-11e8-8460-02163e01841b
3) transfer status monitoring
fts-transfer-status -s https://fts3-pilot.cern.ch:8446 165b3e94-ac07-11e8-8460-02163e01841b
or
https://fts3-pilot.cern.ch:8449/fts3/ftsmon/
https://fts3-pilot.cern.ch:8449/fts3/ftsmon/#/job/165b3e94-ac07-11e8-8460-02163e01841b
T3_KR_KNU 저장공간(Disk) 활용 분류
* Storage Element (srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/...)
: 대용량 저장 공간으로 장기간 보관이 가능합니다.
- rucio를 통해 전송된 DataSet 저장
- Crab Analysis 이후의 결과파일 저장
srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/
UI에서는 ~/SE_UserHome/ 에서 확인할 수 있습니다.
: 현재 약 1.45 PB의 공간을 마련하여 운영하고 있습니다.
: 사용자의 데이터 저장으로 공간이 부족할 경우, 사전 설문을 통해 더 이상 사용하지 않는 과거 데이터의 삭제 요청을 드릴 수 있습니다.
* User Home Directory (/u/user/...)
: 기본적인 설정 사항, 사용자가 필요한 소프트웨어 등을 설치 및 보관하는 장소입니다.
: 약 20 TB 규모의 공간입니다.
: 모든 사용자가 20 TB를 나누어 사용하므로 용량이 큰 데이터의 보관은 가급적 삼가해 주시기 바랍니다.
* Scratch Disk
: UI에 총 1개의 임시 저장공간이 있습니다.
- /d0 : 약 40 TB RAID6 Disk
: Sratch 디스크는 임시 저장공간으로 중요한 데이터 및 장기 보관 데이터는 반드시 Storage Element로 이동하여 주시기 바랍니다.