不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 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 等基本命令。

    操作系统:Fedora release 27 (Twenty Seven)

预检

  1. 关闭防火墙:systemctl stop firewalld
  2. 安装ntp
  3. 关闭SELINUX
  4. 创建ceph用户:但不要用 “ceph” 这个名字。全集群统一的用户名可简化操作(非必需),然而你应该避免使用知名用户名,因为黑客们会用它做暴力破解(如 root 、 admin 、 {productname} )
  5. 新用户赋予sudo权限
  6. ssh互信配置

安装 CEPH 部署工具

把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy 。
红帽包管理工具(RPM)

  1. 使用centos下面命令:
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

报错如下:

ceph部署到云服务器_守护进程


命令中加入–skip-broken

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck <font color=red>--skip-broken</font> -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

ceph部署到云服务器_配置文件_02


命令中加入–best --allowerasing:

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck --skip-broken --best --allowerasing -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

ceph部署到云服务器_分布式存储_03


导入时,将RPM-GPG-KEY-EPEL-7改为RPM-GPG-KEY-27-fedora

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck --skip-broken --best --allowerasing -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-27-fedora && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

ceph部署到云服务器_分布式存储_04


ceph部署到云服务器_配置文件_05


直接使用–allowerasing的结果:

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck --allowerasing -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

ceph部署到云服务器_守护进程_06


2. 把软件包源加入软件仓库。用文本编辑器创建一个 YUM (Yellowdog Updater, Modified) 库文件,其路径为 /etc/yum.repos.d/ceph.repo 。例如:

sudo vim /etc/yum.repos.d/ceph.repo

把如下内容粘帖进去,用 Ceph 的最新主稳定版名字替换 {ceph-stable-release} (如 firefly ),用你的Linux发行版名字替换 {distro} (如 el6 为 CentOS 6 、 el7 为 CentOS 7 、 rhel6 为 Red Hat 6.5 、 rhel7 为 Red Hat 7 、 fc19 是 Fedora 19 、 fc20 是 Fedora 20 )。最后保存到 /etc/yum.repos.d/ceph.repo 文件中。

[ceph-noarch]
name=Ceph noarch packages
#baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
baseurl=http://download.ceph.com/rpm-luminous/fc27/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
  1. 更新软件库并安装 ceph-deploy :
sudo yum update && sudo yum install ceph-deploy

Note
你也可以从欧洲镜像 eu.ceph.com 下载软件包,只需把 http://ceph.com/ 替换成 http://eu.ceph.com/ 即可。

存储集群快速入门

第一次练习时,我们创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程。一旦集群达到 active + clean 状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors。为获得最佳体验,先在管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对。

mkdir my-cluster
cd my-cluster

ceph-deploy 会把文件输出到当前目录,所以请确保在此目录下执行 ceph-deploy 。
Important 如果你是用另一普通用户登录的,不要用 sudo 或在 root 身份运行 ceph-deploy ,因为它不会在远程主机上调用所需的 sudo 命令。
禁用 requiretty
在某些发行版(如 CentOS )上,执行 ceph-deploy 命令时,如果你的 Ceph 节点默认设置了 requiretty 那就会遇到报错。可以这样禁用此功能:执行 sudo visudo ,找到 Defaults requiretty 选项,把它改为 Defaults:ceph !requiretty ,这样 ceph-deploy 就能用 ceph 用户登录并使用 sudo了。

创建集群

如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:

ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
rm ceph.*

用下列命令可以连 Ceph 安装包一起清除:

ceph-deploy purge {ceph-node} [{ceph-node}]

如果执行了 purge ,你必须重新安装 Ceph 。

在管理节点上, 进入刚创建的放置配置文件的目录,用 ceph-deploy 执行如下步骤。

  1. 创建集群
ceph-deploy new {initial-monitor-node(s)}

开始部署新集群,并写好配置文件和密钥环。它会尝试把管理节点上的 SSH 密钥复制到监视器节点以获得无密码访问权限,验证主机 IP ,新建一或多个监视器节点以组成监视器法定人数,生成新 Ceph 集群所需的配置文件、监视器密钥环和日志文件。然后把新建的集群 fsid 、主机名和初始监视器成员的 IP 地址组装成 Ceph 配置文件。
例如:

ceph-deploy new node1    (建议奇数)
  1. 把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:
osd pool default size = 2
  1. 安装ceph软件包安装ceph软件包

INSTALL
在远程主机上安装 Ceph 软件包。首先,它会用无密码 ssh 和 sudo 在管理节点和其它节点上安装 yum-plugin-priorities ,这样来自上流软件库的 Ceph 软件包就可获得较高优先级。之后,它会探测这些主机的平台和发行版,并且,在软件库准备充分时安装兼容此发行版的软件包。加 –release 选项后它会安装最新版。在安装前的平台和发行版探测中,如果发现 distro.init 是 sysvinit (如 Fedora 、 CentOS/RHEL 等),那么安装时就不能定制集群名,且自动采用默认名 ceph 。

如果用户用 –repo-url 选项显式地指定了软件库 URL 作为软件源,那么它会覆盖探测结果,并从定制软件库安装 Ceph 软件包。若有必要,也会检测并安装有效的定制存储池。从定制软件库安装时,需输入一个布尔值确定所需逻辑,然后才能继续定制软件库的安装。它所用的定制软件库安装辅助程序会查验配置、下载软件库(及其它附加软件库)并安装它。 cd_conf 是 argparse 构建的对象,它所存储的标识和信息决定了会用到配置里的哪些元数据。

用户也可以用 --repo 选项做到只装软件库,而不装 Ceph 及其依赖软件包。
用法:

ceph-deploy install [HOST][HOST...]

这里的 [HOST] 是将被安装 Ceph 软件的主机节点。

–release 选项可用于指定安装的版本,参数为 CODENAME ,默认为 firefly 。

此命令支持的其它选项: --testing 、 --dev 、 --adjust-repos 、 --no-adjust-repos 、 --repo 、 --local-mirror 、 --repo-url 和 --gpg-url 。
例如:

ceph-deploy install admin-node node1 node2 node3

ceph-deploy 将在各节点安装 Ceph 。 注:如果你执行过 ceph-deploy purge ,你必须重新执行这一步来安装 Ceph 。