Ceph 部署的过程

1 集群规划
在本次Ceph集群部署过程中,我们部署的是ceph的最新版本,12.2.0,部署了三个节点sqh0, sqh1, sqh2,其中sqh0为主节点,我们在其上面部署ceph-deploy,为每个节点都部署OSD,把mds节点部署在sqh2,sqh3节点上。
把三个节点的名字修改成对应的节点名。之后分别在三个节点hosts文件中修改ceph集群节点的IP地址和主机名,以此模拟DNS服务器,建立IP地址和主机名之间的一一映射。
vi /etc/hostname
在/etc/hosts文件中添加如下内容


192.168.87.100 sqh0
192.168.87.101 sqh1
192.168.87.102 sqh2


2 管理节点准备
2.1 ceph 账户创建机器免密码登录
1. 创建用户:

[root@localhost ~]# echo "ceph ALL = (root)NOPASSWD:ALL"| tee /etc/sudoers.d/ceph
ceph ALL = (root)NOPASSWD:ALL

2, sudo免密

[root@localhost ~]# sudo chmod 0440 /etc/sudoers.d/ceph

2.2 ssh免密码登录

[root@localhost ~]# ssh-keygen
[root@localhost ~]# ls ./.ssh/
id_rsa  id_rsa.pub
[root@localhost ~]# ssh-copy-id sqh0
[root@localhost ~]# ssh-copy-id sqh1
[root@localhost ~]# ssh-copy-id sqh2
[root@localhost ~]# ls ~/.ssh
authorized_keys  id_rsa  id_rsa.pub  known_hosts

2.3 关闭防火墙
关闭所有节点防火墙

[root@localhost ~]# ssh sqh0 "systemctl stop firewalld.service; systemctl disable firewalld.service"
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost ~]# ssh sqh1 "systemctl stop firewalld.service; systemctl disable firewalld.service"
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
 [root@localhost ~]# ssh sqh2 "systemctl stop firewalld.service; systemctl disable firewalld.service"
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
临时关闭selinux
[root@localhost ~]# ssh sqh0 "setenforce 0"
[root@localhost ~]# ssh sqh1 "setenforce 0"
[root@localhost ~]# ssh sqh2 "setenforce 0"
永久关闭selinux
setenforce 0或者把/etc/selinux/config中的SELINUX改为disabled。

2.4 配置本地repo源
由于无法联网,所以我们需要配置本地repo源。
我在安装的过程中,把ceph的安装包和依赖包分别下载下来,ceph的安装包在Ceph中,依赖包在CephDeps,同时我也把我镜像中的一个包做成了yum源。具体配置yum源的过程可以见我的另外一篇文章。
2.5 配置时间同步
1. 在sqh0节点上安装ntp,在所有节点安装ntpdate

[root@localhost yum.repos.d]# yum -y install ntp ntpdate 

如果仅仅在sqh0配置了yum源,我们就可以通过locate命令把ntpdate包通过scp命令传输到另外的节点,使用rpm –ivh 安装ntpdate工具。
2. 配置本地ntp服务器,我们把sqh0作为服务器,需要修改/etc/ntp.conf文件。

driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1 
restrict ::1
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
includefile /etc/ntp/crypto/pw
disable monitor
server 127.127.1.0
fudge 127.127.1.0 stratum 8
  1. 重启ntp服务

[root@localhost centos]# systemctl restart ntpd
[root@localhost centos]# systemctl status ntpd
4. 定时任务
在作为ntp服务器节点之外的其他节点修改一下文件:/etc/crontab.
30 * * * * root /usr/sbin/ntpdate 192.168.87.100;/sbin/hwclock -w
5, 重启crond服务

