ablecloud-team / ablestack-ceph

Ceph is a distributed object, block, and file storage platform
https://ceph.io
Other
0 stars 3 forks source link

ceph 명령어 및 API를 통한 GlueFS, NFS, iSCSI 구성 연구 #74

Open Dajeong-Park opened 1 year ago

Dajeong-Park commented 1 year ago

GlueFS 관련 ceph 명령어 활용

사전에 제거 관련 옵션이 true로 설정되어있어야 삭제가 가능 #ceph config set mon mon_allow_pool_delete true

  1. 파일 시스템, 데이터/메타 데이터 풀, mds 서비스 각각 제거하는 방법

    #ceph fs set [fs_name] down true
    #ceph fs rm [fs_name] --yes-i-really-mean-it
    #ceph osd pool delete cephfs.[fs_name].data cephfs.[fs_name].data --yes-i-really-really-mean-it
    #ceph orch rm mds.[fs_name]
  2. 파일 시스템 및 데이터/메타 데이터 풀, mds 서비스 한번에 제거하는 방법

    #ceph fs volume rm [fs_name] --yes-i-really-mean-it

max_size

setfattr -n ceph.quota.max_bytes -v 100000000 /mnt/gluefs (100000000Byte=100MB)

getfattr -n ceph.quota.max_bytes mnt/gluefs (설정 확인)

max_file

setfattr -n ceph.quota.max_files -v 10000 /mnt/gluefs (10000=10000개)

getfattr -n ceph.quota.max_files mnt/gluefs (설정 확인)


* 파일 시스템용 스냅샷 생성/확인/삭제

ex) mount -t ceph 100.100.4.14:/ /mnt -o name=admin 마운트하고, fs path가 /gluefs 인 경우

cd /mnt/gluefs

mkdir .snap/new-snaps (생성)

ls -l .snap/ (확인)

cd /mnt/gluefs

rmdir .snap/new-snaps (삭제)



**cephFS를 마운트하려면 ceph-client가 설치되어있어야 mount -ceph 명령을 사용할 수 있음**
Dajeong-Park commented 1 year ago

iSCSI 관련 ceph 명령어 활용

  1. yaml 파일로 iSCSI 배포하는 방법
    
    iscsi.yaml 파일 작성

service_type: iscsi service_id: iscsi service_name: iscsi.iscsi placement: hosts:

  1. ceph 명령어로 iSCSI 배포하는 방법

api_port 옵션은 ceph command에 없으며, 아래와 같은 명령어 실행한 경우 서비스 상태는 Error 가 되는 이슈 #ceph orch apply iscsi --pool=rbd --api_user=ablecloud --api_password=Ablecloud1! --placement=gwvm

iscsiadm -m discovery -t st -p 10.10.2.14

iscsiadm -m node -T iqn.2001-07.com.ceph:1683504875361 -l

iscsiadm -m node -T iqn.2001-07.com.ceph:1683504875361 --logout

Dajeong-Park commented 1 year ago

NFS 관련 ceph 명령어 활용

Dajeong-Park commented 1 year ago

-생성된 키 확인

ceph auth get client.ablecloud

-인증키를 클라이언트에 내보내기

ceph auth get client.ablecloud -o ceph.client.ablecloud.keyring

GWVM 구성 테스트 케이스

  1. GWVM을 모니터로 띄우는 경우 (테스트 완료) mgr과 분리하기위해 Hosts 라벨에 monitor 추가, Services Mon에 count 올리고 label을 monitor로 변경
  2. GWVM을 모니터에 추가하지 않고, MDS를 SCVM에 구성하고 GWVM에서 fs를 마운트하는 경우 (테스트 완료)
Dajeong-Park commented 1 year ago

ceph restful API 테스트

headers = { 'Accept': 'application/vnd.ceph.api.v1.0+json', 'Content-Type': 'application/json', }

json_data = { 'username': 'ablecloud', 'password': 'Ablecloud1!', }

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

try: response = requests.post('https://10.10.4.12:8443/api/auth', headers=headers, json=json_data, verify=False) token = response.json()['token'] headers = { 'Accept': 'application/vnd.ceph.api.v1.0+json', 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } response = requests.get('https://10.10.4.12:8443/api/cephfs', headers=headers, verify=False) res=json.dumps(response.json(), indent=2) print(res)

except Exception as e: print("error : ", e)


**ceph librados (python) API 테스트**

scvm에 설치되어있는 python3-rados 활용하여 ceph.conf 파일로 클러스터 id 및 pool 조회 python 파일 작성

import rados, sys

cluster = rados.Rados(conffile='/root/ceph.conf') cluster.connect() print("cluster id: {} ".format(cluster.get_fsid()))

pools=cluster.list_pools() for pool in pools: print(pool)

mincheol-jeong commented 1 year ago

SAMBA 구성

[global] workgroup = WORKGROUP #윈도우 워크스테이션 [shared] #공유할 파일 이름 path = /mnt/cephfs/smb #공유할 디렉토리 위치 writable = yes #쓰기 read only = no #읽기 guest ok = yes create mode = 0777 directory mode = 0777

- smb.conf 파일 옵션들
```shell
host allow : ip 접속 허용
host deny : ip 접속 차단
comment : 공유되는 디렉토리에 대한 부가적인 설명
path : 공유 디렉토리 절대 경로
browseable : 공유 디렉토리 탐색
public(guest ok) : Anonymous 접근 (default = no)
valid users : 접속을 허용할 사용자 (@그룹) 지정
writable : 접속된 사용자의 쓰기 허용 여부 (default = no)
write list : 쓰기를 허용할 사용자(@그룹) 지정
create mask : 파일 또는 디렉토리 소유권한 (default = directory(755), file(744))
  1. samba user 생성 smbpasswd -a mcjeong passwd
mincheol-jeong commented 1 year ago

SAMBA 정보 조회

SAMBA 삭제

  1. samba 사용자 삭제

smbpasswd -x #samba 유저 삭제

userdel -r #홈 디렉토리도 삭제

userdel #홈 디렉토리 제외, user만 삭제

2. ceph volume 디렉토리 삭제
```shell
rm -rf /mnt/cephfs/smb
  1. samba 패키지 삭제
    dnf -y remove samba samba-common samba-client
Dajeong-Park commented 1 year ago

NFS 관련 python 기능별 목록 개발 및 테스트 진행사항 (ceph API 사용)

iSCSI 관련 python 기능별 목록 개발 및 테스트 진행사항 (ceph API 사용)

GlueFS 관련 python 기능별 목록 개발 및 테스트 진행사항 (gluefs 구성/삭제 제외한 기능은 ceph API 사용)

python 공통 처리 및 마지막 테스트 항목