简述

什么是ecph

​ ceph是一个开放、自我修复和自我管理的统一分布式存储系统。具有高扩展性、高新能、高可靠性的优点。

​ ceph分布式存储优势

​ 高扩展性:使用普通X86服务器,支持10~1000台服务器,支持TB到EB级的扩展。

​ 高可靠性:没有单点故障,多数据副本,自动管理,自动修复。

​ 高性能:数据分布均衡

ceph支持三种调用接口: 块存储、文件系统存储、对象存储。三种方式可以一同使用。

ceph的三个主要进程

​ Monitor监控整个集群的状态,维护集群的cluster MAP数据分布图(二进制表),保证集群数据的一致性。

​ OSD用于集群中所有数据与对象的存储,处理集群数据的复制、恢复、回填、在均衡,并向其他osd守护进程发送心跳,然后向Monitor提供监控信息。

​ MDS(可选)为Ceph文件系统提供元数据计算、缓存与同步。MDS进程并不是必须的进程,只有需要使用CephFS时,才需要配置MDS节点。

部署时注意事项

​ ceph生产环境推荐:

​ 1、存储集群采用全万兆网络(条件允许使用光纤网络)

​ 2、集群网络与公共网络分立

​ 3、mon、mds与osd分离部署在不通机器上

​ 4、OSD使用SATA亦可

​ 5、根据容量规划集群

​ 6、志强E5 2620 V3或以上的cpu,64GB或更高内存

​ 7、集群主机分散部署,避免机柜故障(电源、网络)

快速部署

环境

主机名IP角色备注磁盘hosts
ceph001192.168.0.92admin,osd,mon,marsda/60G sdb/20GIP 主机名
ceph002192.168.0.93osd,mdssda/60G sdb/20GIP 主机名
ceph003192.168.0.94osd,mdssda/60G sdb/20GIP 主机名
ceph004192.168.0.95client客户端,访问存储sda/60G sdb/20GIP 主机名

基础环境(全部设置)

设置时间同步

​ 时间服务器的安装与启动

yum -y install chrony
systemctl enable chronyd --now
timedatectl set-ntp true
chronyc -a makestep

关闭selinux和防火墙

​ 所有服务器都需要关闭防火墙,selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
# 修改配置项:SELINUX=disabled,默认:#SELINUX=enforcing
getenforce			# 查看状态

编辑hosts文件

​ 规范系统主机名添加hosts文件时间集群主机名与主机名之间互相能够解析

host文件添加主机名不要使用fqdn方式

​ 设置所有服务器都需要相同hosts文件

# 修改主机名
hostnamectl set-hostname ceph001

# 添加hosts
vim /etc/hosts
192.168.0.92 ceph001
192.168.0.93 ceph002
192.168.0.94 ceph003
192.168.0.95 ceph004

SSH免密登入

​ 在管理节点使用ssh-keygen生成ssh keys发布到各个节点,这里使用主机名

ssh-keygen		# 一直回车就行,不设置密码
ssh-copy-id ceph001		# 传送到hosts文件中的所有主机上,自己也要有
ssh-copy-id ceph002		# 传送到hosts文件中的所有主机上
ssh-copy-id ceph003
ssh-copy-id ceph004		# 004是客户端,不用传也行
# 测试ssh无交互
for i in 001 002 003 004 ; do ssh ceph$i hostname ; done

设置ceph源

​ 在所有节点上执行

