大多数 Ceph 用户不会直接往 Ceph 存储集群里存储对象,他们通常会使用 Ceph 块设备、 Ceph 文件系统、或 Ceph 对象存储这三大功能中的一个或多个。

前提条件

先完成存储集群快速入门 ,并确保 Ceph 存储集群处于 active + clean 状态,这样才能使用 Ceph 块设备。

块设备快速入门

Ceph 块设备也叫 RBD 或 RADOS 块设备。

可以在虚拟机上运行 ceph-client 节点,但是不能在与 Ceph 存储集群(除非它们也用 VM )相同的物理节点上执行下列步骤。

这里采用新添加一台主机来操作,还需要进行预检工作,具体查看网址:https://www.cnblogs.com/sanduzxcvbnm/p/15080342.html

添加hosts解析,ntp时间同步,升级内核版本,普通用户免登录,关闭卸载firewalld,关闭selinux

主机名是:ceph-clinet,ip是:10.16.16.114

安装 Ceph

1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations),查看ceph-client主机

lsb_release -a
uname -r

2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

$ cd my_cluster
$ ceph-deploy install ceph-client

3.在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client (ceph-deploy主机上操作)

$ ceph-deploy admin ceph-client

ceph-deploy 工具会把密钥环复制到ceph-client主机的 /etc/ceph 目录,要确保此密钥环文件有读权限(如 sudo chmod +r /etc/ceph/ceph.client.admin.keyring )。

# 在ceph-client主机上操作

$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

配置块设备

1.在 ceph-client 节点上创建一个块设备 image (ceph-client主机上操作)

# 前提条件,已经创建名为rbd的pool,具体查看:https://www.cnblogs.com/sanduzxcvbnm/p/15625374.html
# 命令示例: rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] $ rbd create foo --size 4096 -m node1 -k /etc/ceph/ceph.client.admin.keyring

2.在 ceph-client 节点上,把 image 映射为块设备 (ceph-client主机上操作)

# 命令示例: sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

$ sudo rbd map foo --name client.admin -m node1 -k /etc/ceph/ceph.client.admin.keyring
/dev/rbd0

3.在 ceph-client 节点上,创建文件系统后就可以使用块设备了,此命令可能耗时较长 (ceph-client主机上操作)

# 命令示例: sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo

$ sudo mkfs.ext4 -m0 /dev/rbd0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=16 blocks, Stripe width=16 blocks
262144 inodes, 1048576 blocks
0 blocks (0.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

4.在 ceph-client 节点上挂载此文件系统 (ceph-client主机上操作)

$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd0 /mnt/ceph-block-device
$ cd /mnt/ceph-block-device $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 251:0 0 4G 0 disk /mnt/ceph-block-device

有个疑问,使用的pool,创建命令是:ceph osd pool create rbd 128 128

这里创建块设备后的大小是4G,有待进一步研究。

问题

此时查看ceph状态,会发现有提示:application not enabled on 1 pool(s)

$ ceph -s
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_WARN
application not enabled on 1 pool(s) services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

查看错误详情

$ ceph health detail
HEALTH_WARN application not enabled on 1 pool(s)
POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)
application not enabled on pool 'rbd'
use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.

通过查看错误详情,可知解决办法如下:

# 第一个rbd是pool-name,第二个rbd是app-name,其中app-name只能是'cephfs', 'rbd', 'rgw'中的一个
$ ceph osd pool application enable rbd rbd
enabled application 'rbd' on pool 'rbd' $ ceph -s
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_OK services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

Ceph 文件系统快速入门

准备工作

1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations) (ceph-client主机上操作)

lsb_release -a
uname -r

2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

$ cd my_cluster
$ ceph-deploy install ceph-client

3.确保 Ceph 存储集群在运行,且处于 active + clean 状态。同时,确保至少有一个 Ceph 元数据服务器在运行

# 命令示例:ceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]

# 因为元数据服务器mds在node1主机上  (ceph-client主机上操作)
$ ceph -s -m node1 -k /etc/ceph/ceph.client.admin.keyring
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_OK services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

创建文件系统

