CentOS 7使用ceph-deploy(1.5.37)部署快速ceph(10.2.6)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BeanJoy/article/details/66974808
说明:主要是参考http://docs.ceph.org.cn/start/这个快速安装步骤来进行的,当然也参考了很多网上的其他教程。由于对Linux系统的不熟悉,很多时间都是花在研究Linux命令上。

1 准备环境:
IP hostname 操作系统 磁盘空间 安装模块
172.16.131.180 admin-node CentOS 7.2 50G ceph-deploy,ceph-client
172.16.131.181 node1 CentOS 7.2 50G mon1,osd1,mds,radosgw
172.16.131.182 node2 CentOS 7.2 50G osd0,mon2
172.16.131.183 node3 CentOS 7.2 50G osd1,mon3
说明:
a 磁带空间尽量大一点,用VMware安装时不用立即分配所有磁带空间,如果磁盘不够再扩容就麻烦了。前段时间尝试编译ceph,编译完后好像占用了100G,扩容都扩了2次,用ceph-deploy部署不会占那么多空间,但磁盘大一点没坏处。
b 我使用的是两台物理机上的VMware各安装2台CentOS虚拟机,这4台要互相能访问,所有网络连接均使用桥接网络。
1.1 安装CentOS 7
安装ISO:CentOS-7-x86_64-DVD-1511.iso,大小:4,329,570,304 字节,MD5:C875B0F1DABDA14F00A3E261D241F63E。
SOFTWARE SELECTION选择GNOME Desktop,默认为Minimal Install,这里选其他也可以,不过安装带界面的有些操作方便些。
INSTALLATION DESTINATION没有要求,参考网上进行配置,或者自动配置。
修改root密码,为了后面方便操作和演示,设置为root,由于密码太弱了,需要点两次Done才能完成。
然后等待安装完成,安装完成后自动重启,依次输入1,2,q,yes来完成安装。
只先安装一台虚拟机,把需要统一配置的都配置好,然后用VMware克隆功能克隆出其他三台。
使用命令cat /etc/centos-releasecat /etc/redhat-release查看操作系统版本为“CentOS Linux release 7.2.1511 (Core)”,使用命令uname -r查看内核发行版本为“3.10.0-327.el7.x86_64”。

1.2 统一配置
a 设置静态IP:分别使用以下命令修改配置和重启网络服务以及查看IP等。IP配置好后,就可以用xshell等工具ssh登录到虚拟机进行操作。
sudo vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
sudo systemctl restart network
ip addrifconfig
ping www.baidu.com
b 安装红帽包管理工具(RPM)和包管理器优先级包:分别执行以下命令进行安装。yum安装会从网上下载rpm包,有可能会下载超时,若超时可以多执行几次。安装完成后,同样的,也可以多执行几次命令,直到所有安装项提示“Nothing to do”,确保所有安装项成功安装。
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*
sudo yum install yum-plugin-priorities
说明:执行时如果报错“Another app is currently holding the yum lock; waiting for it to exit...”,执行sudo rm -f /var/run/yum.pid命令解决,后面的部署步骤用yum来安装程序时可能会报这个错,用同样的方法解决。
c 安装NTP:使用以下命令安装NTP,安装NTP的目的是同步时间,否则每个节点时间若不同步,ceph的状态可能出现HEALTH_WARN,而不是HEALTH_OK。注意,安装过程需要输入y进行确认,也可以加上-y参数自动安装。因为不熟悉Linux,所以我选择不自动安装,先观察观察命令窗口都输出了什么,然后再安装。
sudo yum install ntp ntpdate ntp-doc
d 增加ceph用户:使用以下命令增加用户、修改密码和赋予sudo权限,创建的用户名为test,密码为Test123。官网说的是"ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。",所以提前创建好用户test,并以test部署ceph。
sudo useradd -d /home/test -m test
sudo passwd test
echo "test ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/test
sudo chmod 0440 /etc/sudoers.d/test
e 确保联通性:修改hosts文件,支持主机名解析(这里我截的是xshell里的图)。
sudo vim /etc/hosts
f 关闭防火墙并且禁止开机启动:
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
g 禁用requiretty:用以下命令编辑/etc/sudoers配置文件,找到“Defaults requiretty”,修改为“#Defaults requiretty”注释掉,然后保存退出。
sudo visudo
h 关闭SELINUX:用以下命令打开配置文件,将“SELINUX=enforcing”修改为“SELINUX=disabled”(或者用命令行sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config设置),重启生效。或者用命令sudo setenforce 0临时关闭,用命令sestatus -v可查看SELINUX状态。
sudo vim /etc/selinux/config

