Ceph中文开源社区地址:http://ceph.org.cn/
Ceph官方文档:http://docs.ceph.org.cn/
ceph理论性的东西这里我就不说了,有兴趣的同学可以去看官方文档,我这就直接上实验过程了~
机器准备
HostName | IP | 功能 |
---|---|---|
Ceph1 | 10.15.5.246 | admin,osd,mon |
Ceph2 | 10.15.5.247 | osd,mds |
Ceph3 | 10.15.5.248 | osd,mds |
Ceph4 | 10.15.5.249 | client |
环境准备
- 创建虚拟机时多添加一块100G 的硬盘,容量不够的可以少一点;
- 修改主机名:Ceph{1…4};
- 关闭防火墙:systemctl stop/disable firewalld;
- 关闭selinux。
添加/etc/hosts
vim /etc/hosts
10.15.5.246 Ceph1
10.15.5.247 Ceph2
10.15.5.248 Ceph3
10.15.5.249 Ceph4
免密互信
# 每台上面操作
ssh-keygen -t rsa
# 互相增加(在Ceph1上+2/3/4 ,以此类推,直到所有可以直接通过主机名ssh)
ssh-copy-id Ceph{2..4}
格式化硬盘,创建osd目录并且挂载
我在创建虚拟机的时候添加了两块硬盘,/dev/sda 以及/dev/sdb,系统安装在/dev/sda上。
## Ceph1上操作
mkfs.xfs /dev/sdb
mkdir /var/local/osd{0..2}
mount /dev/sdb /var/local/osd0/
## Ceph2上操作
mkfs.xfs /dev/sdb
mkdir /var/local/osd{0..2}
mount /dev/sdb /var/local/osd1/
## Ceph3上操作
mkfs.xfs /dev/sdb
mkdir /var/local/osd{0..2}
mount /dev/sdb /var/local/osd2/
PS:以上操作为临时挂载,永久挂载需要写入 /etc/fstab
安装ntp,完成时间同步
时间需要完全统一,不然会有问题,最好是职级内网搭建一个时间同步服务~
# 所有节点执行
yum install ntp
ntpdate ntp1.aliyun.com
基本准备工作就到这了~下面开始部署
安装ceph-deploy 管理工具
配置yum源
我这里用的阿里的源
# 基础软件源
cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
# Ceph源
[root@Ceph1 ~]# cat /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
# 再安装一个epel源
yum install -y epel-release
yum clean all
yum makecache
安装ceph-deploy 以及开始配置
yum install -y ceph-deploy
创建Monitor服务
mkdir /etc/ceph
cd /etc/ceph
ceph-deploy new Ceph1
## 执行完成后会在当前路径生成以下三个文件,分别为ceph的配置文件、日志文件以及monitor的密钥环文件
内容有点长,我分两次截图了
如果想要修改守护进程数,也就是副本数,可以在ceph.conf配置文件中添加如下内容
osd_pool_default_size = 2 #副本数量
在所有主机上安装ceph
ceph-deploy install Ceph1 Ceph2 Ceph3 Ceph4
# 该命令直接走的官网下载,如果网速慢的可以换成通过阿里源yum下载
yum -y install ceph ceph-radosgw
大概需要几分钟,内容有点多,分三次截图
在管理节点安装Monitor(监控)
# 创建Monitor (监控)
ceph-deploy mon create Ceph1
# 收集keyring(密钥环)信息
ceph-deploy gatherkeys Ceph1
创建OSD
在准备过程中已经完成了osd目录的创建以及挂载,这里直接创建osd节点
ceph-deploy osd prepare Ceph1:/var/local/osd0/ Ceph2:/var/local/osd1/ Ceph3:/var/local/osd2/
ls /var/local/osd0/
ceph_fsid fsid magic
# 完成后在各节点对应目录可看到对应文件
激活OSD
ceph-deploy osd activate Ceph1:/var/local/osd0/ Ceph2:/var/local/osd1/ Ceph3:/var/local/osd2/
# 这时会有一个报错,报错信息如下:
[Ceph1][WARNIN] 2020-10-22 17:01:52.548400 7f6ef1edbac0 -1 ** ERROR: error creating empty object store in /var/local/osd0/: (13) Permission denied
[Ceph1][WARNIN]
[Ceph1][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-disk -v activate --mark-init systemd --mount /var/local/osd0/
解决方法:给三个节点的/var/local/osd{0…2}三个文件夹添加777权限即可。
继续执行,无报错
查看OSD
ceph-deploy osd list Ceph1 Ceph2 Ceph3
同步配置文件以及密钥
使用命令将配置文件和admin密钥同步到各个节点,以便各个节点使用ceph命令时无需指定Monitor地址和ceph.client.admin.keyring密钥。注意:还需要修改各个节点ceph.client.admin.keyring密钥的权限
ceph-deploy admin Ceph1 Ceph2 Ceph3
chmod +r ceph.client.admin.keyring ## 都执行一下
查看OSD健康状态
ceph health
部署mds
ceph-deploy mds create Ceph1 Ceph2 Ceph3
ceph mds stat
部分截图
查看集群状态
ceph -s
创建ceph文件系统
# 查看文件系统
ceph fs ls
创建存储池
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
PS:命令最后的128是指定pg_num的值,这个值是不能自动计算的,需要手动赋予。一般来说,少于5个osd时,pg_num可以设置为128;osd在5到10个之间,pg_num可以设置为512;osd在10到50个之间,pg_num可以设置为4096;但是osd一旦超过50个,那么就得自己计算pg_num的取值,也可以借助工具pgcalc计算,网址是https://ceph.com/pgcalc/。
随着osd数量的增加,正确的pg_num取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。
创建文件系统
ceph fs new 128 cephfs_metadata cephfs_data
查看节点状态
ceph mds stat
常用命令
ceph osd pool get [存储池名称] size //查看存储池副本数
ceph osd pool set [存储池名称] size 3 //修改存储池副本数
ceph osd lspools //打印存储池列表
ceph osd pool create [存储池名称] [pg_num的取值] //创建存储池
ceph osd pool rename [旧的存储池名称] [新的存储池名称] //存储池重命名
ceph osd pool get [存储池名称] pg_num //查看存储池的pg_num
ceph osd pool get [存储池名称] pgp_num //查看存储池的pgp_num
ceph osd pool set [存储池名称] pg_num [pg_num的取值] //修改存储池的pg_num值
ceph osd pool set [存储池名称] pgp_num [pgp_num的取值] //修改存储池的pgp_num值
查看存储池配额
ceph osd pool get-quota cephfs_metadata
客户端挂载
方式一
# 创建挂载点
mkdir /ceph
# 获取存储密钥,没有的话重新去manager节点拷贝
[root@Ceph3 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBXN5Ffe3KNEhAA1vvvpkw9eedD8zF5CmoP4A==
# 将key所在行内容保存到/etc/ceph/admin.secret 文件中
[root@Ceph4 ~]# cat /etc/ceph/admin.secret
AQBXN5Ffe3KNEhAA1vvvpkw9eedD8zF5CmoP4A==
# 挂载
mount -t ceph 10.15.5.246:6789:/ /ceph/ -o name=admin,secretfile=/etc/ceph/admin.secret
df -h
方式二(用户控件挂载ceph文件系统)
# 下载cecph-fuse
yum install -y ceph-fuse
# 挂载
ceph-fuse -m 10.15.5.246:6789 /ceph-2/
# 卸载
fusermount -u /ceph-2
Others
怎么卸载~
停止所有进程: stop ceph-all
卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]
删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]
删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
删除key:ceph-deploy forgetkeys
卸载ceph-deploy管理:yum -y remove ceph-deploy