Centos7安装ceph集群

Centos7安装ceph集群

ceph的特点及介绍

高性能
  • 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。

  • 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。

  • 能够支持上千个存储节点的规模,支持TB到PB级的数据。

高可用性
  • 副本数可以灵活控制。

  • 支持故障域分隔,数据强一致性。

  • 多种故障场景自动进行修复自愈。

  • 没有单点故障,自动管理。

高可扩展性
  • 去中心化。

  • 扩展灵活。

  • 随着节点增加而线性增长。

特性丰富
  • 支持自定义接口,支持多种语言驱动。
  • 支持三种存储接口:块存储、文件存储、对象存储。

Ceph是一个高性能、可扩容的分布式存储系统,它提供三大功能:
对象存储(RADOSGW):提供RESTful接口,也提供多种编程语言绑定。兼容S3、Swift;
对象存储(RADOSGW):也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL 和其他扩展,代表主要有 Swift 、S3 以及 Gluster 等;
块存储(RDB):由RBD提供,可以直接作为磁盘挂载,内置了容灾机制;
块存储(RDB):这种接口通常以 QEMU Driver 或者 Kernel Module 的方式存在,这种接口需要实现 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,青云的云硬盘和阿里云的盘古系统,还有 Ceph 的 RBD(RBD是Ceph面向块存储的接口)。在常见的存储中 DAS、SAN 提供的也是块存储;
文件系统(CephFS):提供POSIX兼容的网络文件系统CephFS,专注于高性能、大容量存储;
文件系统(CephFS):通常意义是支持 POSIX 接口,它跟传统的文件系统如 Ext4 是一个类型的,但区别在于分布式存储提供了并行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向文件存储的接口),但是有时候又会把 GlusterFS ,HDFS 这种非POSIX接口的类文件存储接口归入此类。当然 NFS、NAS也是属于文件系统存储;

Ceph介绍及原理架构分享

部署

环境(本文采取的是centos7.5)

client外其它每台准备一个空闲磁盘
admin节点可与本文的node1整合在一台上

ip主机名角色
10.125.7.54adminceph-deploy
10.125.7.28clientceph-client
10.125.7.65node1mon / osd / mgr
10.125.7.81node2osd
10.125.7.68node3osd

Client客户端:负责存储协议的接入,节点负载均衡
MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map。
OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。
admin管理节点:即安装ceph-deploy的节点(此节点可与本文的node1整合在一台上)

1、准备工作
1.1、修改主机名(每台分别执行)
hostnamectl set-hostname admin
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname client

1.2、配置hosts(每台执行)
vim /etc/hosts
10.125.7.54 admin
10.125.7.28 client
10.125.7.65 node1
10.125.7.81 node2
10.125.7.68 node3
1.3、创建用户组(每台执行)
groupadd ceph
useradd ceph -g ceph
passwd ceph
1.4、ceph用户添加sudo权限(每台执行)
vim /etc/sudoers
ceph    ALL=(ALL)       NOPASSWD:ALL
注释:Defaults   !visiblepw
1.5、关闭防火墙及selinux(每台机器上执行)
systemctl disable firewalld && systemctl stop firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
1.6、免密码登录(admin节点执行)
su - ceph
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@node3
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@client
//添加~/.ssh/config配置文件
vim .ssh/config
Host node1
Hostname node1
User ceph
Host node2
Hostname node2
User ceph
Host node3
Hostname node3
User ceph
1.7、时间同步(每台机器上执行)
yum -y install chrony
//修改配置文件/etc/chrony.conf
echo allow >> /etc/chrony.conf //admin执行,允许所有网段同步时间
echo server admin iburst >> /etc/chrony.conf //除admin都执行,获取admin时间并同步
systemctl enable chronyd  //开启时间同步
systemctl restart chronyd  //重启
1.8、配置yum源(admin节点)
vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
//更新yum源,安装ceph-deploy
yum makecache
yum install ceph-deploy python-setuptools -y
ceph-deploy --version