1.3 克隆虚拟机并单独设置
a 配置IP和hostname:1.2的配置都做好后,就可以克隆出另外3台虚拟机。一共4台虚拟机,然后按照1.准备环境的说明进行单独配置,主要配置IP和hostname,使用以下命令修改hostname和查看hostname。由于1.2中配置了固定IP,所以可能需要进入到虚拟机里配置IP和hostname。
建议本地主机修改C:\Windows\System32\drivers\etc\hosts文件,方便操作,不用每次都输IP。
hostnamectl set-hostname node2
hostname
b 允许无密码 SSH 登录:在admin-node机器上登录test用户,然后输入ssh-keygen生成SSH密钥对,要求输入的地方直接回车即可。然后用以下命令将公钥拷贝到其他机器。然后可以使用ssh test@node1命令测试能否无密码登录到node1机器。
ssh-copy-id test@node1
ssh-copy-id test@node2
ssh-copy-id test@node3
然后sudo vim ~/.ssh/config修改config文件,内容如下。这样可以直接使用命令ssh node1登录到node1机器,而不用指定用户名,对于scp也有效。这样ceph-deploy就能用所建的用户名登录ceph节点,而无需每次执行ceph-deploy都要指定--username {username}。
Host node1
Hostname node1
User test
Host node2
Hostname node2
User test
Host node3
Hostname node3
User test
c 配置ntp同步时间:有两种方式,一种是使用sudo ntpdate -u cn.pool.ntp.org手动同步的方式,可以将命令写到/etc/rc.d/rc.local里实现系统启动自动同步,同时编辑/etc/crontab文件,添加计划任务,实现循环同步的功能,但是注意开启crontab服务,默认是没开启的。另一种方式,是开启ntpd服务,让ntpd服务去同步。这里,我选择第二种方式。
ntp在1.2中就已经统一安装了,但是每台机器都需要允许开机自启和启动ntpd服务,分别执行命令sudo systemctl enable ntpdsudo systemctl start ntpd来完成。可用命令systemctl is-enabled ntpdsystemctl status ntpd来查询是否允许自启和运行状态,注意后一个命令输出中也有是否允许自启的状态。
这里我配置node1作为ntp同步时钟服务器,同时node1同步网络时间,其他机器作为客户端来同步node1的时钟。另外,其他机器也选用与node1相同的网络时钟服务器作为备选同步服务器,这样,当node1宕机后,其他机器也能继续与网络时钟保持同步。
在node1机器上用命令sudo vim /etc/ntp.conf编辑ntp.conf文件,主要修改内容如下,红框里的为修改的内容,然后用命令sudo systemctl restart ntpd重启ntpd。
其他机器同样的修改ntp.conf文件,主要修改内容如下,然后用命令sudo systemctl restart ntpd重启ntpd。可使用命令ntpq -pntpstat查看同步结果,或者用命令watch ntpq -p查看实时结果。
说明:
a 在使用ntpdate手动同步时间时,如果报错“ntpdate[12568]: the NTP socket is in use, exiting”,是因为ntpd服务正在运行,可用命令sudo systemctl stop ntpd停止ntpd服务,再次手动同步即可。如果需要,可用命令sudo systemctl disable ntpd禁止开机启动。
b 使用ntpstat命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。
c 当server与client之间的时间误差过大时(可能是1000秒),处于对修改时间可能对系统和应用带来不可预知的问题,ntp将停止时间同步!所以如果发现ntp启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!
d ntp服务默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加SYNC_HWCLOCK=yes,就可以让硬件时间与系统时间一起同步。也可以通过sudo hwclock -w命令来手动同步BIOS和系统时间。

