공개 SW 솔루션설치 & 활용가이드 시스템 SW > 스토리지 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide
CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리
- 3-1. 개요 소개 주요기능 Ceph 는단일분산컴퓨터클러스터에서 object storage 를수행하는 free-software 스토리지플랫폼 데이터를블록, 파일및객체모드로표시하는일련의게이트웨이 API 가있는 RADOS(Reliable Autonomic Distributed Object Store) 라는객체저장소시스템을기반으로하는 redhat 의기술중하나 분산 object store 이자 file system 으로분산클러스터위에서 object storage 를구현해 object, block, file level 의 storage 인터페이스제공 Ceph 는 Ceph Object Storage 서비스와 Ceph Block Device 서비스, Ceph File System 서비스제공 다수의 Region 에서운영하는클러스터사이의싱글네임스페이스와데이터동기화기능제공 액티브디렉토리, LDAP 및 Keystone v3 등을포함하는 openstack 인증시스템과통합해향상한보안기능지원 AWS v4 클라이언트시그니처, object versioning 등에대한지원을포함하는향상된아마존 s3 및 openstack swift 와호완성지원 간단한 UI 를통해스토리지관리및모니터링을지원하는시스템인 redhat storage 콘솔 2 를포함해구축, 운영및관리를간소화지원 대분류 시스템 SW 소분류 스토리지 라이선스형태 GNU LGPL v2.1 사전설치솔루션 open-vm-tools epel-release yum-plugin-priorities 운영제제 Linux, FreeBSD 버전 ceph-release-1-1.el7.noarch ceph-deploy-1.5.37-0.noarch 특징 용량을 petabyte 수준으로손쉽게확장가능, 강력한신뢰성 가변적인워크로드를효과적으로처리할수있는고성능 보안취약점 N/A 개발회사 / 커뮤니티 공식홈페이지 http://ceph.com Ceph Days, Cephalocon / Other Events, Governance, Ceph Tech Talks / Ceph Developer Monthly (CDM), Performance Work
- 4-2. 기능요약 주요기능 지원여부 다수의 Region 에서운영하는클러스터사이의싱글네임스페이스와데이터동기화기능제공 지원 액티브디렉토리, LDAP 및 Keystone v3 등을포함하는 openstack 인증시스템과통합해향상한보안기능지원 지원 간단한 UI 를통해스토리지관리및모니터링을지원하는시스템인레드햇스토리지콘솔 2 를포함해구축, 운영및관리간소화지원 지원 용량을페타바이트수준으로손쉽게확장가능 지원 Ceph Object Storage 서비스와 Ceph Block Device 서비스, Ceph File System 서비스제공. 지원
- 5-3. 실행환경 1. OS CentOS Linux release 7.3.1611 (Core) 환경 ( 총 4 대 ) 2. 사전설치솔루션 ceph-0.94.10-0.el7.x86_64 ceph-common-0.94.10-0.el7.x86_64 fcgi-2.4.0-25.el7.x86_64 3. Ceph package ceph-deploy-1.5.37-0.noarch ceph-release-1-1.el7.noarch
- 6-4. 설치및실행 세부목차 4.1 Preparing the storage 4.2 Install and enable the Extra Packages 4.3 Add the Ceph repository 4.4 Update your repository and install ceph-deploy 4.5 Setup CEPH User 4.6 Configure Hosts and Setup SSH-Key 4.7 Create directory and Setup the cluster 4.8 Installing CEPH 4.9 Setting Ceph mon 4.10 Setup OSD and OSD Daemons Daemons 4.11 Copy configuration files 4.12 Add permissions and Check the health of ceph cluster
- 7-4. 설치및실행 4.1 Preparing the storage Ceph 는 OSD (Object Storage Devices) 로사용하기위해물리적인저장소가필요 -> Ceph 는 etx4, btrfs 및 xfs 를지원한다. ( 예제에서는 ext4 로클러스터를설정한다.)
- 8-4. 설치및실행 4.2 Install and enable the Extra Packages Enterprise Linux (EPEL) 저장소용추가패키지를설치하고활성화 -> yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 9-4. 설치및실행 4.3 Add the Ceph repository ceph.repo 파일을생성하여아래와같이수정 -> vi /etc/yum.repos.d/ceph.repo [ceph-noarch] name=ceph noarch packages baseurl=https://download.ceph.com/rpm/el7/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
- 10-4. 설치및실행 4.4 Update your repository and install ceph-deploy system update 후, ceph-deploy 설치 -> yum update y -> yum install -y ceph-deploy ceph-common ceph-mds -> yum install y fcgi
4. 설치및실행 4.5 Setup ceph user 각노드마다 ceph 계정을생성 -> useradd -d /home/ceph -m ceph s /bin/bash passwd ceph 생성된 ceph 계정이 root 권한을사용할수있도록설정 -> echo ceph ALL = (root) NOPASSWD:ALL sudo tee /etc/sudoers.d/ceph -> chmod 0440 /etc/sudoers.d/ceph - 11 -
- 12-4. 설치및실행 4.6 Configure Hosts and Setup SSH-Key 노드별통신및 Ceph 배포를위한 /etc/hosts 를편집 (Host 등록 ) -> vi /etc/hosts 192.168.248.101 ( 본인 IP) cephmaster ( 사용자 hostname) ssh-keygen 을생성 -> ssh-keygen 입력후모두 enter 입력
4. 설치및실행 4.7 Create directory and Setup the cluster(1/2) master 노드에서 /home/ceph 안에 ceph-cluster directory 생성 -> ceph 설치를진행할 directory 생성후이동한다. mkdir ~/ceph-cluster cd ~/ceph-cluster master 노드의 ceph-cluster directory 에서 deploy 를실행 -> ceph-deploy new cephmaster - 13 -
- 14-4. 설치및실행 4.7 Create directory and Setup the cluster(2/2) 명령을성공적으로실행하면 ceph.conf 파일이생성된것을확인한후아래와같이 변경및추가 -> vi ceph.conf [global] fsid = c78b41c1-28d0-4ea3-9bf9-a731da2c3dfa mon_initial_members = cephmaster mon_host = 192.168.248.101 auth_cluster_required = cephx auth_service_required = cephx 변경및추가 auth_client_required = cephx os crush chooseleaf type = 0 osd_max_object_name_len = 256 osd_max_object_namespace_len = 64
- 15-4. 설치및실행 4.8 Installing CEPH 각저장소별로 Ceph 설치 (ceph 와관련된 package 들이각저장소에설치가된다.) -> ceph-deploy install cephmaster --release hammer
- 16-4. 설치및실행 4.9 Setting Ceph mon Ceph Mon 을설정한다. -> yum install ceph y 사전에설치해주지않으면 Error 가발생한다. -> ceph-deploy mon create-initial
- 17-4. 설치및실행 4.10 Setup OSD and OSD Daemons(1/2) osd 노드활성화사전작업 -> ceph-deploy osd prepare cephmaster:/ceph_node1 cephmaster:/ceph_node2 cephmaster:/ceph_node3
- 18-4. 설치및실행 4.10 Setup OSD and OSD Daemons(2/2) osd 활성화 -> ceph-deploy osd activate cephmaster:/ceph_node1 cephmaster:/ceph_node2 cephmaster:/ceph_node3
- 19-4. 설치및실행 4.11 Copy configuration files 설정파일을각각의저장소에배포 -> ceph-deploy admin cephmaster
4. 설치및실행 4.12 Add permissions and Check the health of ceph cluster 모든노드에서 keyring 파일권한을추가 -> chmod +r /etc/ceph/ceph.client.admin.keyring Ceph 상태확인. 정상적으로완료된상태에서 ceph health 명령어를수행하면 HEALTH_OK 가출력 -> ceph health ceph status ceph osd tree - 20 -
- 21-5. 기능소개 세부목차 5.1 Ceph 성능확인 5.1 Monitor Map 5.1 OSD Map 5.1 MDS Map
- 22-5. 기능소개 5.1 Ceph 성능확인 Ceph 성능확인 ceph osd perf ( 현재 latency 확인방법 ) * fs_commit_latency(ms): 일반적으로 fs_apply_latency 보다훨씬높다. 시스템호출 (syncfs) 이있기때문이며, 일반적으로 100ms 600ms는일반적으로수용가능한시간으로간주된다. fs_commit_latency을사용하여성능을판단하는대신 fs_apply_latency 값을확인하는것이더좋다. * fs_apply_latency(ms): 여기값은메모리내파일시스템에업데이트를적용하는데걸리는시간 (ms) 이다. fs_apply_latency 의값은표시된대기시간은디스크의파일을업데이트하는것보다메모리를업데이트 하는것이훨씬빠르기때문에커밋열보다훨씬낮다.
- 23-5. 기능소개 5.2 Monitor Map Monitor Map ceph mon dump
- 24-5. 기능소개 5.3 OSD Map OSD Map ceph osd tree
- 25-5. 기능소개 5.4 MDS Map MDS Map ceph mds dump
- 26-6. 활용예제 세부목차 6.1 예제소개 6.2 Configure Hosts 6.3 Installation and configuration of prerequisites 6.4 Firewall Setup 6.5 System Update and Reboot 6.6 Setup CEPH User 6.7 Setup SSH-Key 6.8 Installation ceph-deploy 6.9 Create directory and Setup the cluster 6.10 Installing CEPH 6.11 Setting Ceph mon 6.12 Setup OSDs and OSD Daemons 6.13 Copy configuration files to all nodes in cluster 6.14 Add permissions and Check the health of ceph cluster
- 27-6. 활용예제 6.1 예제소개 본예제는 4 개의 node 를이용하여 Ceph cluster 를구성하는것을목표로한다. OS 구성사항 CentOS Linux release 7.3.1611 (Core) 환경 ( 총 4대 ) Ceph-admin : ceph cluster 노드의배치를위한전용노드 Ceph-node1 : mon Ceph-node2 : osd Ceph-node3 : osd
6. 활용예제 6.2 Configure Hosts 노드별통신및 Ceph 배포를위한 /etc/hosts 편집 (host 등록 ) -> vi /etc/hosts 192.168.248.101 admin-node 192.168.248.102 ceph-node1 192.168.248.104 ceph-node2 192.168.248.103 ceph-node3-28 -
- 29-6. 활용예제 6.3 Installation and configuration of prerequisites ceph 설치전필요한 package 설치 -> yum install -y open-vm-tools epel-release yum-plugin-priorities
- 30-6. 활용예제 6.4 Firewall Setup(1/4) 방화벽설정방법 ( 모든노드에서실행 ) -> systemctl start firewalld systemctl enable firewalld -> firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=2003/tcp --permanent firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent firewall-cmd --reload
6. 활용예제 6.4 Firewall Setup(2/4) 방화벽설정 (ceph-node1 에서실행 ) -> firewall-cmd --zone=public --add-port=6789/tcp --permanent firewall-cmd --reload - 31 -
6. 활용예제 6.4 Firewall Setup(3/4) 방화벽설정 (ceph-node2, 3 에서실행 ) -> firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent firewall-cmd reload - 32 -
6. 활용예제 6.4 Firewall Setup(4/4) 방화벽설정 ( 모든노드에서실행 ) -> systemctl stop firewalld systemctl disable firewalld - 33 -
6. 활용예제 6.5 System Update and Reboot system update 한다음 reboot 하여필요한변경사항구현 -> yum update -y -> shutdown -r 0-34 -
6. 활용예제 6.6 Setup CEPH User 각노드마다 ceph 계정을생성 -> useradd -d /home/ceph -m ceph passwd ceph 생성된 ceph 계정이 root 권한을사용할수있도록설정 -> echo ceph ALL = (root) NOPASSWD:ALL sudo tee /etc/sudoers.d/ceph -> sudo chmod 0440 /etc/sudoers.d/ceph - 35 -
- 36-6. 활용예제 6.7 Setup SSH-Key(1/2) ssh-keygen 생성 반드시 master 노드에서만생성해야한다. 그리고 Ceph 계정에서생성 -> su ceph -> ssh-keygen 입력후모두 enter 입력한다.
- 37-6. 활용예제 6.7 Setup SSH-Key(2/2) ssh-keygen 생성후각각의노드로 key 를복사 -> ssh-copy-id admin-node ssh-copy-id ceph-node1 ssh-copy-id ceph-node2 ssh-copy-id ceph-node3 ( 모두 yes 입력한뒤 password 를입력한다.)
- 38-6. 활용예제 6.8 Installation ceph-deploy(1/2) Master 노드에만 ceph-deploy package 설치 -> sudo wget http://download.ceph.com/rpm-hammer/el7/noarch/ceph-deploy-1.5.17-0.noarch.rpm sudo rpm -ivh ceph-deploy-1.5.17-0.noarch.rpm
- 39-6. 활용예제 6.8 Installation ceph-deploy(2/2) ceph.repo 파일을생성하여아래와같이수정 sudo vi /etc/yum.repos.d/ceph.repo [ceph] name=ceph packages for $basearch baseurl=http://download.ceph.com/rpm-hammer/el7/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=ceph noarch packages baseurl=http://download.ceph.com/rpm-hammer/el7/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=ceph source packages baseurl=http://download.ceph.com/rpm-hammer/el7/srpms enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
- 40-6. 활용예제 6.9 Create directory and Setup the cluster(1/2) master 노드에서 /home/ceph 안에 ceph-cluster directory 를생성 -> ceph 설치를진행할 directory 로 ceph 계정에서생성한다. ->mkdir ~/ceph-cluster cd ~/ceph-cluster master 노드의 ceph-cluster directory 에서 deploy 를실행 -> ceph-deploy new ceph-node1
- 41-6. 활용예제 6.9 Create directory and Setup the cluster(2/2) 명령을성공적으로실행하면 ceph.conf 파일이생성된것을볼수있고, 아래와같이변경및추가 -> vi ceph.conf [global] fsid = 2463a48d-cb11-4dfd-b1c8-2e7173e9adb7 mon_initial_members = ceph-node1 mon_host = 192.168.248.109 auth_cluster_required = none 변경및추가 auth_service_required = none auth_client_required = none osd pool default size = 2 osd pool default min size = 1 osd pool default pg num = 256 osd pool default pgp num = 256 public network = 192.168.248.0/22 osd_max_object_name_len = 256 osd_max_object_namespace_len = 64
- 42-6. 활용예제 6.10 Installing CEPH(1/2) Master 노드에서각노드별로 Ceph 를설치 (ceph 와관련된 package 들이각노드들에설치가된다.) -> ceph-deploy install --release hammer admin-node ceph-node1 ceph-node2 ceph-node3
- 43-6. 활용예제 6.10 Installing CEPH(2/2) 각각의노드별로실행하여정상적으로 ceph 가설치되었는지확인 -> ceph -v
- 44-6. 활용예제 6.11 Setting Ceph mon Ceph Mon 을설정 -> ceph-deploy mon create ceph-node1 ceph-deploy mon gatherkeys ceph-noed1 -> ceph-deploy mon create-initial (ceph-deploy mon create ceph-node1 + ceph-deploy mon gatherkeys ceph-noed1) ( 둘중하나만실행하면된다. create-initial은두가지모두한꺼번에실행하는명령이다.)
- 45-6. 활용예제 6.12 Setup OSD and OSD Daemons(1/3) osd0, osd1 directory 를생성하여 ceph-node2, 3 에 OSD 를추가 -> Ceph 계정으로 ceph-node2 에서 mkdir /var/local/osd0 ->Ceph 계정으로 ceph-node3 에서 mkdir /var/local/osd1
- 46-6. 활용예제 6.12 Setup OSD and OSD Daemons(2/3) osd 노드활성화사전작업 -> ceph-deploy osd prepare ceph-node2:/var/local/osd0 ceph-node3:/var/local/osd1
- 47-6. 활용예제 6.12 Setup OSD and OSD Daemons(3/3) osd 활성화 -> ceph-deploy osd activate ceph-node2:/var/local/osd0 ceph-node3:/var/local/osd1
- 48-6. 활용예제 6.13 Copy configuration files to all nodes in cluster Master 노드의설정파일을각각의노드에배포 -> ceph-deploy admin admin-node ceph-node1 ceph-node2 ceph-node3
- 49-7. FAQ Q Ceph 를사용할수있는 OS는어떤것이있나요? & A Ceph 은 APT 패키지를사용하여 Debian / Ubuntu 배포판에서실행되며, RPM 패키지를사용 하여 Fedora 및 Enterprise Linux (RHEL, CentOS) 에서도실행됩니다. 또한 Ceph source tarballs을다운로드및재배포할수있도록 Ceph를빌드할수있습니다. Q 하이퍼바이저를통해 Ceph에액세스할수있습니까? & A 현재 QEMU 하이퍼바이저는 Ceph 블록장치와상호작용할수있으며, KVM 모듈과 librbd 라이브러리를사용하여 Ceph와 QEMU를사용할수있습니다. 대부분의 Ceph 배치는 librbd 라이브러리를사용합니다. OpenStack 및 CloudStack과같은클라우드솔루션은 libvirt 및 QEMU를 Ceph와의통합수단으로사용합니다. Ceph 커뮤니티는 Emperor 릴리스에서 Xen 하이퍼바이저에대한지원을추가했습니다.
- 50-8. 용어정리 용어 설명 ceph-mon MON 은클러스터의상태를체크하고, PG(Placement Group) map, OSD map 등을 관리한다. 그리고 Ceph 의 state history 를저장하고관리한다. ceph-ods ODS 는데이터를저장하고, 복제, 부하분산등의역할을한다. 간단하게 Ceph 데이터를 저장하는저장소이다. (OSD 디스크 1TB 당메모리 1G 이상으로구성해야한다.) ceph-mds MDS 는 Ceph Metadata Server 에서일반사용자가 Ceph 데이터를검색및체크 ( 기본 명령어 : -ls, find 등 ) 하기위해 metadata 들을저장하는서버이다.
Open Source Software Installation & Application Guide 이저작물은크리에이티브커먼즈 [ 저작자표시 비영리 동일조건변경허락 2. 0 대한민국라이선스 ] 에따라이용하실수있습니다.