若python3x版本可能报错:Traceback (most recent call last):
File “/usr/bin/ceph-deploy”, line 18, in
from ceph_deploy.cli import main
ModuleNotFoundError: No module named ‘ceph_deploy’
解决办法:需要导入ceph-deploy模块
/opt/app/python3/bin/pip3 install ceph-deploy

2、安装ceph集群
2.1、创建ceph操作目录(admin节点ceph用户执行)
su - ceph
mkdir my-cluster
cd my-cluster
//创建集群
ceph-deploy new node1
//注:若安装ceph后遇到麻烦可以使用以下命令进行清除包和配置:
// 删除安装包
$ ceph-deploy purge admin-node node1 node2 node3
// 清除配置
$ ceph-deploy purgedata admin-node node1 node2 node3
$ ceph-deploy forgetkeys
2.2、安装luminous(admin节点ceph用户执行)
ceph-deploy install --release luminous node1 node2 node3
//安装ceph
ssh ceph@node1 //之后的步骤均可以在node1节点上直接执行,截止至第二大步完成
sudo yum install -y epel-release ceph ceph-radosgw
//确认安装版本
]$ ceph --version
2.3、初始化mon
ceph-deploy mon create-initial
2.4、赋予各个节点使用命令免用户名权限:
ceph-deploy admin node1 node2 node3
2.5、安装ceph-mgr:
ceph-deploy mgr create node1
2.6、添加osd:
ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3
//需要说明的是该/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
ssh node1 lsblk -f
//最后通过如下命令查看集群状态:
ssh node1 sudo ceph -s
ssh node1 sudo ceph osd df
//如果显示health_ok,3个osd up就成功了
3、Dashboard的配置:
3.1、创建管理域秘钥:(node1节点执行)
sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
3.2、开启 ceph-mgr 管理域:(node1节点执行)
sudo ceph-mgr -i node1
3.3、查看ceph的状态:(node1节点执行)
sudo ceph status
3.4、打开dashboard模块:(node1节点执行)
sudo ceph mgr module enable dashboard
3.5、绑定开启dashboard模块的ceph-mgr节点的ip地址:(node1节点执行)
sudo ceph config-key set mgr/dashboard/node1/server_addr 10.125.7.65
3.6、web登录

浏览器访问http://10.125.7.65:7000/

3.7、创建存储池rbd(node1节点执行)
sudo ceph osd pool create rbd 128 128
//获取现有的PG数和PGP数值(扩展)
sudo ceph osd pool get rbd pg_num
sudo ceph osd pool get rbd pgp_num
//修改存储池的PG和PGP数量(扩展)
ceph osd pool set rbd pg_num 512
ceph osd pool set rbd pgp_num 512

![PG_PGP][1]

ceph集群中的PG总数:
PG总数 = (OSD总数 * 100) / 最大副本数
结果必须舍入到最接近的2的N次方幂的值。
一般情况下:
5个以下的osd节点的PG数量建议为128
5-10个osd节点的PG数量建议为512
10-50个osd节点的PG数量建议为1024
ceph集群中每个pool中的PG总数:
存储池PG总数 = (OSD总数 * 100 / 最大副本数) / 池数
PGP是为了实现定位而设置的PG,它的值应该和PG的总数(即pg_num)保持一致。对于Ceph的一个pool而言,如果增加pg_num,还应该调整pgp_num为同样的值,这样集群才可以开始再平衡。
参数pg_num定义了PG的数量,PG映射至OSD。当任意pool的PG数增加时,PG依然保持和源OSD的映射。直至目前,Ceph还未开始再平衡。此时,增加pgp_num的值,PG才开始从源OSD迁移至其他的OSD,正式开始再平衡

3.8、初始化存储池rbd:(node1节点执行)
sudo rbd pool init rbd
4、部署ceph客户端
4.2、配置yum源(client节点执行)

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