2 安装ceph-deploy
admin-node机器上执行sudo vim /etc/yum.repos.d/ceph.repo创建一个软件包源,内容如下:
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
baseurl的具体路径可打开http://download.ceph.com/查看,根据日期选择需要的版本。http://download.ceph.com/rpm-jewel/el7/noarch为目前最新的一个版本。
然后在admin-node机器上用语句sudo yum update && sudo yum install ceph-deploy更新软件库和安装ceph-deploy。
安装完成后,执行ceph-deploy --version命令查看ceph-deploy的版本,我这里是“1.5.37”。至此,ceph-deploy完装完成。
说明:
a 要更新所有的软件库,我这里显示一共要更新666MB,1277个包,所以要等很久才能完成。
b 如果下载rpm包因为超时失败(如下图),可能是因为网络环境原因或者网站原因,可以多试几次或者根据官网的说法,换一个镜像服务器重新安装。

3 安装ceph
下面开始为各个节点安装ceph,注意,每个节点默认都是用test用户登录的。
a 在admin-node执行mkdir ~/my-clustercd ~/my-cluster,创建my-cluster目录并进入。
b 创建集群:执行语句ceph-deploy new node1,在当前目录下用 ls 和 cat 检查 ceph-deploy 的输出,应该有一个 ceph 配置文件、一个 monitor 密钥环和一个日志文件。node1作为初始的monitor记录在ceph.conf文件中。
c 修改ceph.conf文件:添加以下内容。mon_clock_drift_allowed是mon之间允许的最大时差,默认为0.05s,如果时差大于了这个值,ceph状态会显示HEALTH_WARN,这里修改到1s。
osd pool default size = 2
public network = 172.16.131.0/24
mon_clock_drift_allowed = 1
d 安装ceph:执行语句ceph-deploy install admin-node node1 node2 node3为4台机器安装上ceph。
在admin-node安装时会报如下错误,因为在安装ceph-deploy时手动创建了ceph.repo文件,安装ceph时,因为ceph.repo文件存在了,创建ceph软件包源时,指定保存的名字为/etc/yum.repos.d/ceph.repo.rpmnew,导致安装时找不到ceph节点。用命令sudo rm /etc/yum.repos.d/ceph.repo删除重试即可。仔细看看这两个文件,其实/etc/yum.repos.d/ceph.repo.rpmnew的内容已经包含了/etc/yum.repos.d/ceph.repo的内容。
安装过程中,下载rpm包又超时了(如下图),我测试这么多次,每次都必超时失败。但是在主机外面又能成功下载rpm包,不知道到底是什么原因。而且这里重新安装也不行,因为要执行命令sudo yum clean all清除缓存,重新安装还是要失败。
我用的是配置本地源的方法来解决,手动下载yum安装时下载超时的rpm包,然后放到/home/test/ceph-cache,修改/etc/yum.repos.d/ceph.repo中[Ceph]节点下的baseurl=file:///home/test/ceph-cache,然后再重新安装。安装过程中提示找不到什么,就手动下载什么,然后放到/home/test/ceph-cache目录。CentOS之间拷贝目录可用命令scp -r root@admin-node:/home/test/ceph-cache/ root@node1:/home/test/ceph-cache/来进行。
下载的网络路径为http://download.ceph.com/rpm-jewel/el7/x86_64/,最终需要的文件如下,共18个文件。都是10.2.6版本的,如果有更新的版本,ceph-deploy安装时应该会使用新版本,那么可以先下载下列文件对应的更新版本。
ceph-cache
│ ceph-10.2.6-0.el7.x86_64.rpm
│ ceph-base-10.2.6-0.el7.x86_64.rpm
│ ceph-common-10.2.6-0.el7.x86_64.rpm
│ ceph-mds-10.2.6-0.el7.x86_64.rpm
│ ceph-mon-10.2.6-0.el7.x86_64.rpm
│ ceph-osd-10.2.6-0.el7.x86_64.rpm
│ ceph-radosgw-10.2.6-0.el7.x86_64.rpm
│ ceph-selinux-10.2.6-0.el7.x86_64.rpm
│ libcephfs1-10.2.6-0.el7.x86_64.rpm
│ librados2-10.2.6-0.el7.x86_64.rpm
│ libradosstriper1-10.2.6-0.el7.x86_64.rpm
│ librbd1-10.2.6-0.el7.x86_64.rpm
│ librgw2-10.2.6-0.el7.x86_64.rpm
│ python-cephfs-10.2.6-0.el7.x86_64.rpm
│ python-rados-10.2.6-0.el7.x86_64.rpm
│ python-rbd-10.2.6-0.el7.x86_64.rpm
└─repodata
26a6a287b786be782c72a4d73deebe1c9099459469a581ca8365b7efe8b1afa6-primary.sqlite.bz2
repomd.xml
按照官网的说法,可以使用镜像服务器来安装,把ceph.repo包中的http://download.ceph.com/替换为http://eu.ceph.com/,但是我尝试了多次,依然安装失败。还是得配置本地源才行,一路畅通,很顺利的安装完成。其他方法,比如配置yum代理,或者CentOS操作系统代理上网的方式来解决,都可以研究一下。
安装完成后,执行ceph -v查看ceph的版本,我这边输出的是“ceph version 10.2.6 (656b5b63ed7c43bd014bcafd81b001959d5f089f)”。
等4台CentOS 7都安装好ceph后,准备工作就全部完成,下面就该正式部署ceph集群了。

