Ceph分布式存储(2)

时间:2024-01-23 08:17:47

目录

一.资源池 Pool 管理.

查看集群 Pool 信息:

创建一个 Pool 资源池:

ceph osd pool create mypool 64 64

查看资源池副本的数量:

查看 PG 和 PGP 数量:

修改 pg_num 和 pgp_num 的数量为 128:

修改 Pool 副本数量为 2:

修改默认副本数为 2:

再次创建池看下数量:

查看所有池名:

删除 Pool 资源池:

二.创建 CephFS 文件系统 MDS 接口

创建存储池,启用 ceph 文件系统:

创建用户:

客户端操作:

在客户端安装 ceph 软件包:

客户端挂载:

基于内核语法格式:

基于 fuse 工具:

三.创建 Ceph 块存储系统 RBD 接口

创建一个名为 rbd-demo 的专门用于 RBD 的存储池:

将存储池转换为 RBD 模式:

初始化存储池:

创建镜像:

修改镜像大小:

删除镜像:

还原镜像:

Linux客户端使用:

管理节点创建并授权一个用户可访问指定的 RBD 存储池:

执行客户端映射:

查看映射:

断开映射:

格式化并挂载:

在线扩容:

在管理节点调整镜像的大小:

在客户端刷新设备文件:

快照管理:

在管理节点对镜像创建快照:

列出指定镜像所有快照:

回滚镜像到指定:

在管理节点操作:

删除快照:

删除指定快照:

删除所有快照:

四.创建 Ceph 对象存储系统 RGW 接口

创建 RGW 接口:

生成CA证书私钥:

生成CA证书公钥::


一.资源池 Pool 管理.

查看集群 Pool 信息:

ceph osd pool ls    ,    rados lspools

创建一个 Pool 资源池:
ceph osd pool create mypool 64 64

查看资源池副本的数量:

ceph osd pool get mypool size

查看 PG 和 PGP 数量:

ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num

修改 pg_num 和 pgp_num 的数量为 128:

ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128

修改 Pool 副本数量为 2:

ceph osd pool set mypool size 2

ceph osd pool get mypool size

修改默认副本数为 2:

修改配置文件:

osd_pool_default_size = 2

ceph-deploy --overwrite-conf config push node01 node02 node03

查看下其他节点的配置文件是否也有此配置项:

所有节点重启下ceph-mon服务:

再次创建池看下数量:

查看所有池名:

ceph osd lspools

删除 Pool 资源池:

删除存储池命令存在数据丢失的风险,Ceph 默认禁止此类操作,需要管理员先在 ceph.conf 配置文件中开启支持删除存储池的操作:

ceph osd pool rm 池名   池名   --yes-i-really-really-mean-it

.修改配置文件:

推送 ceph.conf 配置文件给所有 mon 节点:

ceph-deploy --overwrite-conf config push node01 node02 node03

看下从节点:

所有节点重启ceph-mon服务:

再次删除:

其他从节点上查看下池:

二.创建 CephFS 文件系统 MDS 接口

ceph-deploy mds create node01 node02 node03

创建存储池,启用 ceph 文件系统:

ceph 文件系统至少需要两个 rados 池,一个用于存储数据,一个用于存储元数据。此时数据池就类似于文件系统的共享目录

创建数据Pool:

ceph osd pool create cephfs_data 128

创建元数据Pool:

ceph osd pool create cephfs_metadata 128

启用ceph,元数据Pool在前,数据Pool在后:

创建 cephfs,命令格式:ceph fs new <FS_NAME> <CEPHFS_METADATA_NAME> <CEPHFS_DATA_NAME>

ceph fs new mycephfs cephfs_metadata cephfs_data

查看cephfs:

查看mds状态,一个up,其余两个待命,目前的工作的是node01上的mds服务:

创建用户:

语法格式:ceph fs authorize  <fs_name>  client.<client_id>  <path-in-cephfs>  rw

账户为 client.cxk,用户 name 为 cxk,cxk 对ceph文件系统的 / 根目录(注意不是操作系统的根目录)有读写权限:

ceph fs authorize mycephfs client.cxk / rw | tee /etc/ceph/cxk.keyring

账户为 client.lisi,用户 name 为 lisi,lisi 对文件系统的 / 根目录只有读权限,对文件系统的根目录的子目录 /test 有读写权限:

ceph fs authorize mycephfs client.lisi / r /test rw | tee /etc/ceph/lisi.keyring

查看下文件:

客户端操作:

客户端要在 public 网络内,在ceph 的管理节点给客户端拷贝 ceph 的配置文件 ceph.conf 和账号的秘钥环文件:

在客户端安装 ceph 软件包:

如果没有ceph的repo文件可以下载:

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate
rpm -ivh ceph-release-1-1.el7.noarch.rpm

在客户端制作秘钥文件:

把 cxk用户的秘钥导出到 cxk.key,把 lisi用户的秘钥导出到 lisi.key:

ceph-authtool -n client.cxk -p cxk.keyring > cxk.key

ceph-authtool -n client.lisi -p lisi.keyring > lisi.key

查看下密钥文件:

客户端挂载:

先创建目录:

基于内核语法格式:

mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secret=<秘钥>

mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secretfile=<秘钥文件>

挂载:

mount -t ceph node01:6789,node02:6789,node03:6789:/ /data/cxk -o name=cxk,secretfile=/etc/ceph/cxk.key

基于 fuse 工具:

在 ceph 的管理节点给客户端拷贝 ceph 的配置文件 ceph.conf 和管理员账号的秘钥环文件:

在客户端安装 ceph-fuse:

客户端挂载:

ceph-fuse -m node01:6789,node02:6789,node03:6789 /data/aa [-o nonempty]            

挂载时,如果挂载点不为空会挂载失败,指定 -o nonempty 可以忽略

ceph-fuse -m node01:6789,node02:6789,node03:6789 /data/aa

三.创建 Ceph 块存储系统 RBD 接口

创建一个名为 rbd-demo 的专门用于 RBD 的存储池:

ceph osd pool create rbd-demo 64

将存储池转换为 RBD 模式:

ceph osd pool application enable rbd-demo rbd

初始化存储池:

rbd pool init -p rbd-demo

-p 等同于 --pool

创建镜像:

rbd create -p rbd-demo --image rbd-demo1.img --size 10G
可简写为:
rbd create rbd-demo/rbd-demo2.img --size 10G

查看存储池下存在哪些镜像:

rbd ls -l -p rbd-demo

查看镜像的详细信息:

rbd info -p rbd-demo --image rbd-demo1.img

rbd image 'rbd-demo.img':
    size 10 GiB in 2560 objects            #镜像的大小与被分割成的条带数
    order 22 (4 MiB objects)                 #条带的编号,有效范围是12到25,对应4K到32M,而22代表2的22次方,这样刚好是4M
    snapshot_count: 0
    id: 5fc98fe1f304                             #镜像的ID标识
    block_name_prefix: rbd_data.5fc98fe1f304          #名称前缀
    format: 2                                        #使用的镜像格式,默认为2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten        #当前镜像的功能特性
    op_features:                                   #可选的功能特性
    flags: 

修改镜像大小:

rbd resize -p rbd-demo --image rbd-demo1.img --size 20G

使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink:

rbd resize -p rbd-demo --image rbd-demo1.img --size 5G --allow-shrink

删除镜像:

直接删除镜像:

rbd rm -p rbd-demo --image rbd-demo1.img

rbd remove rbd-demo/rbd-demo1.img

推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复:

rbd trash move rbd-demo/rbd-demo1.img

还原镜像:

rbd trash restore rbd-demo/1e5fc614fa74b

Linux客户端使用:
管理节点创建并授权一个用户可访问指定的 RBD 存储池:

ceph auth get-or-create client.osd-mount osd "allow * pool=rbd-demo" mon "allow r" > /etc/ceph/ceph.client.osd-mount.keyring

修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭:

rbd feature disable rbd-demo/rbd-demo1.img object-map,fast-diff,deep-flatten

将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下:

scp ceph.client.osd-mount.keyring ceph.conf root@client:/etc/ceph

查看下:

执行客户端映射:

rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount

查看映射:

rbd showmapped
rbd device list

断开映射:

rbd unmap rbd-demo/rbd-demo1.img

格式化并挂载:

先做映射,在格式化

mkfs.xfs /dev/rbd0

挂载:

在线扩容:
在管理节点调整镜像的大小:

rbd resize rbd-demo/rbd-demo1.img --size 30G

在客户端刷新设备文件:

快照管理:

在客户端写入文件:

echo 1111 > /data/bb/11.txt
echo 2222 > /data/bb/22.txt
echo 3333 > /data/bb/33.txt

在管理节点对镜像创建快照:

rbd snap create --pool rbd-demo --image rbd-demo1.img --snap demo1_snap1

可简写为:

rbd snap create rbd-demo/rbd-demo1.img@demo1_snap1

列出指定镜像所有快照:

rbd snap list rbd-demo/rbd-demo1.img

用json格式输出:

rbd snap list rbd-demo/rbd-demo1.img --format json --pretty-format

回滚镜像到指定:

在回滚快照之前,需要将镜像取消镜像的映射,然后再回滚。

在客户端操作:

rm -rf /data/bb/*

umount /data/bb

rbd unmap rbd-demo/rbd-demo1.img

在管理节点操作:

rbd snap rollback rbd-demo/rbd-demo1.img@demo1_snap1

在客户端重新映射并挂载:

rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount

mount /dev/rbd0 /data/bb

查看下目录下的文件:

删除快照:
删除指定快照:

先创建快照,再删除:

rbd snap create rbd-demo/rbd-demo1.img@demo2_snap1

查看下快照:

删除所有快照:

rbd snap purge rbd-demo/rbd-demo1.img

四.创建 Ceph 对象存储系统 RGW 接口

创建 RGW 接口:

在管理节点创建一个 RGW 守护进程

ceph-deploy rgw create node01

创建成功后默认情况下会自动创建一系列用于 RGW 的存储池:

默认情况下 RGW 监听 7480 号端口:

生成CA证书私钥:

openssl genrsa -out civetweb.key 2048

生成CA证书公钥::

openssl req -new -x509 -key civetweb.key -out civetweb.crt -days 3650

将生成的证书合并为pem: