Rocky Linux 8 에서 Ceph 17 (Quincy) 설치하기
여기에서는 Rocky Linux 8 환경에서 Ceph 17.x (Quincy) 버전을 설치하는 방법을 기술하였습니다.
Ceph 는 역할에 따라 MON, OSD, MDS 서버 등 여러대로 나뉘어 운영되므로, 각각의 역할이 이해 된다면 프로젝트에 맞는 적절한 구성을 직접 구현하는것이 좋습니다. 서비스에 적용하실 분은 데이터 망실 방지 또는 무정지 시스템 구축을 목적으로 반드시 이중화 구성을 권장합니다.
- MON (Ceph monitor) : 클러스터의 모든 노드 상태를 추적하는 클러스터 모니터 서버입니다.
- OSD (Object Storage Device) : 데이터를 저장하고 클라이언트 요청을 처리하는 서버입니다.
- MDS (Metadata Server Daemon) : 메타데이터 서버입니다. CephFS 파일 시스템 작동에 사용됩니다.
[테스트 환경]
- H/W : CPU 2 Core & 메모리 4GB
- OS : Rocky Linux 8
- 추가 Disk : 50GB
* 이 구성으로 서버 3대를 준비하였습니다.
1. 설치
1) 환경 업데이트
(모든 서버에서)
# dnf -y update
# dnf -y upgrade
2) 호스트명 설정
서버에서 사용할 호스트명을 설정해줍니다.
(모든 서버에서)
# vi /etc/hosts
127.0.0.1 localhost 10.101.0.8 ceph-1 10.101.0.12 ceph-2 10.101.0.22 ceph-3 |
# hostnamectl set-hostname ceph-1 // ceph-1 서버에서
# hostnamectl set-hostname ceph-2 // ceph-2 서버에서
# hostnamectl set-hostname ceph-3 // ceph-3 서버에서
3) SSH key copy
(ceph-1 서버에서)
# ssh-keygen // 패스워드 없이 생성
# ssh-copy-id ceph-1
# ssh-copy-id ceph-2
# ssh-copy-id ceph-3
4) chrony 설치
(모든 서버에서)
# dnf -y install chrony
# systemctl enable --now chronyd
5) Python 설치
(모든 서버에서)
# dnf -y install python39
# python3 --version
Python 3.9.16
6) Podman 설치
(모든 서버에서)
# dnf -y install podman
# podman -v
podman version 4.4.1
7) cephadm 설치
클러스터를 생성하고 구성하는데 사용할 cephadm 도구를 설치합니다.
(모든 서버에서)
# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
# chmod +x cephadm
# ./cephadm add-repo --release quincy
# ./cephadm install
Ceph 클러스터를 만들기 위해 cephadm 부트스트랩이 사용됩니다.
이 명령어는 지정된 노드에서 Ceph 서비스와 첫 번째 모니터를 시작하고 클러스터를 만들고 키, 구성 파일 등을 생성합니다.
모니터 데몬을 생성합니다. 명령 실행시 모니터 데몬이 생성될 서버의 IP 를 기입해줍니다.
만약, OSD 간 복제 트래픽을 위해 별도의 네트워크를 사용하고자 하는 경우 아래와 같은 옵션을 같이 사용하시기 바랍니다.
--cluster-network 192.168.1.0/24
(ceph-1 서버에서)
# cephadm bootstrap --mon-ip 10.101.0.8
...
Ceph Dashboard is now available at:
URL: https://ceph-1:8443/
User: admin
Password: vqyeyu0il6
...
설치가 완료되면 위와 같이 Ceph 대시보드 접속 정보가 출력됩니다.
웹브라우저를 이용하여 접속, 로그인을 하면 관리 페이지가 잘 출력되는 것을 확인할 수 있습니다.
처음 로그인시 패스워드를 변경하는 절차가 있고, 로그인을 다시 하면 대시보드에 접속 됩니다.
대시보드가 설치 되었지만 앞으로의 설정과 사용 방법은 CLI 환경에서 이어 나가도록 하겠습니다.
8) ceph-common 설치
설치된 cephadm 파일로 ceph-common 패키지 설치를 이어갑니다.
(모든 서버에서)
# cephadm install ceph-common
설치된 버전을 확인합니다.
# ceph -v
ceph version 17.2.6 (d7ff0d10654d2280e08f1ab989c7cdf3064446a5) quincy (stable)
관리 작업에 첫 번째 노드를 사용하므로 SSH 키를 설치하고 나머지 노드의 /etc/ceph 에 배치해야 합니다.
(ceph-1 서버에서)
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-2
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-3
Ceph 클러스터에 호스트를 추가 합니다.
# ceph orch host add ceph-2
Added host 'ceph-2' with addr '10.101.0.12'
# ceph orch host add ceph-3
Added host 'ceph-3' with addr '10.101.0.22'
호스트 목록을 확인합니다.
# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-1 10.101.0.8 _admin
ceph-2 10.101.0.12
ceph-3 10.101.0.22
3 hosts in cluster
Ceph Monitor 데몬은 클러스터 구성원 자격, 구성 및 상태에 대한 매우 안정적이고 지속적인 저장을 제공하기 위하여 모든 노드에 MON 역할을 부여합니다.
# ceph orch apply mon --placement="ceph-1,ceph-2,ceph-3"
Ceph Manager 데몬은 모니터 데몬과 함께 실행되어 외부 모니터링 및 관리 시스템에 추가적인 모니터링 및 인터페이스를 제공합니다.
역시 모든 노드에 MGR 역할을 부여합니다.
# ceph orch apply mgr --placement="ceph-1,ceph-2,ceph-3"
CephRBD 뿐 아니라 CephFS 도 사용하기 위해 MDS 를 생성합니다. 미리 모든 노드에 MDS 역할을 부여 합니다.
여기에서는 파일시스템을 식별하기 위해 myfs 라는 이름으로 생성 하였습니다.
# ceph orch apply mds myfs --placement="ceph-1,ceph-2,ceph-3"
OSD 저장소를 추가 합니다. Ceph 저장에 사용할 수 있는 디스크를 하나씩 추가해 줍니다.
형식) # ceph orch daemon add osd {호스트명}:{디스크},{디스크},...
# ceph orch daemon add osd ceph-1:/dev/vdb
# ceph orch daemon add osd ceph-2:/dev/vdb
# ceph orch daemon add osd ceph-3:/dev/vdb
Ceph 및 OSD 상태를 확인합니다.
# ceph -s
cluster:
id: 17bddd2a-5b78-11ee-b774-fa163ed3a133
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-1,ceph-3,ceph-2 (age 14h)
mgr: ceph-1.ieznfl(active, since 14h), standbys: ceph-3.hfrlpp, ceph-2.vgyqhd
osd: 3 osds: 3 up (since 13h), 3 in (since 13h)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 63 MiB used, 150 GiB / 150 GiB avail
pgs: 1 active+clean
# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.14639 root default
-3 0.04880 host ceph-1
0 hdd 0.04880 osd.0 up 1.00000 1.00000
-5 0.04880 host ceph-2
1 hdd 0.04880 osd.1 up 1.00000 1.00000
-7 0.04880 host ceph-3
2 hdd 0.04880 osd.2 up 1.00000 1.00000
9) 라벨링
호스트에 라벨 할당하는 것을 지원합니다. 라벨은 자유 형식이며 그 자체로는 특별한 의미가 없습니다.
각 호스트는 여러 개의 라벨을 가질 수 있으므로 데몬의 배치를 기록해 두는데 사용하면 편리합니다.
# ceph orch host label add ceph-1 osd
# ceph orch host label add ceph-2 osd
# ceph orch host label add ceph-3 osd
# ceph orch host label add ceph-1 mon
# ceph orch host label add ceph-2 mon
# ceph orch host label add ceph-3 mon
# ceph orch host label add ceph-1 mgr
# ceph orch host label add ceph-2 mgr
# ceph orch host label add ceph-3 mgr
* 참고 : 라벨 삭제는 add 대신 rm 옵션 사용
전체 라벨을 확인합니다.
# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-1 10.101.0.8 _admin osd mon mgr
ceph-2 10.101.0.12 osd mon mgr
ceph-3 10.101.0.22 osd mon mgr
3 hosts in cluster
2. 설정
1) Pool 생성
Pool 은 데이터를 저장하고 관리하는 논리적인 저장 공간을 나타내며, Pool 안에 여러개의 블록 레벨 스토리지 이미지를 생성할 수 있으므로 그룹이라고 생각해도 좋습니다. Pool 생성 및 삭제에 관한 기본 명령은 아래와 같습니다.
- 생성 : ceph osd pool create {pool-name} {pg-num} {pgp-num}
- 확인 : ceph osd lspools
- 데이터 복사 : rados cppool {old-pool-name} {new-pool-name} // 새로운 Pool 생성 후 데이터 복사 가능
- 삭제 : ceph osd pool delete {pool-name} {pool-name} --yes-i-really-really-mean-it // 하단 선행작업 필요
- 이름 변경 : ceph osd pool rename {old-pool-name} {new-pool-name}
- 제한 : ceph osd pool set-quota {pool-name} max_bytes {limit-size} // 예 : 10G (제한 해제값 : 0)
- 제한 확인 : ceph osd pool get-quota {pool-name}
* 삭제시 선행작업
pool 삭제시 그 안에 생성한 여러 volume 들은 함께 삭제가 됩니다.
이와 같이 실수로 삭제하는것을 방지하기 위하여 pool 이름을 두 번 쓰고, 명령을 인지하고 있다는 옵션 (문장) 도 적어줘야 합니다. 그리고 사전 작업으로 아래 옵션을 적용하고 삭제 명령을 실행해야 합니다.
# ceph config set mon mon_allow_pool_delete true
삭제 이후에는 다른 실수가 없도록 다시 delete 명령을 비활성화 합니다.
# ceph config set mon mon_allow_pool_delete false
Pool 생성시 기본 pg_num 을 정하는 기준은 아래를 권장합니다.
(참고 : 2016년도에 기록한 내용으로 사용)
- OSD 가 5개 미만일 경우 pg_num 128
- 5~10 개는 pg_num 512
- 10~50 개는 pg_num 4096 이 적절 합니다.
- 50개 이상은 pgcalc 계산을 참조하여 설정하면 됩니다.
Pool 이름은 sysdocu 로 하고, 준비된 OSD 개수가 3개 였으므로, pg_num 을 128 로 설정하여 진행할 것입니다.
pgp-num 은 생략하겠습니다.
# ceph osd pool create sysdocu 128
pool 'sysdocu' created
2) CephRBD 이미지 생성
블록 레벨 스토리지 이미지를 생성합니다.
# rbd create sysdocu/volume01 --size 1G --image-feature layering
생성된 볼륨 리스트를 확인합니다.
# rbd ls sysdocu
volume01
하나의 볼륨 정보를 확인하는 방법은 아래와 같습니다.
# rbd info sysdocu/volume01
rbd image 'volume01':
size 1 GiB in 256 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 5e94b120cbea
block_name_prefix: rbd_data.5e94b120cbea
format: 2
features: layering
op_features:
flags:
create_timestamp: Tue Sep 26 07:40:53 2023
access_timestamp: Tue Sep 26 07:40:53 2023
modify_timestamp: Tue Sep 26 07:40:53 2023
참고로, 아래는 볼륨 삭제하는 명령 형식입니다.
# rbd rm {pool-name}/{volume-name}
3) CephFS 생성
파일시스템으로 사용 가능한 CephFS 를 생성합니다.
아래와 같이 실행시 자동으로 MDS 가 구동됩니다.
# ceph fs volume create myfs
* MDS 상태 확인
# ceph -s
또는
# ceph orch ls
* CephFS 리스트 확인
# ceph fs ls
name: myfs, metadata pool: cephfs.myfs.meta, data pools: [cephfs.myfs.data ]
또는
# ceph mds stat
myfs:1 {0=myfs.ceph-2.bmzpdd=up:active} 1 up:standby
'리눅스 > Ceph' 카테고리의 다른 글
이미지 업로드 에러발생시 (0) | 2017.08.07 |
---|---|
Ceph qcow2 실제 디스크 사용량으로 변환 (zero-fill) (0) | 2017.07.07 |
Ceph qemu-nbd and zerofill 사용하고 다시 줄어든 용량 적용해주기 (0) | 2017.07.07 |
Ceph 실제 고객이 사용하는 블록스토리지 1개 사용량 확인하기 (0) | 2017.07.07 |
Ceph mount 명령어 스크립트를 암호화 하여 (부팅시) 다른 데몬 보다 먼저 구동하기 (0) | 2016.09.02 |