[ceph]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-deploy]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
4.3、安装epel仓库(client节点执行)
yum install epel-release -y
4.4、安装ceph(client节点执行)
yum -y install --release luminous ceph
//验证ceph版本
ceph -v
4.5、创建ceph块客户端用户名和认证密钥(node1节点执行)
ceph auth get client.admin //验证
4.6、将密钥文件和配置文件拷贝到客户端(node1节点执行)
Chmod +x /etc/ceph/ceph.client.admin.keyring
scp /etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.conf root@:10.125.7.28/etc/ceph

这里使用的admin的用户所以将admin的秘钥拷贝至客户端,生产环境中尽量使用普通用户秘钥,因为admin权限太大可能会删除其他pool下的块设备,可以使用以下命令设置对pool等的读写执行权限,然后将keyring和配置文件拷贝至客户端
ceph auth get-or-create client.rbd mon ‘allow r’ osd ‘allow class-read object_prefix rbd_children, allow rwx pool=rbd’ | tee ./etc/ceph/ceph.client.rbd.keyring

4.7、在客户端上验证ceph(client节点执行)
ceph df
ceph -s
ceph osd lspools //查看ceph池
4.8、客户端创建块设备(client节点执行)
//在rbd上创建一个RBD镜像,默认是M,不指名存储池默认在rbd存储池上创建。rbd create {poolname}/{imagename} --image-format 1 --size  {megabytes}
rbd create rbd/client.test --image-format 1 --size 8G
rbd info rbd/client.test //验证
//列出块设备及删除块设备:
rbd list
//查看已挂载块设备
rbd showmapped
//删除块设备:rbd rm {poolname}/{imagename}.如下:
rbd rm rbd/client.test
rbd: error: image still has watchers    //若删除报错
rbd status image.test    //解决办法
ceph osd blacklist add 10.125.7.28:0/363532294    //加入黑名单
rbd rm image.test    //再删除

![创建块设备][2]

4.9、将映像映射为块设备(client节点执行)
rbd map rbd/client.test
4.10、查看块映射map和创建文件系统(client节点执行)
rbd showmapped
rbd unmap /dev/rbd0  //卸载块设备命令
4.11、格式化磁盘,则使用/dev/rbd0创建文件系统(client节点执行)
mkfs.ext4 /dev/rbd0

![格式化磁盘][3]

4.12、创建目录挂载块设备(client节点执行)
mkdir /opt/app
mount /dev/rbd0 /opt/app/
df -h /opt/app/
块设备在线扩容(扩展)
rbd resize rbd/client.test --size 8G
resize2fs /dev/rbd0

![块设备在线扩容][4]

4.13、写入数据测试(client节点执行)
dd if=/dev/zero of=/opt/app/file1 count=100 bs=1M

![写入数据测试][5]

4.14、重启osd,mon(client节点执行)
//查看osd及mon状态
systemctl status ceph-osd.target
systemctl status ceph-mon.target
//重启
systemctl restart ceph-osd.target
systemctl restart ceph-mon.target
4.15、osd扩容

参考上面osd部署过程,将新服务器部署ceph并在admin节点可以无密码登录,在admin节点使用ceph-deploy osd create --data /dev/sdb node4 即可实现osd扩容

4.16、image快照与pool快照

image快照与pool快照是互斥的,创建了image的存储池无法创建存储池的快照,因为存储池当前已经为unmanaged snaps mode了,而没有创建image的就可以做存储池快照。而如果创建了pool快照则无法创建image快照。
image快照的创建命令形如:rbd snap create {pool-name}/{image-name}@{snap-name}回滚命令形如:rbd snap rollback {pool-name}/{image-name}@{snap-name}

本集群验证测试(client节点执行)

