From T3_KR_KNU
Jump to: navigation, search

Storage Element Tutorial

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

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

Overview

UI에 로그인 했을 때 일반 사용자가 읽고 쓸수 있는 저장공간은 다음과 같이 3가지 종류가 있습니다.

종류 경로 지원 프로토콜 총용량 사용자당 용도 비고
UI 사용자 홈
  • /u/user/{knu_id}
nfs 20 TB 200 GB 프로그램 설치
사용자 기본 작업공간
RAID6
SE 사용자홈
  • xrootd: root://cluster142.knu.ac.kr//store/user/{cern_id}/
  • webdav: davs://cluster142.knu.ac.kr:2880/cms/store/user/{cern_id}
  • srm: srm://cluster142.knu.ac.kr:8443/srm/managerv2?SFN=/pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
  • gsiftp://cluster142.knu.ac.kr:2811/pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
  • dcap: dcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
  • gsidcap: gsidcap://cluster142.knu.ac.kr//pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
  • nfs: /pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
  • nfs: /u/user/{knu_id}/SE_UserHome -----> /pnfs/knu.ac.kr/data/cms/store/user/{cern_id}
xrootd, webdav,
srm, gsiftp,
dcap, gsidcap,
nfs
1.45 PB 10 TB 데이터 보관
대용량데이터처리
프로그램설치X
dCache, RAID6
스크레치
  • /d0/scratch
  • /u/user/{knu_id}/scratch -----> /d0/scratch/{knu_id}
nfs 40 TB 임시 작업용
중요데이터 보관X
RAID6
  • x509인증이 토큰 인증으로 전환되고 있는 상황이라 srm 프로토콜은 gsiftp, xrootd, webdav 프로토콜로 대체되고 있습니다.
  • dcap(dCache access protocol): 인증이 필요없는 읽기 전용의 프로토콜입니다. 인증이 필요없기에 간편하게 사용할수 있지만 경북대 내부에서만 사용할수 있습니다.
  • gsidcap: 그리드 인증이 필요한 dcap 프로토콜입니다. 읽기 쓰기가 모두 가능하며 경북대 내외부에서 모두 사용할 수 있습니다.
  • SE에 저장되어 있는 데이터셋은 연산노드에서 dcap, xrootd, gsiftp, nfs, wedav, srm 프로토콜을 이용하여 읽을 수 있습니다.
  • CERN ID와 KNU ID가 다른 사용자는 SE 사용자 홈디렉토리에 CERN ID를 기준으로 디렉토리가 생성됩니다.
  • {knu_id}는 경북대에서 발급받은 ID, {cern_id}는 CERN에서 발급 받은 ID를 의미합니다. 일부 사용자들은 두 ID가 일치 하지 않습니다.
  • 경북대 계정 신청시 CERN ID가 없는 사용자는 계정발급 직후 SE 사용자 홈디렉토리가 생성되지 않습니다. CERN ID를 발급 받은 후에 별도로 연락주세요.
  • 현재는 저장공간의 사용자당 최대 사용량이 시스템적으로 설정되어 있지는 않습니다. 그러나 원활한 이용을 위하여 초과해서 사용이 필요한 경우에는 사전에 관리자와 협의를 부탁드립니다.
  • 저장공간이 부족해질 경우 개인 사용량을 초과하는 사용자를 대상으로 사용햐지 않는 데이터의 정리를 요청하고 있습니다. 삭제요청과 함께 혹시라도 데이터가 방치되고 있지는 않은지 확인하는 작업입니다. 파일의 삭제 가능 여부와 상관없이 반드시 답장을 해주시기 바랍니다.
  • 스크레치 저장공간은 불필요한 데이터를 수시로 정리해주시고 장기 보관이 필요한 데이터는 SE로 이동 부탁드립니다.
  • 스크레치 디스크는 임시작업용 저장공간입니다. 데이터 손실에 대한 안전장치가 전혀 없으므로 절대 데이터 보관용으로 사용해서는 안됩니다.
  • 매월 28일 90일이 지난 스크레치 디스크의 데이터는 자동으로 삭제됩니다.

서비스별 스토리지 접근

서비스 스토리지 지원 프로토콜 경로 Grid인증 비고
UI UI User Home nfs /u/user/{knu_id} X
UI Scratch nfs /u/user/{knu_id}/scratch -----> /d0/scratch/{knu_id} 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
HTCondor UI User Home nfs /u/user/{knu_id} X
UI Scratch nfs /u/user/{knu_id}/scratch -----> /d0/scratch/{knu_id} 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
  • 해당 경로를 찾을 수 없다면 관리자에게 문의해 주시기 바랍니다.
  • HTcondor 에서 SE에 nfs로 연결됨에 따라 dcap 이나 xrootd 와 같은 별다른 프로토콜 사용 없이 직접적으로 SE의 데이터를 읽고 쓸 수 있습니다.

voms 인증

  • SE는 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