4 部署ceph
注意,在admin-node上部署ceph时,是以test用户登录的,并且位于~/my-cluster下。
a 配置初始 monitor(s)、并收集所有密钥:在admin-node上执行ceph-deploy mon create-initial,操作完成后,会生成以下4个密钥文件和如下的输出,如图中所示,node1对应的monitor服务名为ceph-mon@node1,并且允许开机启动,之后要操作monitor服务就可以使用此服务名。如果新建其他monitor,服务名需将node1改为对应的机器名。
此时在node1机器的/etc/ceph/目录下生成了ceph.client.admin.keyringceph.conf文件,但是注意ceph.client.admin.keyring权限不足,后续ceph操作无法正常进行,会报错“auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory”、“ERROR: missing keyring, cannot use cephx for authentication”、“initialization error (2) No such file or directory”。因此需在node1机器上执行sudo chmod +r /etc/ceph/ceph.client.admin.keyring修改权限,注意了,ceph-deploy的后续操作可能会再次在各个节点重新生成此文件,当报相应的错时,记得用此命令在各个节点修改权限。
ceph.bootstrap-mds.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-rgw.keyring
ceph.client.admin.keyring
b 添加osd:在node2和node3上新建两个目录用于osd,用以下命令来新建,注意要赋予权限给新建的目录,否则后续操作会报错。
ssh node2
sudo mkdir /var/local/osd0
sudo chmod 777 /var/local/osd0/
exit
ssh node3
sudo mkdir /var/local/osd1
sudo chmod 777 /var/local/osd1/
exit
然后执行以下语句来准备和激活osd。
ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1
ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
以下是node2添加的输出,注意服务名是ceph-osd@0,而node3的osd服务名为ceph-osd@1,其他osd的服务名为osd的id号。可用命令ceph osd tree查看osd所在机器名和id。这里要注意与monitor服务名中@后的区别,monitor服务名中@后为机器名,而osd服务名中@后为id,因为一台机器只有部署一个monitor,而一台机器可以部署多个osd,下面我会进行演示。
c 拷贝配置文件和admin密钥:用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 ceph 节点,这样每次执行 ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 。还要记得修改admin密钥的的权限,不然执行ceph操作都要报错。
ceph-deploy admin admin-node node1 node2 node3
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
d 检查集群的健康状况用命令ceph -s检查状态,如下显示HEALTH_OK即为OK。如果显示HEALTH_WARN,则有可能是时间没同步,参考上面配置ntp的步骤进行同步再观察。
d 进程和服务:用命令ps -ef | grep cephps aux | grep ceph可查看各个节点运行的ceph进程,如下图。注意命令行后面都带有id参数。然后用语句systemctl is-enabled ceph-mon@node1分别查看各个进程服务是否自启,记得这三个节点分别是monitor、osd0和ods1,服务名分别是ceph-mon@node1ceph-osd@0ceph-osd@1。若没有自启,可用语句sudo systemctl enable ceph-mon@node1来开启自启。
node1