//测试写入数据:
dd if=/dev/zero of=/opt/app/test_file1 count=100 bs=1M
//rbd保存快照:
rbd snap create rbd/client.test@client.test_snap1
rbd snap ls rbd/client.test
//删除数据:
rm -f /opt/app/test_file1
//卸载rbd:
umount /dev/rbd0
rbd unmap /dev/rbd0
//快照回滚:
rbd snap rollback rbd/client.test@client.test_snap1
//重新挂载:
rbd map rbd/client.test
mount /dev/rbd0 /opt/app/

![测试数据写入及保存快照][6]

![CMPP包进行卸载rbd设备并恢复快照解码][7]

![验证数据恢复][8]

ceph常用命令集合

查看状态命令:
查看ceph集群状态:ceph -s
查看mon状态:ceph mon stat
查看msd状态:ceph msd stat
查看osd状态:ceph osd stat
查看osd目录树(可以查看每个osd挂在哪台机,是否已启动):ceph osd tree
  
启动ceph进程命令:
需要在对应的节点进行启动(如果对应节点没有该服务,会进行提示)
启动mon进程:service ceph start mon
启动msd进程:service ceph start msd
启动osd进程:service ceph start osd
  
查看机器的监控状态
# ceph health
  
查看ceph的实时运行状态
# ceph -w
  
检查信息状态信息
# ceph -s
  
查看ceph存储空间
[root@client ~]# ceph df
  
删除一个节点的所有的ceph数据包
# ceph-deploy purge ceph-node1
# ceph-deploy purgedata ceph-node1
  
为ceph创建一个admin用户并为admin用户创建一个密钥,把密钥保存到/etc/ceph目录下:
# ceph auth get-or-create client.admin mds 'allow' osd 'allow ' mon 'allow ' > /etc/ceph/ceph.client.admin.keyring# ceph auth get-or-create client.admin mds 'allow' osd 'allow ' mon 'allow ' -o /etc/ceph/ceph.client.admin.keyring
  
为osd创建一个用户并创建一个key
# ceph auth get-or-create osd mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph/keyring
  
为mds创建一个用户并创建一个key
# ceph auth get-or-create mds mon 'allow rwx' osd 'allow ' mds 'allow ' -o /var/lib/ceph/mds/ceph-ceph-node1/keyring
  
查看ceph集群中的认证用户及相关的key
ceph auth list
  
删除集群中的一个认证用户
ceph auth del osd.0
  
查看集群的详细配置
# ceph daemon mon config show | more
  
查看集群健康状态细节
# ceph health detail
  
查看ceph log日志所在的目录
# ceph-conf –name mon.node1 –show-config-value log_file
  
=================关于mon节点的相关操作命令====================
查看mon的状态信息
# ceph mon stat
  
查看mon的选举状态
# ceph quorum_status
  
查看mon的映射信息
# ceph mon dump
  
删除一个mon节点
# ceph mon remove node1
  
获得一个正在运行的mon map,并保存在1.txt文件中
# ceph mon getmap -o 1.txt
  
查看上面获得的map
# monmaptool --print 1.txt
  
map注入新加入的节点(如新节点主机名为ceph-node4)
# ceph-mon -i ceph-node4 --inject-monmap 1.txt
  
查看mon的amin socket
# ceph-conf --name mon.ceph-node1 --show-config-value admin_socket
  
查看mon的详细状态(ceph-node1为mon节点主机名)
# ceph daemon mon.ceph-node1 mon_status
  
删除一个mon节点
# ceph mon remove
  
=================msd节点相关操作命令====================
查看msd状态
# ceph mds stat
  
查看msd的映射信息
# ceph mds dump
  
删除一个mds节点
# ceph mds rm 0 mds  
=================osd节点相关操作命令====================
查看ceph osd运行状态
# ceph osd stat
  
查看osd映射信息
# ceph osd dump
  
查看osd的目录树
# ceph osd tree
  
down掉一个osd硬盘(比如down掉osd.0节点磁盘)
# ceph osd down 
  