cat > /etc/yum.repos.d/ceph.repo <<- 'EOF'
[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=ceph-noarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
EOF

安装epel-release

​ yum所用到的命令(包括客户端也要安装)

yum -y install epel-release yum-plugin-priorities yum-utils ntpdate

在每服务器上部署ceph

​ Ceph官方退出了一个用python写的工具ceph-deploy,可以很大的简化ceph集群的配置过程,建议可以用。

​ 在ceph001、002、003上安装

​ ceph-deploy是ceph集群部署工具。其他软件都是依赖包。

yum -y install ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs yum-plugin-priorities yum-utils ntpdate

部署管理集群(ceph001操作)

​ 管理节点ceph001上部署服务

创建一个新集群

​ 注意:也可以同时在ceph002,003上部署mon,实现高可用,生产环境至少3个mon独立。

在/etc/ceph目录操作,创建一个新集群,并设置ceph001位mon节点

cd /etc/ceph
ceph-deploy new ceph001		# 集群名称是ceph001
# 返回值
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy new ceph001
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0x7f6cd3fa6ed8>
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f6cd392b638>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ceph_deploy.cli][INFO  ]  mon                           : ['ceph001']
[ceph_deploy.cli][INFO  ]  public_network                : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  cluster_network               : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  fsid                          : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
[ceph001][DEBUG ] connected to host: ceph001 
[ceph001][DEBUG ] detect platform information from remote host
[ceph001][DEBUG ] detect machine type
[ceph001][DEBUG ] find the location of an executable
[ceph001][INFO  ] Running command: /usr/sbin/ip link show
[ceph001][INFO  ] Running command: /usr/sbin/ip addr show
[ceph001][DEBUG ] IP addresses found: [u'192.168.0.92']
[ceph_deploy.new][DEBUG ] Resolving host ceph001
[ceph_deploy.new][DEBUG ] Monitor ceph001 at 192.168.0.92
[ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph001']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.0.92']
[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...

​ 执行完毕后,可以看到/etc/ceph目录中生成了三个文件,其中有一个ceph配置文件可以做各种参数优化。(注意,在osd进程生成并挂载使用后,想修改配置需要使用命令行工具,修改配置文件是无效的,所有需要提前规划好优化的参数)一个是监视器秘钥环

编译配置文件

​ 修改osd的副本数量,配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态。

vim /etc/ceph/ceph.conf
[global]
fsid = a1845220-9f8f-4305-9533-a66628ba74a4
mon_initial_members = ceph001
mon_host = 192.168.0.92
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2 			# 最后添加这一行

安装ceph monitor

​ 在ceph001上创建安装

ceph-deploy mon create ceph001
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy mon create ceph001
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : create
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f9794be8128>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  mon                           : ['ceph001']
[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0x7f9794e54500>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  keyrings                      : None
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts ceph001
[ceph_deploy.mon][DEBUG ] detecting platform for host ceph001 ...
[ceph001][DEBUG ] connected to host: ceph001 
[ceph001][DEBUG ] detect platform information from remote host
[ceph001][DEBUG ] detect machine type
[ceph001][DEBUG ] find the location of an executable
[ceph_deploy.mon][INFO  ] distro info: CentOS Linux 7.5.1804 Core
[ceph001][DEBUG ] determining if provided host has same hostname in remote
[ceph001][DEBUG ] get remote short hostname
[ceph001][DEBUG ] deploying mon to ceph001
[ceph001][DEBUG ] get remote short hostname
[ceph001][DEBUG ] remote hostname: ceph001
[ceph001][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph001][DEBUG ] create the mon path if it does not exist
[ceph001][DEBUG ] checking for done path: /var/lib/ceph/mon/ceph-ceph001/done
[ceph001][DEBUG ] done path does not exist: /var/lib/ceph/mon/ceph-ceph001/done
[ceph001][INFO  ] creating keyring file: /var/lib/ceph/tmp/ceph-ceph001.mon.keyring
[ceph001][DEBUG ] create the monitor keyring file
[ceph001][INFO  ] Running command: ceph-mon --cluster ceph --mkfs -i ceph001 --keyring /var/lib/ceph/tmp/ceph-ceph001.mon.keyring --setuser 167 --setgroup 167
[ceph001][INFO  ] unlinking keyring file /var/lib/ceph/tmp/ceph-ceph001.mon.keyring
[ceph001][DEBUG ] create a done file to avoid re-doing the mon deployment
[ceph001][DEBUG ] create the init path if it does not exist
[ceph001][INFO  ] Running command: systemctl enable ceph.target
[ceph001][INFO  ] Running command: systemctl enable ceph-mon@ceph001
[ceph001][WARNIN] Created symlink from /etc/systemd/system/ceph-mon.target.wants/ceph-mon@ceph001.service to /usr/lib/systemd/system/ceph-mon@.service.
[ceph001][INFO  ] Running command: systemctl start ceph-mon@ceph001
[ceph001][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.ceph001.asok mon_status
[ceph001][DEBUG ] ********************************************************************************
[ceph001][DEBUG ] status for monitor: mon.ceph001
[ceph001][DEBUG ] {
[ceph001][DEBUG ]   "election_epoch": 3, 
[ceph001][DEBUG ]   "extra_probe_peers": [], 
[ceph001][DEBUG ]   "feature_map": {
[ceph001][DEBUG ]     "mon": {
[ceph001][DEBUG ]       "group": {
[ceph001][DEBUG ]         "features": "0x3ffddff8eeacfffb", 
[ceph001][DEBUG ]         "num": 1, 
[ceph001][DEBUG ]         "release": "luminous"
[ceph001][DEBUG ]       }
[ceph001][DEBUG ]     }
[ceph001][DEBUG ]   }, 
[ceph001][DEBUG ]   "features": {
[ceph001][DEBUG ]     "quorum_con": "4611087853746454523", 
[ceph001][DEBUG ]     "quorum_mon": [
[ceph001][DEBUG ]       "kraken", 
[ceph001][DEBUG ]       "luminous"
[ceph001][DEBUG ]     ], 
[ceph001][DEBUG ]     "required_con": "153140804152475648", 
[ceph001][DEBUG ]     "required_mon": [
[ceph001][DEBUG ]       "kraken", 
[ceph001][DEBUG ]       "luminous"
[ceph001][DEBUG ]     ]
[ceph001][DEBUG ]   }, 
[ceph001][DEBUG ]   "monmap": {
[ceph001][DEBUG ]     "created": "2023-02-18 15:58:46.883847", 
[ceph001][DEBUG ]     "epoch": 1, 
[ceph001][DEBUG ]     "features": {
[ceph001][DEBUG ]       "optional": [], 
[ceph001][DEBUG ]       "persistent": [
[ceph001][DEBUG ]         "kraken", 
[ceph001][DEBUG ]         "luminous"
[ceph001][DEBUG ]       ]
[ceph001][DEBUG ]     }, 
[ceph001][DEBUG ]     "fsid": "a1845220-9f8f-4305-9533-a66628ba74a4", 
[ceph001][DEBUG ]     "modified": "2023-02-18 15:58:46.883847", 
[ceph001][DEBUG ]     "mons": [
[ceph001][DEBUG ]       {
[ceph001][DEBUG ]         "addr": "192.168.0.92:6789/0", 
[ceph001][DEBUG ]         "name": "ceph001", 
[ceph001][DEBUG ]         "public_addr": "192.168.0.92:6789/0", 		# 在这个服务器上创建了6789端口
[ceph001][DEBUG ]         "rank": 0
[ceph001][DEBUG ]       }
[ceph001][DEBUG ]     ]
[ceph001][DEBUG ]   }, 
[ceph001][DEBUG ]   "name": "ceph001", 
[ceph001][DEBUG ]   "outside_quorum": [], 
[ceph001][DEBUG ]   "quorum": [
[ceph001][DEBUG ]     0
[ceph001][DEBUG ]   ], 
[ceph001][DEBUG ]   "rank": 0, 
[ceph001][DEBUG ]   "state": "leader", 
[ceph001][DEBUG ]   "sync_provider": []
[ceph001][DEBUG ] }
[ceph001][DEBUG ] ********************************************************************************
[ceph001][INFO  ] monitor: mon.ceph001 is running			# running状态
[ceph001][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.ceph001.asok mon_status

收集节点keyrung文件

​ 收集ceph集群的密码文件。在ceph001上执行

ceph-deploy gatherkeys ceph001
# 收集过程
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy gatherkeys ceph001
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f5551351ef0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  mon                           : ['ceph001']
[ceph_deploy.cli][INFO  ]  func                          : <function gatherkeys at 0x7f55515a5aa0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.gatherkeys][INFO  ] Storing keys in temp directory /tmp/tmpRvNiPo
[ceph001][DEBUG ] connected to host: ceph001 
[ceph001][DEBUG ] detect platform information from remote host
[ceph001][DEBUG ] detect machine type
[ceph001][DEBUG ] get remote short hostname
[ceph001][DEBUG ] fetch remote file
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.ceph001.asok mon_status
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get client.admin
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get-or-create client.admin osd allow * mds allow * mon allow * mgr allow *
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get client.bootstrap-mds
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get-or-create client.bootstrap-mds mon allow profile bootstrap-mds
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get client.bootstrap-mgr
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get client.bootstrap-osd
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get-or-create client.bootstrap-osd mon allow profile bootstrap-osd
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get client.bootstrap-rgw
[ceph001][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-ceph001/keyring auth get-or-create client.bootstrap-rgw mon allow profile bootstrap-rgw
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpRvNiPo
ls			# 查看/etc/ceph/目录下的所有文件
ceph.bootstrap-mds.keyring  ceph.bootstrap-mgr.keyring  ceph.bootstrap-osd.keyring  ceph.bootstrap-rgw.keyring  ceph.client.admin.keyring  ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring  rbdmap
cat /etc/ceph/ceph.client.admin.keyring

[client.admin]
        key = AQC3hfBjYnXjFxAAy5Xw+Z2woe+JhbwCt/KOgA==			# 客户端登入ceph的凭证

部署osd服务

​ ceph12版本部署osd格式化命令跟之前不通

​ 添加完硬盘直接使用,不要分区

使用ceph自动分区

​ 在ceph001上执行

​ 用下列命令擦净(删除分区表)磁盘,用于ceph

cd /etc/ceph
ceph-deploy disk zap ceph001 /dev/sdb
ceph-deploy disk zap ceph002 /dev/sdb
ceph-deploy disk zap ceph003 /dev/sdb
添加osd节点

​ 在ceph001上执行

ceph-deploy osd create ceph001 --data /dev/sdb		# 把sdb磁盘添加到osd上
ceph-deploy osd create ceph002 --data /dev/sdb
ceph-deploy osd create ceph003 --data /dev/sdb
查看osd状态
ceph-deploy osd list ceph001 ceph002 ceph003

部署mgr管理服务

​ 目的只有一个,就是管理服务

​ 在管理主机上部署mgr管理服务,也可以同事在ceph002,ceph003上部署mgr,实现高可用。

ceph-deploy mgr create ceph001

统一集群配置

​ 用ceph-deploy把配置文件和admin秘钥拷贝到所有节点,这样每次执行ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了。

ceph-deploy admin ceph001 ceph002 ceph003

​ 各节点修改ceph.client.admin.keying的权限

# ceph001服务器
chmod +r /etc/ceph/ceph.client.admin.keyring
# ceph002服务器
chmod +r /etc/ceph/ceph.client.admin.keyring
# ceph003服务器
chmod +r /etc/ceph/ceph.client.admin.keyring

部署mds服务

​ mds是ceph集群中的元数据服务器,而通常它都不是必须的,应为只有在使用cephfs的时候才需要他,而目前在云计算中用的更广泛的是另外两种存储方式。

​ mds虽然是元数据服务器,但是它不负责存储元数据,元数据也是被切成对象存在各个osd节点中的

​ 在创建ceph fs时,要至少创建两个pool,一个用于存放数据,另一个用于存放元数据。mds只是负责接受用户的元数据查询的请求,然后从osd中吧数据取出来映射进自己的内存中供客户访问。所有mds其实类似一个代理缓存服务器,替osd分担了用户的访问压力

安装mds

​ 在ceph001上执行

ceph-deploy mds create ceph002 ceph003

查看mds服务

ceph mds stat

查看集群状态

ceph -s
# 返回值
cluster:
  id:		f520d78c-e6e3-437d-ac51-217320e17740
  health:	HEALTH_OK			#
  
services:
  mon:	1	daemons, quorum ceph001
  mgr:	ceph001(active)
  osd:	3 osds: 3 up, 3 in		# 三个osd,三个都是up状态
  
data:
  pools:	0 pools, 0 pgs
  objects:	0 objects, 0B
  usage:	3.01GiB used, 2.98GiB / 5.99GiB avail
  pgs:

创建ceph文件系统(ceph001操作)

创建之前查看文件系统

ceph fs ls		# 没有ceph文件系统
# 返回值
No filesystems enabled

创建存储池

ceph osd pool create cephfs_data 128
# 返回值  pool 'cephfs_data' created

ceph osd pool create cephfs_metadata 128
# 返回值  pool 'cephfs_metadata' created
# 命令
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>

​ 注释:其中:<pg_num> = 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取值变得更加重要,因为它显著地影响着几圈的行为、以及出错时的数据持久性(即灾难性时间导致数据丢失的概率)

创建文件系统

​ 创建好存储池后,就可以用fs new命令创建文件系统了

ceph fs new cephfs cephfs_metadata cephfs_data
# 返回值	new fs with metadata pool 2 and data pool 1
# 命令
ceph fs new <fs_name> cephfs_metadata cephfs_data

​ 注释:其中<fs_name> = cephfs 可自定义

​ 给刚才创建的2个存储池创建文件系统

查看文件系统

ceph fs ls
# 返回值	name:cephfs,metadata pool:cephfs_metadata,data pools:[cephfs_data]

查看mds节点状态

ceph mfs stat
# 返回值
cephfs-1/1/1 up {0=ceph003=up:active}, 1 up:standby
# active 是活跃的,另一个是出于热备的状态

挂载ceph文件系统(客户端)

​ 用内核驱动挂载ceph文件系统

​ 要瓜子啊ceph文件系统,如果知道监视器的ip地址可以用mount命令、或者使用mount.ceph工具来自动解析监视器ip地址。

临时可以挂载测试

创建挂载点

mkdir -p /data/aa

使用秘钥挂载

mount -t ceph 192.168.0.92:6789/ /data/aa -o name=admin,secret=AQC3hfBjYnXjFxAAy5Xw+Z2woe+JhbwCt/KOgA==
# 命令
mount -t ceph ceph的IP:6789 要挂载到本机的目录 -o name=用户名,secret=密钥
df -h 		# 可以看到挂载到了/data/aa目录上了

解除挂载

​ 解除挂载的时候是显示目标忙,这样没关系,直接硬解除

# 正常解除挂载
umount /data/aa/			# 正常解除挂载,显示目标忙

# 硬解除挂载
lsof /data/aa/			# 查看那个进程占用了
kill -9 PID				# 结束进程
umonut /data/aa			# 就可以正常解除挂载了

生产挂载方式

​ 使用秘钥文件挂载

​ 使用秘钥文件挂载需要安装ceph-common-12.2.12(就是版本要和管理节点上的版本一致,否则无法使用秘钥文件挂载)会报错

安装ceph-common

yum -y install ceph-common-12.2.12

​ 在ceph001管理端,通过ceph -v查看当前版本

创建秘钥文件

mkdir /etc/ceph		
cat /etc/ceph/admin.secret			# 将管理端的key复制到此文件中
# 返回值 AQC3hfBjYnXjFxAAy5Xw+Z2woe+JhbwCt/KOgA==

​ 注意: admin.secret文件中的秘钥即管理节点上的/etc/ceph/ceph.client.admin.keyring的key对应的值。

挂载

mount -t ceph 192.168.0.92:6789/ /data/aa -o name=admin,secretfile=/etc/ceph/admin.secret		

解除挂载

​ 通过文件进行挂载就不会限制目标忙了,直接正常解除挂载就行

# 正常解除挂载
umount /data/aa/			# 正常解除挂载,显示目标忙

开机自动挂载

安装ceph-fuse

yum -y install ceph-fuse

挂载

# ceph001操作
cd /etc/ceph
scp ceph.client.admin.keyring ceph.conf ceph004:/etc/ceph/

# ceph004操作
ceph-fuse -m 192.168.0.92:6789 /data/aa

修改fstab文件

ceph可视化管理dashboard

ceph-dash简介

​ ceph-dash及其简单,提供类似ceph -s 命令的信息及实时的IO速率等。

下载ceph-dash

​ ceph001操作执行

cd /
git clone https://github.com/Crapworks/ceph-dash.git

安装pthon-pip

yum -y install python-pip

启动ceph-dash

cd /ceph-dash
./ceph-dash.py

# 后台启动
nohup ./ceph-dash.py &

修改端口

​ 默认端口5000

vim /ceph-dash/ceph-dash.py
app.run(host='0.0.0.0',port=8000,debug=True)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