[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl status crond
  1. 安装ceph-deploy
[root@sqh0 ~]# yum -y install ceph-deploy
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
                                                                                            2.6 MB/s | 698 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-backports-1.0-8.el7.x86_64                                                                                 

Installed:
  ceph-deploy.noarch 0:1.5.38-0                                                                                                      

Dependency Installed:
  python-backports.x86_64 0:1.0-8.el7                     python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7                 
  python-setuptools.noarch 0:0.9.8-4.el7                 

Complete!

3 部署ceph
3.1
创建集群节点并设置监控节点
我们使用刚在主节点安装的ceph-deploy工具来部署ceph 12.2.0.
首先要创建集群并且设置监控节点。多个监控节点以空格隔开。

[root@sqh0 ~]# ceph-deploy new sqh0 sqh1 sqh2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.38): /usr/bin/ceph-deploy new sqh0 sqh1 sqh2
 [ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.87.110', '192.168.87.111', '192.168.87.112']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...

会在当前目录生成如下三个文件:
[[root@sqh0 ~]# ll
total 16
-rw-r–r– 1 root root 238 Sep 5 13:55 ceph.conf
-rw-r–r– 1 root root 4812 Sep 5 13:55 ceph-deploy-ceph.log
-rw——- 1 root root 73 Sep 5 13:55 ceph.mon.keyring
我们在当前目录下创建一个目录cluster,把这三个文件通过mv命令复制进去。
修改ceph.conf文件,内容如下:
[root@sqh0 cluster]# cat ceph.conf
[global]
fsid = 15c3522f-4f22-4b15-9b57-d953ccfac0c5
mon_initial_members = sqh0, sqh1, sqh2
mon_host = 192.168.87.110,192.168.87.111,192.168.87.112
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
public_network = 192.168.87.110/24
osd_pool_default_size = 2
3.2 安装ceph
由于使用本地源,我们需要指定参数。因为我在下载ceph的rpm包时把ceph的安装包和依赖包分别装在了Ceph文件夹下,和CephDeps中装的是12.2.0的依赖包,因为外网没有一键安装的功能,所以我们使用ceph-deploy部署工具来安装ceph。
在这个过程中,我遇到了许多的问题,依次解释如下,首先正确的安装界面如下:
ceph-deploy install sqh0 sqh1 sqh2 –local-mirror=/opt/repos/Ceph –no-adjust-repos –release=luminous
上述的命令是在sqh0,sqh1,sqh2节点上安装ceph,前提条件是在三个节点上都已经传入了ceph的安装包和依赖包并且配置了yum源,这是前提的工作。

问题1,You must have a tty to run sudo
[sqh0][INFO ] Running command: ceph –version
[sqh0][DEBUG ] ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc)
[ceph_deploy.install][DEBUG ] Detecting platform for host sqh1 …
[sqh1][DEBUG ] connected to host: sqh1
[sqh1][DEBUG ] detect platform information from remote host
[sqh1][DEBUG ] detect machine type
[ceph_deploy.install][INFO ] Distro info: CentOS Linux 7.2.1511 Core
[sqh1][INFO ] installing Ceph on sqh1
sudo: sorry, you must have a tty to run sudo
[ceph_deploy][ERROR ] Traceback (most recent call last):
[ceph_deploy][ERROR ] raise IOError(“cannot send (already closed?)”)
[ceph_deploy][ERROR ] IOError: cannot send (already closed?)
[ceph_deploy][ERROR ]
解决方案:我们可以看到这是ceph-deploy工具在部署ceph到节点sqh1上,出现了这个问题,you must have a tty to run sudo。这是因为在部署安装ceph的过程中,使用了ceph账户,ceph账户部署sqh2,sqh1,需要使用root的权限,我们要修改/etc/sudoers的文件,把其中Defaults requiretty一行注释掉。注意节点sqh2上的该文件也执行相同操作。

问题2,Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again。
解决方案:与问题3一样

问题3,ceph-deploy install sqh01 sqh1 sqh2
[sqh0][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install yum-plugin-priorities
解决方式:可以看到/etc/yum.repos.d目录下多出了四个个文件
[root@sqh0 yum.repos.d]# ll
total 20
-rw-r–r– 1 root root 239 Sep 5 16:09 12_2_0.repo
-rw-r–r– 1 root root 957 Dec 27 2016 epel.repo
-rw-r–r– 1 root root 1056 Dec 27 2016 epel-testing.repo
-rw——-. 1 root root 1675 Sep 5 13:18 y?
-rw-r–r–. 1 root root 391 Sep 5 13:18 y?.pub
这是因为我们在安装ceph的时候,如果不指定位置参数,会默认从网络下载镜像,因而ceph-deploy工具会为我们部署两个repo源,以及另外的两个密钥和公钥,把四个文件删掉,在ceph-deploy安装时指定参数。使用如下的命令
ceph-deploy install sqh0 sqh1 sqh2 –local-mirror=/opt/repos/Ceph –no-adjust-repos –release=luminous

问题4,缺包问题
这个问题是在调用ceph-deploy在节点sqh1上部署ceph的时候提示的,提示找不到包,本来我以为是只需要把ceph的安装包和依赖包只放在主节点sqh0上就行,但这个时候涛哥说ceph的安装包和依赖包必须在三个节点上都有,而且还要为这安装包和依赖包配置yum源。注意:可以不在其他两个节点配置centos的包,因为镜像中的Packages文件夹下游三千多个包,每次上特别花费时间。仅仅在主节点上上传这些包即可。然后把需要的包通过scp传送到其他节点进行安装。
问题5,scp的两个问题
这两个问题的存在是因为个人习惯的原因。
scp createrepo-0.9.9-23.el7.noarch.rpm sqh1:/~
解决方案:虽然使用了该命令,而且也没有报错,但我在sqh1节点的/home节点下找不到该rpm包,之后才明白是/~不是一个有效路径。可以改成scp createrepo-0.9.9-23.el7.noarch.rpm sqh1:/home
scp 12_2_0.repo sqh1:/etc/yum.repos.d/ sqh2:/etc/yum.repos.d
[root@sqh0 yum.repos.d]# scp 12_2_0.repo sqh1:/etc/yum.repos.d/ sqh2:/etc/yum.repos.d
/etc/yum.repos.d: not a regular file
Killed by signal 1.
Connection to sqh1 closed.
这是因为scp命令不支持同时把一个文件传送到多个目录。可以分开执行。
scp 12_2_0.repo sqh1:/etc/yum.repos.d/
scp 12_2_0.repo sqh2:/etc/yum.repos.d
3.3 初始化监控节点
初始化监控节点,这里只初始化主节点sqh0,命令如下
[root@sqh0 cluster]# ceph-deploy mon create-initial
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts sqh0 sqh1 sqh2
[ceph_deploy.gatherkeys][INFO ] Storing ceph.bootstrap-mds.keyring
[ceph_deploy.gatherkeys][INFO ] Storing ceph.bootstrap-rgw.keyring
[ceph_deploy.gatherkeys][INFO ] Destroy temp directory /tmp/tmpOQ7UcY
在当前目录下就会产生五个keyring文件。
[root@sqh0 cluster]# ll
total 60
-rw——- 1 root root 71 Sep 6 06:14 ceph.bootstrap-mds.keyring
-rw——- 1 root root 71 Sep 6 06:14 ceph.bootstrap-mgr.keyring
-rw——- 1 root root 71 Sep 6 06:14 ceph.bootstrap-osd.keyring
-rw——- 1 root root 71 Sep 6 06:14 ceph.bootstrap-rgw.keyring
-rw——- 1 root root 63 Sep 6 06:14 ceph.client.admin.keyring
-rw-r–r– 1 root root 330 Sep 5 14:03 ceph.conf
-rw-r–r– 1 root root 31391 Sep 6 06:14 ceph-deploy-ceph.log
-rw——- 1 root root 73 Sep 5 13:55 ceph.mon.keyring
可以看到,我们在当前目录cluster生成了五个keyring文件。在sqh0,sqh1,sqh2节点上,使用ceph –s查看ceph情况。
[root@sqh1 ~]# ceph -s
2017-09-06 06:25:39.913198 7f08bb259700 -1 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
2017-09-06 06:25:39.913264 7f08bb259700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
2017-09-06 06:25:39.913266 7f08bb259700 0 librados: client.admin initialization error (2) No such file or directory
[errno 2] error connecting to the cluster
解决方案,在主节点sqh0生成的五个keyring文件需要放置在其他两个节点sqh1,sqh2两个节点的/etc/ceph/目录下,不然连接集群时,会出现失败。在主节点也需要把当前目录cluster下生成的五个keyring也传递到/etc/ceph/。

[root@sqh0 cluster]# scp *.keyring sqh1:/etc/ceph/
ceph.bootstrap-mds.keyring 100% 71 0.1KB/s 00:00
ceph.bootstrap-mgr.keyring 100% 71 0.1KB/s 00:00
ceph.bootstrap-osd.keyring 100% 71 0.1KB/s 00:00
ceph.bootstrap-rgw.keyring 100% 71 0.1KB/s 00:00
ceph.client.admin.keyring 100% 63 0.1KB/s 00:00
ceph.mon.keyring 100% 73 0.1KB/s 00:00
在sqh0,sqh1,sqh2节点上,使用ceph –s查看ceph情况。
[root@sqh0 cluster]# ceph -s
cluster:
id: 15c3522f-4f22-4b15-9b57-d953ccfac0c5
health: HEALTH_WARN【这是因为时间同步的问题。】
clock skew detected on mon.sqh1, mon.sqh2

services:
mon: 3 daemons, quorum sqh0,sqh1,sqh2
mgr: no daemons active
osd: 0 osds: 0 up, 0 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 bytes
usage: 0 kB used, 0 kB / 0 kB avail
pgs:
3.4 设置开机自启动
[root@sqh0 cluster]# systemctl enable ceph-mon.target
[root@sqh0 cluster]# systemctl enable ceph-osd.target
[root@sqh0 cluster]# systemctl enable ceph.target
3.5 OSD管理
我们使用添加硬盘的方式来添加OSD,为每个节点增加一块硬盘,
fdisk –l 查找添加的硬盘目录,例如/dev/sdb
fdisk /dev/sdb对添加的硬盘进行分区
注意:此处不需要进行分区操作,在添加硬盘sdb上进行操作。
3.5.1 初始化OSD
ceph-deploy osd prepare {ceph-node}:/dev/device
在执行这个命令之前,我们先要为每个节点增加一块硬盘,之后在每个节点我们执行lsblk命令,查看是否添加成功
[root@sqh0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4G 0 rom
红色部分是我们刚添加的硬盘。
接下来我们在主节点sqh0上分别部署三个节点的OSD。
[root@sqh0 ~]# ceph-deploy osd prepare sqh0:/dev/sdb
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.38): /usr/bin/ceph-deploy osd prepare sqh0:/dev/sdb
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.cli][INFO ] zap_disk : False
[ceph_deploy][ERROR ] ConfigError: Cannot load config: [Errno 2] No such file or directory: ‘ceph.conf’; has ceph-deploy new been run in this directory?解决方案:因为在初始化osd时,我们需要使用集群配置文件ceph.conf,而我们在/root下并没有这个文件,所以我们要首先切换到cluster目录下,因为该目录下游ceph.conf配置文件。
正确执行的执行界面如下:
[root@sqh0 cluster]# ceph-deploy osd prepare sqh0:/dev/sdb
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.38): /usr/bin/ceph-deploy osd prepare sqh0:/dev/sdb
[sqh0][WARNIN] command_check_call: Running command: /usr/sbin/mkfs -t xfs -f -i size=2048 – /dev/sdb1
[sqh0][DEBUG ] = sunit=0 swidth=0 blks
[sqh0][WARNIN] mount: Mounting /dev/sdb1 on /var/lib/ceph/tmp/mnt.nEr54D with options noatime,inode64

[ceph_deploy.osd][DEBUG ] Host sqh0 is now ready for osd use.
这个时候,我们成功的部署了sqh0节点上的OSD,此时我们通过lsblk命令查看硬盘分区结果:
[root@sqh0 cluster]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 100M 0 part /var/lib/ceph/osd/ceph-0
└─sdb2 8:18 0 19.9G 0 part
sr0 11:0 1 4G 0 rom
通过结果我们可以看到,/dev/sdb已经成功的分区了,这就说明ceph-deploy工具能够自动的去分区,而不需要我们先分区,之前我因为先分区,执行
[root@sqh0 cluster]# ceph-deploy osd prepare sqh0:/dev/sdb1
但后面会报诸多错误。请一定要谨慎应对。另外通过执行结果我们也可以看到/var/lib/ceph/osd/ceph-0已经初始化到了/dev/sdb1这个分区上了,下面我们需要命令去激活这个osd就行了。
3.5.2 激活OSD
[root@sqh0 cluster]# ceph-deploy osd activate sqh0:/dev/sdb1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[sqh0][INFO ] Running command: /bin/ceph –cluster=ceph osd stat –format=json
[sqh0][INFO ] Running command: systemctl enable ceph.target
之后,我们依次执行其他两个节点的初始化和激活就可以了。
倘若我们在激活的时候使用了如下的命令,就会报错了。
[root@sqh0 cluster]# ceph-deploy osd prepare sqh1:/dev/sdb
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.38): /usr/bin/ceph-deploy osd prepare sqh1:/dev/sdb
[sqh1][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 /dev/sdb
解决方案:在激活的时候,要使用/var/lib/ceph/osd/ceph-X所对应的设备。通常一块硬盘对应一个OSD的话,此处应该填写/dev/sdb1,而不是/dev/sdb
3.6 部署MDS节点
我们使用命令ceph-deploy mds create sqh0 部署mds,mds一般要部署两个。
[root@sqh0 cluster]# ceph-deploy mds create sqh1 sqh2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.38): /usr/bin/ceph-deploy mds create sqh1 sqh2
[sqh2][INFO ] Running command: ceph –cluster ceph –name client.bootstrap-mds –keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.sqh2 osd allow rwx mds allow mon allow profile mds -o /var/lib/ceph/mds/ceph-sqh2/keyring
[sqh2][INFO ] Running command: systemctl start ceph-mds@sqh2
[sqh2][INFO ] Running command: systemctl enable ceph.target
3.7 部署mgr
ceph12版本之后,就需要为集群部署mgr服务,Ceph-Mgr 在上周已经正式进入了主线,ceph-mgr 作为 Ceph 集群的管理进程,未来会负责整个集群的管理操作和监控。现在的部分 Monitor 功能会迁移到 ceph-mgr 中,使得 Monitor 更专注于集群的数据面控制,降低集群对于 Monitor 的要求。
[root@sqh0 cluster]# ceph-deploy mgr create sqh1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[sqh1][WARNIN] Created symlink from /etc/systemd/system/ceph-mgr.target.wants/[email protected] to /usr/lib/systemd/system/[email protected].
[sqh1][INFO ] Running command: systemctl start ceph-mgr@sqh1
[sqh1][INFO ] Running command: systemctl enable ceph.target
4 Ceph Filesystem
Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据。 Ceph 文件系统与 Ceph 块设备、同时提供 S3 和 Swift API 的 Ceph 对象存储、或者原生库( librados )一样,都使用着相同的 Ceph 存储集群系统。想要使用文件系统,我们就需要创建两个存储池,数据存储池和元数据存储池。
4.1 创建cephfs文件系统
4.1.1 命令
使用默认参数创建两个存储池pool的命令如下:

ceph osd pool create cephfs_data
ceph osd pool create cephfs_metadata
使用fs new 启用文件系统:
ceph fs new
查看集群状态
ceph –s
查看mds状态
ceph mds stat
创建文件系统:
创建data数据分区,元数据分区,和文件系统的过程如下:
[root@sqh0 cluster]# ceph osd pool create cephfs_data 64
pool ‘cephfs_data’ created
[root@sqh0 cluster]# ceph osd pool create cephfs_metadata 64
pool ‘cephfs_metadata’ created
[root@sqh0 cluster]# ceph fs new cephfs cephfs_data cephfs_metadata
new fs with metadata pool 1 and data pool 2
查看mds状态
[root@sqh0 cluster]# ceph mds stat
cephfs-1/1/1 up {0=sqh1=up:active}, 1 up:standby

查看集群状态
[root@sqh0 cluster]# ceph -s
cluster:
id: 15c3522f-4f22-4b15-9b57-d953ccfac0c5
health: HEALTH_WARN
clock skew detected on mon.sqh1, mon.sqh2

services:
mon: 3 daemons, quorum sqh0,sqh1,sqh2
mgr: sqh1(active)
mds: cephfs-1/1/1 up {0=sqh1=up:active}, 1 up:standby
osd: 3 osds: 3 up, 3 in

data:
pools: 2 pools, 128 pgs
objects: 21 objects, 2246 bytes
usage: 3168 MB used, 57968 MB / 61136 MB avail
pgs: 128 active+clean
4.2 fuse方式挂载文件系统
ceph-fuse -m sqh0:6789 /home/ceph/cephfs
或者
ceph-fuse –m 192.168.87.100:6789 /home/ceph/cephfs
我们使用了工具ceph-fuse,如果当前系统无法识别这个命令,我们就要使用yum进行安装这个rpm包
yum –y install ceph-fuse
另外,我们把文件系统挂载到一个目录,那么这个目录要不含内容,最好是新创建的空目录。挂载到这个目录,我们就可以切换到这个目录下,该目录相当于你进入ceph文件系统的门户,进入了这个目录,你便进入了ceph所提供的文件系统了。
[root@sqh0 /]# ceph-fuse -m sqh0:6789 /home/ceph/
.bash_logout .bash_profile .bashrc cephfs/
[root@sqh0 /]# ceph-fuse -m sqh0:6789 /home/ceph/cephfs/
ceph-fuse[7194]: starting ceph client
2017-09-06 08:01:19.777190 7f998a0cd040 -1 init, newargv = 0x7f9994f9ee40 newargc=9
ceph-fuse[7194]: starting fuse
问题:
[root@sqh0 /]# ceph-fuse -m sqh0:6789 /home/ceph/cephfs/
ceph-fuse[7194]: starting ceph client
2017-09-06 08:01:19.777190 7f998a0cd040 -1 init, newargv = 0x7f9994f9ee40 newargc=9
在这个时候长时间等待,进程死掉,解决过程如下:
[root@sqh0 cluster]# ceph -s
cluster:
id: 15c3522f-4f22-4b15-9b57-d953ccfac0c5
health: HEALTH_WARN
clock skew detected on mon.sqh1, mon.sqh2

services:
mon: 3 daemons, quorum sqh0,sqh1,sqh2
mgr: sqh1(active)
mds:cephfs-0/0/1 up,这项是这个,但应该是如下的红色,此项的含义是mds没有正常的工作,连up,in的都没有。
mds: cephfs-1/1/1 up {0=sqh1=up:active}, 1 up:standby
osd: 3 osds: 3 up, 3 in

data:
pools: 2 pools, 128 pgs
objects: 21 objects, 2246 bytes
usage: 3168 MB used, 57968 MB / 61136 MB avail
pgs: 128 active+clean
元数据服务器为CEPF FS提供元数据服务。元数据服务器有两套状态: up | down and active |inactive.。为了确保您的元数据服务器是 up and active,执行以下命令:
ceph mds stat
要显示的元数据集群的详细信息,请执行以下命令:
ceph mds dump
因为我在sqh1和sqh2节点上部署的mds服务,所以我们通过如下命令查看节点1上的服务
systemctl status [email protected]
我们发现该节点的状态是lodaed,但是是inactive(dead)而且提示了错误
mds.sqh1 unable to obtain rotating service keys; retring
mds.sqh1 unable to obtain rotating service keys; retring
mds.sqh1 unable to obtain rotating service keys; retring
mds.sqh1 unable to obtain rotating service keys; retring
组里的人帮忙说这是因为节点之间的时间差距太大才会报这个问题,我首先是通过date –s “Wed Sep 6 10:06:46 EDT 2017”发送给全部会话的方式同步时间,然后再部署了mds服务的sqh1和sqh2执行了一下命令,手动拉起mds服务:
在sqh1 systemctl start [email protected]
在sqh2 systemctl start [email protected]
通过一下命令确定mds进程已经处于运行状态:
ps aux | grep ceph-mds。
这样执行之后,ceph mds stat 的结果就成了
cephfs-1/1/1 up {0=sqh2=up:active} 1 up:standby
之后我们通过ceph-fuse就能很方便的解决这个问题。

ceph-fuse 是 Ceph 分布式文件系统的 FUSE (用户空间文件系统)客户端,它会把 Ceph 文件系统(用 -m 选项或 ceph.conf 指定)挂载到指定挂载点。
文件系统可以这样卸载:
fusermount -u mountpoint
或者
umount mountpoint
总结
在挂载的过程中,我遇到了一些问题,其中有一些问题觉得在此有必要说一下:
1, 就是在安装ceph的时候,我碰到了下面的命令:
ceph-deploy install sqh0 sqh1 sqh2 –local-mirror=/opt/repos/Ceph –no-adjust-repos –release=luminous
当时我一看不懂,第一反应就去问组里的人,应该怎么设置这些参数,这就不是一个很健康的思维过程。而我事后反省这个过程,当时我应该这样做,或者下次遇到问题时我应该这么做。
1, ceph-deploy install 这个命令的含义是什么?我可以百度
2, ceph-deploy install 这个命令的参数是什么,应该怎么设置,像

你可能感兴趣的:(Ceph)