在集群中删除一个osd硬盘
# ceph osd rm 0
  
在集群中删除一个osd 硬盘 crush map
# ceph osd crush rm osd
  
在集群中删除一个osd的host节点
# ceph osd crush rm node1
  
查看最大osd的个数(默认最大是4个osd节点)
# ceph osd getmaxosd
  
设置最大的osd的个数(当扩大osd节点的时候必须扩大这个值)
# ceph osd setmaxosd 10
  
设置osd crush的权重为1.0
ceph osd crush set {id} {weight} [{loc1} [{loc2} ...]]
例如:
[root@ceph-node1 ~]# ceph osd crush set 3 3.0 host=ceph-node4
set item id 3 name 'osd.3' weight 3 at location {host=node4} to crush map
[root@ceph-node1 ~]# ceph osd tree
# id weight type name up/down reweight
-1 6 root default
-2 1 host ceph-node1
0 1 osd.0 up 1
-3 1 host ceph-node2
1 1 osd.1 up 1
-4 1 host ceph-node3
2 1 osd.2 up 1
-5 3 host ceph-node4
3 3 osd.3 up 0.5
  
或者用下面的方式
[root@ceph-node1 ~]# ceph osd crush reweight osd.3 1.0
reweighted item id 3 name 'osd.3' to 1 in crush map
[root@ceph-node1 ~]# ceph osd tree
# id weight type name up/down reweight
-1 4 root default
-2 1 host node1
0 1 osd.0 up 1
-3 1 host node2
1 1 osd.1 up 1
-4 1 host node3
2 1 osd.2 up 1
-5 1 host node4
3 1 osd.3 up 0.5
  
  
设置osd的权重
  
[root@ceph-node1 ~]# ceph osd reweight 3 0.5
reweighted osd.3 to 0.5 (8327682)
[root@ceph-node1 ~]# ceph osd tree
# id weight type name up/down reweight
-1 4 root default
-2 1 host node1
0 1 osd.0 up 1
-3 1 host node2
1 1 osd.1 up 1
-4 1 host node3
2 1 osd.2 up 1
-5 1 host node4
3 1 osd.3 up 0.5
  
把一个osd节点逐出集群
  
[root@ceph-node1 ~]# ceph osd out osd.3
marked out osd.3.
[root@ceph-node1 ~]# ceph osd tree
# id weight type name up/down reweight
-1 4 root default
-2 1 host node1
0 1 osd.0 up 1
-3 1 host node2
1 1 osd.1 up 1
-4 1 host node3
2 1 osd.2 up 1
-5 1 host node4
3 1 osd.3 up 0
# osd.3的reweight变为0了就不再分配数据,但是设备还是存活的
  
把逐出的osd加入集群
  
[root@ceph-node1 ~]# ceph osd in osd.3
marked in osd.3.
[root@ceph-node1 ~]# ceph osd tree
# id weight type name up/down reweight
-1 4 root default
-2 1 host node1
0 1 osd.0 up 1
-3 1 host node2
1 1 osd.1 up 1
-4 1 host node3
2 1 osd.2 up 1
-5 1 host node4
3 1 osd.3 up 1
  
暂停osd (暂停后整个集群不再接收数据)
[root@ceph-node1 ~]# ceph osd pause
# set pauserd,pausewr
  
再次开启osd (开启后再次接收数据)
[root@ceph-node1 ~]# ceph osd unpause
# unset pauserd,pausewr
  
查看一个集群osd.2参数的配置
# ceph –admin-daemon /var/run/ceph/ceph-osd.2.asok config show | less
  
======================PG组相关操作命令=======================
查看pg组的映射信息
# ceph pg dump
  
查看一个PG的map
  
[root@client ~]# ceph pg map 0.3f
osdmap e88 pg 0.3f (0.3f) -> up [0,2] acting [0,2]
#其中的[0,2]代表存储在osd.0、osd.2节点,osd.0代表主副本的存储位置
  
