Ceph 가상 계정 생성후 pool 할당 해주기

리눅스/Ceph|2016. 8. 2. 09:15
반응형

(ceph node 에서)

 

# su - cephuser

 

$ cd ~/ceph

 

$ ceph-authtool ceph.client.sysdocu.keyring --create-keyring --name client.sysdocu --gen-key --set-uid 458 --cap mon 'allow profile simple-rados-client' --cap osd 'allow rwx pool=sysdocu-pool'

// ceph.client.sysdocu.keyring : 계정 정보를 출력한 파일 (아래 명령으로 서버에 인식 시킨 후, 삭제해도 됨)

// sysdocu : 사용자명

// --set-uid 458 형식의 옵션으로 사용자 번호를 매기면, 추후 계정 생성 순서를 알 수 있게 됩니다. (생략 가능)

// [참고] 사용중인 계정 정보 (사용자명, key, 권한) 출력 : $ ceph auth list

$ ceph auth import --in-file ceph.client.sysdocu.keyring

// 생성된 사용자와 키 파일을 서버에 인식시키는 절차입니다. 명령 이후에 파일을 삭제해도 됩니다.

 

$ ceph auth get client.sysdocu

// 시스템에 잘 들어갔는지 정보 출력해 봅니다.

 

ceph osd pool create sysdocu-pool 128 128

// (의미) ceph osd pool create {pool-name} {pg-num} {pgp-num}

// 설명 계속...

기본 pg_num 을 정하는 기준은 아래를 권장합니다.

 

osd 가 5개 미만일 경우 pg_num 128,

5~10 개는 pg_num 512,

10~50 개는 pg_num 4096 이 적절 합니다.

50개 이상은 pgcalc 계산을 참조하여 설정하면 됩니다.

 

현재 테스트 문서에서는 osd 가 2개 이므로 pg_num 128 로 설정하여 진행합니다.

 

ceph osd pool set-quota sysdocu-pool max_bytes 100M

// 참고 : 용량 1G 를 줄 경우 $((1024 * 1024 * 1024)) 이렇게 계산식으로 정확하게 입력이 가능합니다.

 

$ rados put --pool sysdocu-pool GROUP /etc/group

// 왜 있는지 모름... 테스트 할때는 없어도 됐음. 추후 삭제 예정..

 

생성된 사용자 keyring 파일과 ceph 설정 파일을 client 서버로 복사합니다.

// 잠깐!

아래 두 개의 파일을 client 에게 전송시 client 가 rbd pool 및 image 를 생성하거나 용량을 늘려 사용이 가능하므로

client 에게 마운트 권한만 부여하려면 아래 두 줄을 생략하도록 합니다. (아래 계속 설명)

 

$ scp ceph.client.sysdocu.keyring root@ceph-client:/etc/ceph/

 

$ scp ceph.conf root@ceph-client:/etc/ceph/

 

 

pool 내에 image 생성하기

 

$ rbd --pool sysdocu-pool create --size 100M vda --image-feature layering

 

$ rbd --pool sysdocu-pool info vda

 

 

 

(ceph-client 에서)

 

# cd /etc/ceph/

 

# rbd --name client.sysdocu --keyring ceph.client.sysdocu.keyring --pool sysdocu-pool map vda

// 보안상 두 개의 파일을 가져오지 않았다면, 아래 '참고' 부분 맨 마지막 명령줄을 사용하면 됩니다.

// 사용자 계정 및 key 확인 명령 : (ceph node 에서) $ 

ceph auth list

 

mkfs -t xfs -f /dev/rbd0

 

# mkdir /data

 

# mount /dev/rbd0 /data

 

# df -h

 
Filesystem      Size  Used Avail Use% Mounted on
udev            982M     0  982M   0% /dev
tmpfs           201M  3.3M  197M   2% /run
/dev/sda1       7.8G  2.0G  5.4G  28% /
tmpfs          1001M     0 1001M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
tmpfs           100K     0  100K   0% /run/lxcfs/controllers
tmpfs           201M     0  201M   0% /run/user/0
/dev/rbd0        94M  5.0M   89M   6% /data

 

 

* 참고

실 서비스에서는 client 가 admin keyring 파일이나 다른 client keyring 파일을 가지고 있으면, (id 와 key를 안다면)

rbd 명령을 통해 pool 을 생성한다던지, pool 사이즈를 마음대로 늘릴 수 있게 됩니다.

이를 방지하려면 ceph node 에서 ceph-client 에 전송했던 keyring 파일은 삭제를 하고, rbd 명령으로 마운트할때 아래와 같이 옵션으로 key 를 사용하도록 합니다. 그리고 명령줄은 쉘스크립트로 만들어 암호화(바이러니) 시키면 됩니다.

 

예) rbd --name client.sysdocu --key CRXJ3UxEBAAFxLI1hMRop6AVLa3wr6ruQ== --pool sysdocu-pool info vda

 

한 client 서버에 ceph.conf 까지 보관하지 않으려면 아래 옵션을 추가 하면 됩니다.

 

예) rbd --mon_host 192.168.10.2 --name client.sysdocu --key CRXJ3UxEBAAFxLI1hMRop6AVLa3wr6ruQ== --pool sysdocu-pool info vda

 

여기에 한가지 팁을 붙이자면, mapping 할때 화면에 conf 파일 및 keyring 파일이 없다는 로그가 출력되므로, 아래와 같은 옵션을 주어 출력이 되지 않도록 할 수 있습니다.

 

예) rbd --mon_host 192.168.10.2 --conf /dev/null --keyring /dev/null --name client.sysdocu --key CRXJ3UxEBAAFxLI1hMRop6AVLa3wr6ruQ== --pool sysdocu-pool info vda

 

 

[원문] http://dachary.org/?p=2930

[수정] sysdocu

 

반응형

댓글()