ceph提供了对象存储(RADOSGW)、块存储(RBD)和文件存储(Ceph FS)三种功能:
RADOSGW:基于LIBRADOS之上,提供当前流行的RESTful协议的网关,而且兼容S3和Swift接口,做为对象存储,能够对接网盘类应用以及HLS流媒体应用等。
RBD:也基于LIBRADOS之上,经过LIBRBD建立一个块设备,经过QEMU/KVM附加到VM上,做为传统的块设备来用。目前OpenStack、CloudStack等都是采用这种方式来为VM提供块设备,同时也支持快照、COW(Copy On Write)等功能。
Ceph FS: 基于RADOS来实现分布式的文件系统,引入了MDS(Metadata Server),主要为兼容POSIX文件系统提供元数据。通常都是当作文件系统来挂载。node
Ceph 存储集群至少须要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必需要有元数据服务器( Metadata Server )。
Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并经过检查其余OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少须要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你能够调整副本数)。
Monitors: Ceph Monitor维护着展现集群状态的各类图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变动的历史信息(称为 epoch )。
MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,能够在不对 Ceph 存储集群形成负担的前提下,执行诸如 ls、find 等基本命令。linux
RADOS
CRUSH
journal服务器
系统类型:CentOS7.5
cehp版本:mimic网络
主机名 | IP地址 | 角色 | 数据盘 |
---|---|---|---|
ceph-node1 | 172.16.1.31 | mon、osd、deploy | /dev/sdb |
ceph-node2 | 172.16.1.32 | mon、osd | /dev/sdb |
ceph-node3 | 172.16.1.33 | mon、osd | /dev/sdb |
host解析
时间同步
ssh免密登陆,deploy节点须要ssh免密登陆到全部node节点
关闭防火墙
关闭selinuxssh
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@ceph-node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@ceph-node1 ~]# cat << EOF > /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-mimic/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-mimic/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc priority=1 EOF
#在node1安装ceph-deploy工具分布式
[root@ceph-node1 ~]# yum -y install ceph-deploy [root@ceph-node1 ~]# ceph-deploy --version 2.0.1
#配置config文件,指定ssh用户ide
[root@ceph-node1 ~]# cat .ssh/config Host node1 Hostname ceph-node1 User root Host node2 Hostname ceph-node2 User root Host node3 Hostname ceph-node3 User root [root@ceph-node1 ~]# chmod 600 .ssh/config [root@ceph-node1 ~]# systemctl restart sshd
#在三个节点安装ceph[root@ceph-node1 ~]# ceph-deploy install --release mimic ceph-node1 ceph-node2 ceph-node3
#建立目录,用于保存执行ceph-deploy时产生的文件[root@ceph-node1 ~]# mkdir /etc/ceph && cd /etc/ceph
#初始化集群[root@ceph-node1 ceph]# ceph-deploy new ceph-node1 ceph-node2 ceph-node3
#修改配置文件工具
[root@ceph-node1 ceph]# cat ceph.conf [global] fsid = aa6f450a-613a-435d-ace3-4e1a4c8d231a mon_initial_members = ceph-node1, ceph-node2, ceph-node3 mon_host = 172.16.1.31,172.16.1.32,172.16.1.33 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public network = 172.16.1.0/24 #新添加
配置含义:ui
fsid:文件系统id mon_initial_members:监视器主机名 mon_host:监视器IP地址 cephx:表示开启认证 public network:指定public网络,参看ceph网络 #参考:http://docs.ceph.org.cn/rados/configuration/network-config-ref/
#初始化mon[root@ceph-node1 ceph]# ceph-deploy mon create-initial
#拷贝配置文件及admin密钥到各ceph节点[root@ceph-node1 ceph]# ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
#建立ceph管理进程服务[root@ceph-node1 ceph]# ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
#查看集群状态url
[root@ceph-node1 ceph]# ceph -s cluster: id: aa6f450a-613a-435d-ace3-4e1a4c8d231a health: HEALTH_OK services: mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3 osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
#建立osd
#注意:若是磁盘已存在分区须要执行zap命令,删除分区和磁盘内容,而后再执行create。 [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node1 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node2 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node3 /dev/sdb [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node1 [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node2 [root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node3
#再次查看集群状态
[root@ceph-node1 ceph]# ceph -s cluster: id: aa6f450a-613a-435d-ace3-4e1a4c8d231a health: HEALTH_OK services: mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3 osd: 3 osds: 3 up, 3 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 3.0 GiB used, 57 GiB / 60 GiB avail pgs:
#启用dashboard[root@ceph-node1 ceph]# ceph mgr module enable dashboard
#为dashboard生成自签名证书,使用https访问
[root@ceph-node1 ceph]# ceph dashboard create-self-signed-cert Self-signed certificate created
#为dashboard绑定IP和端口
[root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_addr 172.16.1.31 [root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_port 7000
#查看服务
[root@ceph-node1 ceph]# ceph mgr services { "dashboard": "https://172.16.1.31:7000/" }
#更新dashboard帐号密码ceph dashboard set-login-credentials admin admin
#登陆dashboard
若是部署失败,能够执行以下命令清除各节点上的软件及部署时生成的文件。
ceph-deploy purge {ceph-node} ceph-deploy purgedata {ceph-node} ceph-deploy forgetkeys
#检查集群健康情况,正常返回HEALTH_OK ceph health 若是配置文件或密钥不在默认路径,须要指定: ceph -c /path/to/conf -k /path/to/keyring health #检查集群状态,返回集群健康状态、服务状态以及数据状态 ceph status 或者 ceph –s #检查集群的使用状况,返回集群总体使用状况和各个存储池的使用状况 ceph df #检查OSD状态 ceph osd stat 或者 ceph osd dump 或者 ceph osd tree #检查监视器状态 ceph mon stat 或者 ceph mon dump #检查MDS状态 ceph mds stat 或者 ceph mds dump
#列出存储池 ceph osd lspools #建立存储池 ##副本类型 ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects] ##纠删类型(相似于RAID5) ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure [erasure-code-profile] [crush-ruleset-name] [expected_num_objects] ##必需参数: pool-name 池名称 pg-num 存储池拥有的归置组总数 少于 5 个 OSD 时可把 pg_num 设置为 128 OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512 OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096 pgp-num 用于归置的归置组总数,通常等于归置组总数 #设置存储池配额 ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}] #删除存储池 ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it] #重命名存储池 ceph osd pool rename {current-pool-name} {new-pool-name} #查看存储池统计信息 rados df
#罗列用户 ceph auth list #获取用户信息,包括用户密钥、能力(用户的权限) ceph auth get {TYPE.ID} #新增用户 ##直接添加用户并指定能力 ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool' ##经常使用的添加用户并指定能力,会以标准格式返回用户名称和key,若是用户已存在,会直接返回用户名和key ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool' ##在上条命令基础上,将返回保存到文件中 ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring ##添加用户并指定能力,只返回key,-o表示将返回保存到文件 ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key #修改用户能力,ceph auth caps会覆盖当前能力,若是新增能力时注意在命令中加上当前能力 ceph auth caps USERTYPE.USERID {daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]' [{daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]'] #删除用户,其中 {TYPE} 是 client 、 osd 、 mon 或 mds 之一, {ID} 是用户名或守护进程的 ID ceph auth del {TYPE}.{ID} #查看用户密钥 ceph auth print-key {TYPE}.{ID} #导入用户 ceph auth import -i /path/to/keyring
查看更多的命令请参考官方文档:http://docs.ceph.org.cn/rados/operations/