查看PG状态
[root@client ~]# ceph pg stat
v1164: 448 pgs: 448 active+clean; 10003 MB data, 23617 MB used, 37792 MB / 61410 MB avail
  
查询一个pg的详细信息
[root@client ~]# ceph pg 0.26 query
  
查看pg中stuck的状态
[root@client ~]# ceph pg dump_stuck unclean
ok
[root@client ~]# ceph pg dump_stuck inactive
ok
[root@client ~]# ceph pg dump_stuck stale
ok
  
显示一个集群中的所有的pg统计
# ceph pg dump –format plain
  
恢复一个丢失的pg
# ceph pg {pg-id} mark_unfound_lost revert
  
显示非正常状态的pg
# ceph pg dump_stuck inactive|unclean|stale
  
======================pool相关操作命令========================
查看ceph集群中的pool数量
[root@ceph-node1 ~]# ceph osd lspools
0 data,1 metadata,2 rbd,
  
在ceph集群中创建一个pool
# ceph osd pool create kevin 100
这里的100指的是PG组,kevin是集群名称
  
为一个ceph pool配置配额
# ceph osd pool set-quota data max_objects 10000
  
在集群中删除一个pool(集群名字需要重复两次)
# ceph osd pool delete kevin kevin --yes-i-really-really-mean-it
  
  
显示集群中pool的详细信息
[root@ceph-node1 ~]# rados df
pool name category KB objects clones degraded unfound rd rd KB wr wr KB
data - 475764704 116155 0 0 0 0 0 116379 475764704
metadata - 5606 21 0 0 0 0 0 314 5833
rbd - 0 0 0 0 0 0 0 0 0
total used 955852448 116176
total avail 639497596
total space 1595350044
[root@ceph-node1 ~]#
  
给一个pool创建一个快照
[root@ceph-node1 ~]# ceph osd pool mksnap data date-snap
created pool data snap date-snap
  
删除pool的快照
[root@ceph-node1 ~]# ceph osd pool rmsnap data date-snap
removed pool data snap date-snap
  
查看data池的pg数量
[root@ceph-node1 ~]# ceph osd pool get data pg_num
pg_num: 64
  
设置data池的最大存储空间为100T(默认是1T)
[root@ceph-node1 ~]# ceph osd pool set data target_max_bytes 100000000000000
set pool 0 target_max_bytes to 100000000000000
  
设置data池的副本数是3
[root@ceph-node1 ~]# ceph osd pool set data size 3
set pool 0 size to 3
  
设置data池能接受写操作的最小副本为2
[root@ceph-node1 ~]# ceph osd pool set data min_size 2
set pool 0 min_size to 2
  
查看集群中所有pool的副本尺寸
[root@admin mycephfs]# ceph osd dump | grep 'replicated size'
pool 0 'data' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 26 owner 0 flags hashpspool crash_replay_interval 45 target_bytes 100000000000000 stripe_width 0
pool 1 'metadata' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 owner 0 flags hashpspool stripe_width 0
pool 2 'rbd' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 owner 0 flags hashpspool stripe_width 0
  
设置一个pool的pg数量
[root@ceph-node1 ~]# ceph osd pool set data pg_num 100
set pool 0 pg_num to 100
  
设置一个pool的pgp数量
[root@ceph-node1 ~]# ceph osd pool set data pgp_num 100
set pool 0 pgp_num to 100
  
=================================rados指令====================================
查看ceph集群中有多少个pool (只是查看pool)
[root@ceph-node1 ~]# rados lspools
rbd
cephfs_data
cephfs_metadata
  