node2

node3
然后重启所有机器,观察重启后,ceph相关的服务和进程是否有自启,ceph的状态是否正常。我这里测试重启后,osd的服务都没有自动启动,也没有相关进程,用systemctl is-enabled ceph-osd@0发现是disabled,然后用sudo systemctl enable ceph-osd@0开启自启,再次重启,一切OK。
至此,ceph的快速部署基本完成,下面可以开始一些简单操作。

5 ceph简单操作
以上搭建了个简单的ceph环境,这个步骤就来实际操作和验证下,主要还是根据网方文档来进行。
5.1 扩展集群(扩容)
现在ceph只有一个monnitor,在node1上节点上。下面将在在 node1 上添加一个 OSD 守护进程和一个元数据服务器。然后分别在 node2 和 node3 上添加 Ceph Monitor ,以形成 Monitors 的法定人数。
注意依然以test用户登录admin-node来操作,然后定位到~/my-cluster/目录。
a 添加osd:依次执行以下命令,在node1机器创建osd目录并且赋予权限。
ssh node1
sudo mkdir /var/local/osd2
sudo chmod 777 /var/local/osd2/
exit
然后执行以下命令准备和激活新添加的osd。注意观察输出,如下,此osd的服务就是ceph-osd@2。此时,可以再用ceph -s观察下ceph状态是不是为HEALTH_OK,然后再重启node1观察此osd服务是有自启,若没有,按照以上步骤进行修改,此处不再赘述。
ceph-deploy osd prepare node1:/var/local/osd2
ceph-deploy osd activate node1:/var/local/osd2
b 添加元数据服务器:在node1上添加一个元数据服务器,语句如下,观察服务名为ceph-mds@node1。然后看看此服务有没有启动,会不会自启,之后添加的服务都都可以测试一下,后面也就不再赘述。
ceph-deploy mds create node1
c 添加RADOS Gateway网关:还是在node1上添加,语句如下,注意服务名为ceph-radosgw@rgw.node1,默认端口号为7480,后面还会有部署将其修改为其他端口。
ceph-deploy rgw create node1
d 添加 MONITORS在node2和node3上分别添加一个monitor,语句如下。此处官网的语句为ceph-deploy mon add node2 node3,但要报错,只能逐一添加。添加后的monitor服务名分别为ceph-mon@node2ceph-mon2node2。可以用语句ceph quorum_status --format json-pretty查询法定人数状态。注意,执行以下语句后,ceph-deploy又要把/etc/ceph/ceph.client.admin.keyring拷贝到node2和node3,此文件又没有权限了,所以又得用sudo chmod +r /etc/ceph/ceph.client.admin.keyring来赋予权限。
ceph-deploy mon add node2
ceph-deploy mon add node3
node2