虽然已创建了元数据服务器,但如果你没有创建存储池和文件系统,它是不会变为活动状态的。(http://docs.ceph.org.cn/cephfs/createfs/)

# 命令示例:ceph osd pool create cephfs_data <pg_num>
# 命令示例:ceph osd pool create cephfs_metadata <pg_num>
# 命令示例:ceph fs new <fs_name> cephfs_metadata cephfs_data # 一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据 (ceph-client主机上操作) $ ceph osd pool create cephfs_data 32 32
pool 'cephfs_data' created $ ceph osd pool create cephfs_metadata 32 32
pool 'cephfs_metadata' created $ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 8 and data pool 9

文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:(ceph-client主机上操作)

$ ceph mds stat
cephfs-1/1/1 up {0=node1=up:active}

建好文件系统且 MDS 活跃后,你就可以挂载此文件系统了.

创建密钥文件

Ceph 存储集群默认启用认证,你应该有个包含密钥的配置文件(但不是密钥环本身)。用下述方法获取某一用户的密钥: (ceph-client主机上操作)

1.在密钥环文件中找到与某用户对应的密钥,例如:
$ cat /etc/ceph/ceph.client.admin.keyring 2.找到用于挂载 Ceph 文件系统的用户,复制其密钥。大概看起来如下所示:
[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 3.打开文本编辑器
4.把密钥粘帖进去,大概像这样:
AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 5.保存文件,并把其用户名 name 作为一个属性(如 admin.secret )。
$ echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >> admin.secret
6.确保此文件对用户有合适的权限,但对其他用户不可见。

内核驱动

把 Ceph FS 挂载为内核驱动。

# 命令示例:sudo mkdir /mnt/mycephfs
# 命令示例:sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs

Ceph 存储集群默认需要认证,所以挂载时需要指定用户名 name 和创建密钥文件一节中创建的密钥文件 secretfile ,例如:(ceph-client主机上操作)

# 命令示例:sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret

$ sudo mount -t ceph node1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
$ mount -l
10.16.16.111:6789:/ on /mnt/mycephfs type ceph (rw,relatime,name=admin,secret=<hidden>,acl)

从管理节点而非服务器节点挂载 Ceph FS 文件系统

用户空间文件系统( FUSE )

注:找不到ceph-fuse命令,这一步暂时不做

把 Ceph FS 挂载为用户空间文件系统( FUSE )

# 命令示例:sudo mkdir ~/mycephfs
# 命令示例:ceph-fuse -m node1:6789 ~/mycephfs # Ceph 存储集群默认要求认证,需指定相应的密钥环文件,除非它在默认位置(即 /etc/ceph ):
# 命令示例:sudo ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 ~/mycephfs

Ceph 对象存储快速入门

从 firefly(v0.80)起,Ceph 存储集群显著地简化了 Ceph 对象网关的安装和配置。网关守护进程内嵌了 Civetweb,无需额外安装 web 服务器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 来安装网关软件包、生成密钥、配置数据目录以及创建一个网关实例。

Civetweb 默认使用 7480 端口。要么直接打开 7480 端口,要么在你的 Ceph 配置文件中设置首选端口(例如 80 端口)。

安装 Ceph 对象网关

1.在 client-node 上执行预安装步骤。如果你打算使用 Civetweb 的默认端口 7480 ,必须通过 firewall-cmd 或 iptables 来打开它.

2.从管理节点的工作目录,在 client-node 上安装 Ceph 对象网关软件包。例如:

# 命令示例:ceph-deploy install --rgw <client-node> [<client-node> ...]
$ ceph-deploy install --rgw ceph-client

新建 Ceph 对象网关实例

从管理节点的工作目录,在 client-node 上新建一个 Ceph 对象网关实例。例如:

$ ceph-deploy rgw create ceph-client

一旦网关开始运行,你就可以通过 7480 端口来访问它(比如 http://ceph-client:7480 )。

配置 Ceph 对象网关实例

这一步相当于是修改访问的端口号,从默认的7480换成80

1.通过修改 Ceph 配置文件可以更改默认端口(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:

# 命令示例
[client.rgw.client-node]
rgw_frontends = "civetweb port=80" 实际情况
[client.rgw.ceph-client]
rgw_frontends = "civetweb port=80"

确保在 rgw_frontends 键值对的 port= 中没有空格。

如果你打算使用 80 端口,确保 Apache 服务器没有在使用该端口,否则会和 Civetweb 冲突。出现这种情况时我们建议移除 Apache 服务。

$ ceph-deploy --overwrite-conf config push node1 node2 node3

2.为了使新端口的设置生效,需要重启 Ceph 对象网关。在 RHEL 7 和 Fedora 上 ,执行:

# 示例命令:sudo systemctl restart ceph-radosgw.service

$ sudo systemctl restart ceph-radosgw.service

3.最后,检查节点的防火墙,确保你所选用的端口(例如 80 端口)处于开放状态。如果没有,把该端口加入放行规则并重载防火墙的配置。例如:

sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port
80/tcp --permanent
sudo firewall-cmd --reload

你应该可以生成一个未授权的请求,并收到应答。例如,一个如下不带参数的请求:

http://<client-node>:80

应该收到这样的应答:

<ListAllMyBucketsResult>
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

安装ceph (快速) 步骤三: Ceph 客户端的更多相关文章

  1. 安装ceph (快速) 步骤二:存储集群

    用 ceph-deploy 从管理节点建立一个 Ceph 存储集群,该集群包含三个节点,以此探索 Ceph 的功能. 创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程. ...

  2. 安装ceph (快速) 步骤一:预检

    官网地址:http://docs.ceph.org.cn/start/ 预检 安装一个 ceph-deploy 管理节点和一个三节点的Ceph 存储集群来研究 Ceph 的基本特性.这篇预检会帮你准备 ...

  3. Ubuntu CEPH快速安装

    一.CEPH简介 不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Cep ...

  4. SUSE Ceph 快速部署 - Storage6

    学习 SUSE Storage 系列文章 (1)SUSE Storage6 实验环境搭建详细步骤 - Win10 + VMware WorkStation (2)SUSE Linux Enterpri ...

  5. 2021最新WordPress安装教程(三):安装WordPress详细步骤

    前面已经通过< 2021最新WordPress安装教程(一):Centos7安装Apache>和< 2021最新WordPress安装教程(二):配置PHP和MySQL>两篇文 ...

  6. 分布式文件系统ceph快速部署

    架构图 配置ceph-deploy节点 管理节点配置ceph yum源 vim /etc/yum.repos.d/ceph.repo [ceph-noarch] name=Ceph noarch pa ...

  7. 理解 OpenStack + Ceph (7): Ceph 的基本操作和常见故障排除方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  8. Ceph浅析”系列之四——Ceph的结构

    本文将从逻辑结构的角度对Ceph进行分析. Ceph系统的层次结构 Ceph存储系统的逻辑层次结构如下图所示[1]. Ceph系统逻辑层次结构 自下向上,可以将Ceph系统分为四个层次: (1)基础存 ...

  9. Exchange Server 2013 一步步安装图解[完全步骤截图]

    前言: 这是一份为Exchange菜鸟准备的2013版本安装文档,安装环境为Windows Server 2012 DataCenter 版本,在安装之前,我对安装Exchange也是处于一无所知的状 ...

随机推荐

  1. SimpleDateFormat类介绍和 DateFormat类的format方法和parse方法

    使用 SimpleDateFormat格式化日期 SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat 允许你选择任何用户自定义日期时间 ...

  2. Math类和函数定义

    Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值   pow--算幂次   random--随机数   round--四舍 ...

  3. 服务器宕机了,Kafka 消息会丢失吗?

    大家好,我是树哥. 消息队列可谓是高并发下的必备中间件了,而 Kafka 作为其中的佼佼者,经常被我们使用到各种各样的场景下.随着 Kafka 而来得,还有三个问题:消息丢失.消息重复.消息顺序.今天 ...

  4. SpringMVC底层——请求参数处理流程描述

    在DispatcherServlet.java的doDispatch方法中,springmvc通过handlermapping里面找哪个handler能处理请求,handler封装了目标方法的信息, ...

  5. 2022-7-25 第七组 pan小堂 多态

    多态 多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描 ...

  6. RSA算法概述

    RSA算法的概述(个人理解,欢迎纠正) RSA是一种基于公钥密码体制的优秀加密算法,1978年由美国(MIT)的李维斯特(Rivest).沙米尔(Shamir).艾德曼(Adleman)提的.RSA算 ...

  7. Vue中computed用法

    computed是什么?对于任何复杂逻辑,你都应当使用计算属性.computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义.然后就可以在页面上进行双向数据绑定展 ...

  8. 新型MPP的Doris数据库:数据模型和数据分区使用详解

    Apache Doris是一个现代化的MPP分析性数据库产品.是一个由百度开源,在2018年贡献给Apache基金会,成为有顶级开源项目.仅需要亚秒级响应时间即可获得查询结果,可以有效地支持实时数据分 ...

  9. .NET CORE 读书笔记之与.NET Framework对比

    .NET Framework存在的问题 它是属于系统级别安装的程序 操作系统内的所有程序共享一个.NET Framework实例,如果其中某一个应用程序需要升级Framework,其他程序也会收到影响 ...

  10. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

    2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...