查看ceph集群中有多少个pool,并且每个pool容量及利用情况
[root@ceph-node1 ~]# rados df
pool name                 KB      objects       clones     degraded      unfound           rd        rd KB           wr        wr KB
cephfs_data                0            0            0            0           0            0            0            0            0
cephfs_metadata           21           20            0            0           0            0            0           45           36
rbd                        0            0            0            0           0            0            0            0            0
  total used        15833064           20
  total avail       47044632
  total space       62877696
  
创建一个pool,名称为kevin
[root@ceph-node1 ~]# rados mkpool kevin
successfully created pool kevin
  
查看ceph pool中的ceph object (这里的object是以块形式存储的)
[root@ceph-node1 ~]# rados ls -p kevin|more
  
创建一个对象object(下面的kevin是pool名称)
[root@ceph-node1 ~]# rados create kevin-object -p kevin
[root@ceph-node1 ~]# rados -p kevin ls
kevin-object
  
删除一个对象
[root@ceph-node1 ~]# rados rm kevin-object -p kevin
[root@ceph-node1 ~]# rados -p kevin ls
  
=================================rbd命令的用法=====================================
查看ceph中一个pool里的所有镜像
# rbd ls kevin     //kevin是一个pool名
或者
# rbd list kevin
  
查看ceph pool中一个镜像的信息(kevin是pool名,zxy是镜像名)
[root@ceph ~]# rbd info -p kevin --image zxy
  
在kevin池中创建一个命名为wangshibo的10000M的镜像
[root@ceph-node1 ~]# rbd create -p kevin --size 10000 zxy
[root@ceph-node1 ~]# rbd -p kevin info zxy                 //查看新建的镜像的信息
rbd image 'zxy':
   size 10000 MB in 2500 objects
   order 22 (4096 kB objects)
   block_name_prefix: rb.0.1079.2ae8944a
   format: 1
  
删除一个镜像
[root@ceph-node1 ~]# rbd rm -p kevin zxy
Removing image: 100% complete...done.
  
调整一个镜像的尺寸(前提是zxy镜像已经创建并没有被删除)
[root@ceph-node1 ~]# rbd resize -p kevin --size 20000 zxy
Resizing image: 100% complete...done.
  
查看调整后的zxy镜像大小
[root@ceph-node1 ~]# rbd -p kevin info zxy
rbd image 'zxy':
   size 20000 MB in 5000 objects
   order 22 (4096 kB objects)
   block_name_prefix: rb.0.107d.2ae8944a
   format: 1
  
给一个镜像创建一个快照(如下,池/镜像@快照 )
[root@ceph-node1 ~]# rbd snap create kevin/zxy@test
  
查看快照
[root@ceph-node1 ~]# rbd info kevin/zxy@test
rbd image 'zxy':
   size 20000 MB in 5000 objects
   order 22 (4096 kB objects)
   block_name_prefix: rb.0.107d.2ae8944a
   format: 1
   protected: False
  
查看一个镜像文件的快照
[root@ceph-node1 ~]# rbd snap ls -p kevin zxy
SNAPID NAME             SIZE
     4 wangshibo123 20000 MB
  
删除一个镜像文件的一个快照
[root@ceph-node1 ~]# rbd snap rm kevin/zxy@test
[root@ceph-node1 ~]# rbd snap ls -p kevin zxy        //test快照已经被删除
  
如果发现不能删除显示的报错信息是此快照备写保护了,下面命令是删除写保护后再进行删除。
# rbd snap unprotect kevin/zxy@test
# rbd snap rm kevin/zxy@test
  
删除一个镜像文件的所有快照
[root@ceph-node1 ~]# rbd snap purge -p kevin zxy
Removing all snapshots: 100% complete...done.
  
把ceph pool中的一个镜像导出
[root@ceph-node1 ~]# rbd export -p kevin --image zxy
Exporting image: 100% complete...done.
  
把一个镜像导入ceph中 (但是直接导入是不能用的,因为没有经过openstack,openstack是看不到的)
[root@ceph-node1 ~]# rbd import /root/ceph_test.img -p kevin --image zxy
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值