## Ceph在CentOS上安装单机客户端
### 环境描述
>Linux 版本:CentOS Linux release 7.2 (Final)
CEPH版本:ceph version 11.2.0
内网无法连接到官网地址,因此可以通过两种方式进行安装
A)部署内部YUM源站点,通过ceph-deploy工具指定URL
B)下载RPM包并上传到服务器,手工安装
这里采用第二种安装方式
### RPM依赖安装
1、通过官方网站下载最新版RPM包
2、解决依赖关系
安装之前,先检查下列包是否存在,不同的Linux内核版本会有一些差异
```shell
yum install -y junit boost gdisk fcgi xmlstarlet java-devel snappy cryptsetup
yum install python-flask-0.10.1-4.el7.noarch
yum install gperftools-libs-2.2.1-1.2.x86_64.rpm
yum install libbabeltrace-1.2.4-3.el7.x86_64.rpm
yum install lttng-ust-2.4.1-1.el7.1.x86_64.rpm
yum install userspace-rcu-0.7.16-1.el7.x86_64.rpm
yum install python-requests
yum install python-setuptools
yum install glibc.i686
```
### 安装准备
3、Jewel版本之后默认用户为ceph,安装之前先创建ceph用户并授权
```shell
adduser -d /home/ceph -m ceph
passwd ceph
# 设置用户权限
echo "ceph ALL =(root) NOPASSWD:ALL" | tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
```
4、requiretty准备
```shell
visudo
# 注释掉Defaults requiretty
# Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
# 否则会出现sudo: sorry, you must have a tty to run sudo
```
5、防火墙设置
根据公司安全策略决定是否关闭防火墙,如果不关闭,多台机器间的通讯可能会出现端口不通的情况
```shell
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
```
6、修改别名
ceph.conf中可以通过配置别名进行多个监控服务之间的通讯,修改hosts中的别名,或者通过hostnamectl设置
```shell
vi /etc/hosts
# xxx.xxx.xxx.xxx ceph-node1
```
### 安装CEPH RPM包
```shell
rpm -ivh libbabeltrace-1.2.1-1.fc20.x86_64.rpm
rpm -ivh libbabeltrace-1.2.1-1.fc20.x86_64.rpm
rpm -ivh leveldb-1.12.0-5.el7.1.x86_64.rpm
rpm -ivh leveldb-devel-1.12.0-5.el7.1.x86_64.rpm
rpm -ivh selinux-policy-3.13.1-60.el7_2.9.noarch.rpm
rpm -ivh selinux-policy-targeted-3.13.1-60.el7_2.9.noarch.rpm
# 下载并解压CEPH安装包
rpm -ivh *
# 1:librados2-1:11.1.0-6896.g2aab144.################################# [ 3%]
# 2:librbd1-1:11.1.0-6896.g2aab144.el################################# [ 6%]
# 3:libcephfs2-1:11.1.0-6896.g2aab144################################# [ 9%]
# 4:python-rados-1:11.1.0-6896.g2aab1################################# [ 13%]
# 5:librados-devel-1:11.1.0-6896.g2aa################################# [ 16%]
# 6:librgw2-1:11.1.0-6896.g2aab144.el################################# [ 19%]
# 7:libradosstriper1-1:11.1.0-6896.g2################################# [ 22%]
# 8:python-rgw-1:11.1.0-6896.g2aab144################################# [ 25%]
# 9:python-cephfs-1:11.1.0-6896.g2aab################################# [ 28%]
# 10:python-rbd-1:11.1.0-6896.g2aab144################################# [ 31%]
# 11:ceph-common-1:11.1.0-6896.g2aab14################################# [ 34%]
# 12:ceph-selinux-1:11.1.0-6896.g2aab1################################# [ 38%]
# 13:ceph-base-1:11.1.0-6896.g2aab144.################################# [ 41%]
# 14:libcephfs_jni1-1:11.1.0-6896.g2aa################################# [ 44%]
# 15:ceph-mds-1:11.1.0-6896.g2aab144.e################################# [ 47%]
# 16:ceph-mgr-1:11.1.0-6896.g2aab144.e################################# [ 50%]
# 17:ceph-mon-1:11.1.0-6896.g2aab144.e################################# [ 53%]
# 18:ceph-osd-1:11.1.0-6896.g2aab144.e################################# [ 56%]
# 19:ceph-1:11.1.0-6896.g2aab144.el7 ################################# [ 59%]
# 20:cephfs-java-1:11.1.0-6896.g2aab14################################# [ 63%]
# 21:libcephfs_jni-devel-1:11.1.0-6896################################# [ 66%]
# 22:ceph-radosgw-1:11.1.0-6896.g2aab1################################# [ 69%]
# 23:ceph-test-1:11.1.0-6896.g2aab144.################################# [ 72%]
# 24:rbd-mirror-1:11.1.0-6896.g2aab144################################# [ 75%]
# 25:python-ceph-compat-1:11.1.0-6896.################################# [ 78%]
# 26:libradosstriper-devel-1:11.1.0-68################################# [ 81%]
# 27:librgw-devel-1:11.1.0-6896.g2aab1################################# [ 84%]
# 28:libcephfs-devel-1:11.1.0-6896.g2a################################# [ 88%]
# 29:librbd-devel-1:11.1.0-6896.g2aab1################################# [ 91%]
# 30:rbd-fuse-1:11.1.0-6896.g2aab144.e################################# [ 94%]
# 31:rbd-nbd-1:11.1.0-6896.g2aab144.el################################# [ 97%]
# 32:ceph-fuse-1:11.1.0-6896.g2aab144.################################# [100%]
```
### 配置ceph.conf文件
```shell
ceph --version
# ceph version 11.1.0-6896-g2aab144 (2aab1443fa28e47e81add9a5aa999c5f7dc39e70)
# 将服务端的配置拷贝到客户段
cd /etc/ceph
vi ceph.client.admin.keyring
[client.admin]
key = AQDeBDFZCNYwDxAAwyhHxRK6Cd7OMDm==
auid = 0
caps mds = "allow"
caps mon = "allow *"
caps osd = "allow *"
```
```shell
vi ceph.conf
#添加以下内容
fsid = deeade81-2e18-4d1e-a37a-1154
mon_initial_members = ser-node1,ser-node2,ser-node3
mon_host = xxx.xxx.xxx,xxx.xxx.xxx,xxx.xxx.xxx
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
mon_allow_pool_delete = true
mon clock drift allowed = 2
mon clock drift warn backoff = 30
#enable_experimental_unrecoverable_data_corrupting_features = ms-type-async
ms_type = async
ms_async_op_threads = 4
osd_find_best_info_ignore_history_les = true
mon_pg_warn_max_per_osd = 1000
max_open_files = 1000000
throttler_perf_counter = false
debug_lockdep = 0/0
debug_context = 0/0
debug_crush = 0/0
debug_mds = 0/0
debug_mds_balancer = 0/0
debug_mds_locker = 0/0
debug_mds_log = 0/0
debug_mds_log_expire = 0/0
debug_mds_migrator = 0/0
debug_buffer = 0/0
debug_timer = 0/0
debug_filer = 0/0
debug_striper = 0/0
debug_objecter = 0/0
debug_rados = 0/0
debug_rbd = 0/0
debug_rbd_mirror = 0/0
debug_rbd_replay = 0/0
debug_journaler = 0/0
debug_objectcacher = 0/0
debug_client = 0/0
debug_osd = 0/0
debug_optracker = 0/0
debug_objclass = 0/0
debug_filestore = 0/0
debug_journal = 0/0
debug_ms = 0/0
debug_mon = 0/0
debug_monc = 0/0
debug_paxos = 0/0
debug_tp = 0/0
debug_auth = 0/0
debug_crypto = 0/0
debug_finisher = 0/0
debug_heartbeatmap = 0/0
debug_perfcounter = 0/0
debug_rgw = 0/0
debug_civetweb = 0/0
debug_javaclient = 0/0
debug_asok = 0/0
debug_throttle = 0/0
debug_refs = 0/0
debug_xio = 0/0
debug_compressor = 0/0
debug_bluestore = 0/0
debug_bluefs = 0/0
debug_bdev = 0/0
debug_kstore = 0/0
debug_rocksdb = 0/0
debug_leveldb = 0/0
debug_memdb = 0/0
debug_kinetic = 0/0
debug_fuse = 0/0
debug_mgr = 0/0
debug_mgrc = 0/0
debug_dpdk = 0/0
debug_eventtrace = 0/0
osd_pool_default_size = 1
#ms_crc_data = false
#ms_crc_header = false
#ms_async_op_threads = 5
osd_op_num_threads_per_shard = 3
osd_op_num_shards = 6
osd_enable_op_tracker = false
filestore_wbthrottle_enable = false
filestore_queue_max_ops = 10240
filestore_queue_max_bytes = 1024000000
filestore_op_threads = 6
filestore_fd_cache_size = 1024
filestore_fd_cache_shards = 32
filestore_ondisk_finisher_threads = 4
filestore_apply_finisher_threads = 4
rbd cache = false
rbd_enable_alloc_hint = false
rbd_op_threads = 4
rbd_cache_writethrough_until_flush = false
```
## 创建POOL
分配700G,3副本的空间
计算最佳pg数量的公式
= osd数*100/3
```shell
# 400个pg
ceph osd pool create poolname 400 400
# 3副本
ceph osd pool set poolname size 3
# 700G空间,数据共享模式
rbd create poolname/poolname-data --image-shared -s 700000 --stripe-count 24 --stripe-unit 64K
# 挂载
rbd-nbd map poolname/poolname-data
lsb lk
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
# nbd0 43:0 0 683.6G 0 disk
```