node3
至此,各个节点该添加的服务都已经添加完成。
5.2 存入/检出对象数据
a 创建存储池:用语句ceph osd pool create data 8创建名为data的存储池。
b 创建对象:用以下语句,先创建一个名为testfile.txt的文件,然后将此文件存储到data里,对象名为test-object-1。
echo {Test-data} > testfile.txt
rados put test-object-1 testfile.txt --pool=data
c 查询对象位置以及检出对象:用语句osd map data test-object-1可以查询对象的位置,用语句rados -p data ls可以列出存储data下所有的对象。
然后用语句rm testfile.txt删除testfile.txt,再用语句ll确认文件确实被删除,然后用语句rados get test-object-1 testfile.txt --pool=data可以检出对象,再用ll确认文件被检出了,再配合cat命令可查看文件内容。
d 删除对象:用命令rados rm test-object-1 --pool=data可删除对象。
5.3 块设备
现在我们在admin-node上挂一个块设备来测试一下,这样admin-node也算是ceph-client。注意,ceph-client也是要装ceph的,也需要/etc/ceph/ceph.client.admin.keyring。但是admin-node之前已经装了ceph,这里就可以不用再装ceph,如果是新安装的CentOS,则需要安装ceph。
a 用以下语句创建一个块设备 image 、把 image 映射为块设备、然后创建文件系统。注意,官网创建的块设备语句然后进行映射在此版本会报错,具体解释可看看http://www.itnpc.com/news/web/146518034576588.html。然用命令sudo fdisk /dev/rbd0 -l可看到此块设备的详细信息,如下图。
rbd create foo --size 4096 --image-format 2 --image-feature layering
rbd map foo --name client.admin
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
b 挂载:分别执行以下语句进行挂载,然后用sudo rz上传了一个文件,再用df -h查看挂载的详细信息,截图如下。
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
然后可用sudo umount /mnt/ceph-block-device/命令将挂载的目录卸载,注意,卸载前要先退出此目录,否则会报错“umount: /mnt/ceph-block-device: target is busy.”。
说明:如果客户端需要重启,需要将挂载目录先卸载,重启之后再重新挂载,否则系统在重启的过程中会被卡在"Umounting file system"这个操作上。
5.4 文件系统
我们已经于5.1的b步骤中在node1上添加了元数据服务器,此处就可以不再添加了。
a 创建存储池和文件系统:用以下语句创建名存储池和名为cephfs的文件系统。
ceph osd pool create cephfs_data 8
ceph osd pool create cephfs_metadata 8
ceph fs new cephfs cephfs_metadata cephfs_data
b 创建密钥文件:将ceph.client.admin.keyring里的[client.admin]节点下的key后面的值复制出来,粘贴到新文件admin.secret中,步骤如下图。
c 以内核驱动的方式挂载:挂载语句如下。同样的,可以上传一个文件测试一下,如下图。然后使用sudo umount /mnt/mycephfs/来卸载。注意,卸载前要先退出此目录,否则会报错“umount: /mnt/mycephfs: target is busy.”。
mkdir /mnt/mycephfs
sudo mount -t ceph node1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
d 用户空间文件系统( FUSE )需要使用ceph-fuse来挂载,挂载前要先用语句sudo yum install -y ceph-fuse安装ceph-fuse。注意,安装前,要先修改/etc/yum.repos.d/ceph.repo中[Ceph]节点下的baseurl=http://download.ceph.com/rpm-jewel/el7/x86_64/,因为前面使用本地源的方法安装的ceph,而本地没有ceph-fuse的rpm。或者将相应的ceph-fuse的rpm包下载下来,放到/home/test/ceph-cache也是可以的。
然后使用以下语句进行挂载,同样的测试上传一个文件,再用df -h查看挂载详细信息。然后同样可用sudo umount /home/test/mycephfs/命令卸载。官网说的用命令fusermount -u /home/test/mycephfs来卸载,但是要报错“fusermount: entry for /home/test/mycephfs not found in /etc/mtab”,原因未知。
sudo mkdir ~/mycephfs
sudo ceph-fuse -k ./ceph.client.admin.keyring -m node1:6789 ~/mycephfs
5.5 对象网关
5.1的c步骤中已经在node1上添加了一个对象网关。默认端口为7480,可以用浏览器打开http://node1:7480/,可以看到输出一个XML。
现在试着把7480改为80端口。
/etc/ceph/ceph.conf文件里添加如下内容,然后用语句sudo systemctl restart ceph-radosgw@rgw.node1重启rgw服务。注意,官网使用的是语句sudo systemctl restart ceph-radosgw.service来重启,但是报错,服务名应该是ceph-radosgw@rgw.node1,翻回去看看5.1的c步骤就知道了。
[client.rgw.node1]
rgw_frontends = "civetweb port=80"
现在就可以用http://node1/这访问rgw。

