简述
什么是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 |
---|---|---|---|---|---|
ceph001 | 192.168.0.92 | admin,osd,mon,mar | sda/60G sdb/20G | IP 主机名 | |
ceph002 | 192.168.0.93 | osd,mds | sda/60G sdb/20G | IP 主机名 | |
ceph003 | 192.168.0.94 | osd,mds | sda/60G sdb/20G | IP 主机名 | |
ceph004 | 192.168.0.95 | client | 客户端,访问存储 | sda/60G sdb/20G | IP 主机名 |
基础环境(全部设置)
设置时间同步
时间服务器的安装与启动
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)