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
|
|
1.2 voms 인증
$ voms-proxy-init --voms cms
1.3 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가 만료된건 아닌지 확인 해야합니다.
1.4 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
-----------------------------------------------------------------------------------------
1.5 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가 있는데도 불구하고 본인의 디렉토리가 만들어져 있지 않는 경우에는 관리자에게 연락바랍니다.
1.6 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
1.7 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
1.8 xrootd 를 활용한 SE Data 접근 방법
1.9 WebDav 프로토콜을 활용한 SE Data 접근 방법
1.10 dcap을 이용한 SE Data 접근 방법
1.11 UI에서 NFS로 마운트된 스토리지 엘리먼트 사용하기
1.12 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
$
1.13 복수의 파일을 동시에 전송하기
$ /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는 기본적으로 복수파일 전송을 지원하지 않으나 원본경로 대상경로를 포함하는 목록 파일을 생성한뒤, 위의 스크립트를 사용하면 복수의 파일을 전송할수 있다.
1.14 복사가 정상적으로 이루어졌는지 확인 또는 디렉토리의 목록 확인
$ gfal-ls -Hl srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/(username)
1.15 파일 또는 디렉토리 삭제
$ 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
1.16 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" 옵션을 사용하면 디렉토리까지 복사가 가능합니다.
1.17 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
1.18 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
1.19 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
1.20 no match 오류가 발생할때
- tcsh에서 ?는 wild card로 인식이 됩니다. 따라서 tcsh을 사용하고 있다면 srm 경로에 반드시 ""를 사용해야 합니다.
1.21 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
|
1.22 uberftp를 이용한 Storage Element 사용
1.23 WebFTS를 이용한 Storage Element 로의 Data 전송
1.24 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
1.25 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
1.26 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로 이동하여 주시기 바랍니다.