$ root://cluster142.knu.ac.kr//store/user/(username)/.../SrcFile
$ davs://cluster142.knu.ac.kr:2880/cms/store/user/(username)/.../SrcFile

참고사항:
- 위의 예시에서 username은 향후 data를 publish 할 경우를 대비하서 경북대 ID가 아니라 CERNID를 사용해야 합니다.
- 계정을 발급받을 당시에 cern id가 없는 사용자는 해당 경로가 생성되지 않습니다.
- 만약에 cern id가 있는데도 불구하고 본인의 디렉토리가 만들어져 있지 않는 경우에는 관리자에게 연락바랍니다.

SE에서 SE로 파일 복사하기

$ gfal-copy root://cluster142.knu.ac.kr//store/user/(username)/.../SrcFile  \
            root://cluster142.knu.ac.kr//store/user/(username)/.../.../DestFile
$ gfal-copy davs://cluster142.knu.ac.kr:2880/cms/store/user/(username)/.../SrcFile \
            davs://cluster142.knu.ac.kr:2880/cms/store/user/(username)/.../DestFile

SE에 있는 파일을 및 local 디렉토리로 복사하기

$ gfal-copy root://cluster142.knu.ac.kr//store/user/(username)/.../SrcFile  \
            file:////u/user/(username)/.../DestFile
$ gfal-copy root://cluster142.knu.ac.kr//store/user/(username)/.../SrcFile  \
            ./DestFile
$ gfal-copy davs://cluster142.knu.ac.kr:2880/cms/store/user/(username)/.../SrcFile \
            file:////u/user/(username)/.../DestFile
$ gfal-copy davs://cluster142.knu.ac.kr:2880/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

xrootd 를 활용한 SE Data 접근 방법

WebDav 프로토콜을 활용한 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 davs://cluster142.knu.ac.kr:2880/cms/store/user/(username)

파일 또는 디렉토리 삭제

$ gfal-rm davs://cluster142.knu.ac.kr:2880/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 davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/FolderName
 $ 복사 : gfal-copy davs://cluster142.knu.ac.kr:2880/cms/store/user/.../FileNameSrc    davs://cluster142.knu.ac.kr:2880/cms/store/user/.../FileNameDest
 $ 삭제 : gfal-rm davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/FolderName/FileName
 $ 디렉토리 삭제 : gfal-rm -R davs://cluster142.knu.ac.kr:2880/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" 옵션을 사용하면 서브 디렉토리까지 한번에 복사가 가능합니다. 다음과 같이 임의의 테스트 디렉토리를 만들었을때

[MyAccount@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 옵션을 적용해서 다음과 같이 실행하면 (로컬 디스크의 ~/MyAccount/tmp5 디렉토리를 SE의 hanbi/tmp5로 복사)

gfal-copy -r file:////u/user/MyAccount/tmp5 davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/tmp5
[MyAccount@cms ~]$ gfal-copy -r file:////u/user/MyAccount/tmp5 davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/tmp5
Mkdir davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/tmp5
Copying file:////u/user/MyAccount/tmp5/aa   [DONE]  after 0s
Copying file:////u/user/MyAccount/tmp5/bb   [DONE]  after 0s
Copying file:////u/user/MyAccount/tmp5/cc   [DONE]  after 0s
Mkdir davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/tmp5/dir1
Copying file:////u/user/MyAccount/tmp5/dir1/dd   [DONE]  after 0s
Copying file:////u/user/MyAccount/tmp5/dir1/ee   [DONE]  after 0s

아래와 같이 하부 디렉토리까지 스토리지 엘리먼트로 전부 전송이 되는 것을 확인 할 수 있습니다.

[hanbi@cms ~]$ ll /pnfs/knu.ac.kr/data/cms/store/user/MyAccount/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 davs://cluster142.knu.ac.kr:2880/cms/store/user/MyAccount/tmp5 file:////u/user/MyAccount/tmp5 

소스디렉토리의 크기를 확인하는 방법은 다음과 같이 확인할 수 있습니다. 다만 해당 디렉토리 아래의 크기가 매우 클 경우에는 결과가 나오는데 시간이 오래 결릴수 있습니다.

du -hs  /pnfs/knu.ac.kr/data/cms/store/user/MyAccount/tmp5

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

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

$ gfal-ls -Hl davs://cluster142.knu.ac.kr:2880/cms/store/user//test/test.transfer
-rwxrwxrwx   0 0     0     4.8M Oct 12  2015 davs://cluster142.knu.ac.kr:2880/cms/store/user//test/test.transfer
$ source /cvmfs/cms.cern.ch/crab3/crab.sh
$ gfal-ls -Hl davs://cluster142.knu.ac.kr:2880/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 davs://cluster142.knu.ac.kr:2880/cms/store/user/test/test.transfer
-rw-r--r-- 1   2    2    Oct 12 02:17 4.8M davs://cluster142.knu.ac.kr:2880/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 전송

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로 이동하여 주시기 바랍니다.