6 服务名
在这里列出所有的服务名,方便对服务进行操作。
模块\机器名 node1 node2 node3
monitor ceph-mon@node1 ceph-mon@node2 ceph-mon@node3
osd ceph-osd@2 ceph-osd@0 ceph-osd@1
mds ceph-mds@node1 N/A N/A
radosgw ceph-radosgw@rgw.node1 N/A N/A

7 ceph状态查询
ceph的实际简单操作就算完成了,这一步用命令来查询ceph状态,主要是备注下。
ceph -s:查看ceph状态
ceph -w:持续监控ceph信息
ceph health detail:ceph状态的详细信息
ceph osd stat:osd信息
ceph osd tree --format=json-pretty显示osd详细信息(id、状态、以及所有主机)
ceph osd crush tree:显示osd crush信息
ceph quorum_status --format json-pretty:monitor法定人数状态
ceph mon stat:monitor状态
ceph mds stat:mds状态
ceph fs ls:fs列表
ceph osd pool ls / ceph osd lspools:存储池列表
rados -p data ls:存储池中对象列表
展开阅读全文

使用 ceph-deploy 部署集群

05-10

<p>n <span style="color:#24292E;"><span style="color:#333333;">Ceph是一个<span style="color:#0070C0;">可靠的、数据自动重均衡、自动恢复的SDS</span>(软件定义存储)分布式存储系统,功能主要有三大块:<span style="color:#0070C0;">块存储</span>、<span style="color:#0070C0;">对象存储</span>、<span style="color:#0070C0;">文件系统</span>。</span></span>n</p>n<p>n <br /></p>n<p>n <span style="color:#333333;">Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且<span style="color:#0070C0;">随着规模的扩大性能并不会受到影响</span>。</span>n</p>n<p>n <span style="color:#24292E;"><br /></span>n</p>n<p>n <span style="color:#24292E;">不管是私有云还是公有云,随着云架构的发展,</span><span>Ceph </span><span style="color:#24292E;">成为了</span><span>OpenStack</span><span style="color:#24292E;">、</span><span>Proxmox</span><span style="color:#24292E;">标配的后端存储,不光如此,就连目前最火的容器编排</span><span> </span><span style="color:#0070C0;"><span>Kubernetes </span><span>持久存储</span></span><span style="color:#24292E;">也都支持</span><span> Ceph </span><span style="color:#24292E;">,让</span><span> Ceph </span><span style="color:#24292E;">成为当前主流的存储系统,而对</span><span> Ceph </span><span style="color:#24292E;">存储的学习也就变的刻不容缓。</span>n</p>n<p>n  n</p>n<p>n 该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:n</p>n<p>n  n</p>n<p>n <strong>1.<span style="font-size:9px;">     </span>架构的介绍</strong>n</p>n<p>n <strong>2.<span style="font-size:9px;">     </span>集群的多种部署方式</strong>n</p>n<p>n <strong>3.<span style="font-size:9px;">     </span>块存储部署,客户端使用及快照、克隆和镜像</strong>n</p>n<p>n <strong>4.<span style="font-size:9px;">     </span>对象存储的部署及简单使用</strong>n</p>n<p>n <strong>5.<span style="font-size:9px;">     </span>Ceph FS 文件系统的部署、客户端使用及导出为NFS</strong>n</p>n<p>n <strong>6.<span style="font-size:9px;">     </span>集群的操作和管理,包括服务,集群扩展,缩减和集群维护</strong>n</p>n<p>n <strong>7.<span style="font-size:9px;">     </span>Ceph 基础知识的介绍,包括集群map,PG和身份验证</strong>n</p>n<p>n <strong>8.<span style="font-size:9px;">     </span>Ceph 集群的监控</strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <strong><img src="https://img-bss.csdn.net/201905100226073434.png" alt="" /><br /></strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <strong><img src="https://img-bss.csdn.net/201905100226266034.png" alt="" /><br /></strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <strong><br /></strong>n</p>

没有更多推荐了,返回首页